static void test_hv(void) { uint64_t i, j, fn; int ret; for (j = 8; j <= 63; j++) { printk(KERN_INFO "hhv: Testing from (j=%lu) 0x%lx to 0x%lx\n", j, 1UL << j, (1UL << j) | 0xffff); for (i = 0; i < 0xffff; i++) { fn = (1UL << j) | i; __asm__ volatile("li %%r3, 0;\n" \ "li %%r4, 0;\n" \ "li %%r5, 0;\n" \ "li %%r6, 0;\n" \ "li %%r7, 0;\n" \ "li %%r8, 0;\n" \ "li %%r9, 0;\n" \ "li %%r10, 0;\n" \ "mr %%r11, %1;\n" \ "sc 1;\n" \ "extsw %%r3, %%r3;\n" \ "mr %0,%%r3;\n" "nop;\n" : "=r" (ret) : "r" (fn) : "r3", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11"); if (ret != -20) printk(KERN_INFO "hhv: Func %lu exists (%d)\n", fn, ret); } } printk(KERN_INFO "hhv: END\n"); }