Spaces:
Runtime error
Runtime error
| static void test_cmpxchg8b(u32 *mem) | |
| { | |
| mem[1] = 2; | |
| mem[0] = 1; | |
| asm("push %%ebx\n" | |
| "mov %[ebx_val], %%ebx\n" | |
| "lock cmpxchg8b (%0)\n" | |
| "pop %%ebx" : : "D" (mem), | |
| "d" (2), "a" (1), "c" (4), [ebx_val] "i" (3) : "memory"); | |
| report("cmpxchg8b", mem[0] == 3 && mem[1] == 4); | |
| } | |
| int main() | |
| { | |
| setup_vm(); | |
| setup_idt(); | |
| test_cmpxchg8b(phys_to_virt(read_cr3()) + 4088); | |
| return report_summary(); | |
| } | |