philippe | 3a53220 | 2013-02-24 23:16:58 +0000 | [diff] [blame] | 1 | /* Based on reproducer done by Dejan Jevtic */ |
| 2 | int main (void) |
| 3 | { |
| 4 | #if defined(VGA_amd64) |
| 5 | /* Note that small changes in the code below |
| 6 | caused the bug not to be triggered anymore. |
| 7 | E.g. removing the dec %%eax avoids the assert |
| 8 | while this removal causes one more loop to be |
| 9 | executed. */ |
| 10 | __asm__ __volatile__ |
| 11 | ("mov $30, %%eax\n\t" |
| 12 | "top:\n\t" |
| 13 | "mov $-4, %%ebx\n\t" |
| 14 | "add %%ebx, %%eax\n\t" |
| 15 | "dec %%eax\n\t" |
| 16 | "cmp $0x0,%%eax\n\t" |
| 17 | "jne top\n\t" |
| 18 | "mov $60, %%eax\n\t" |
| 19 | "mov $0, %%rdi\n\t" |
| 20 | "syscall\n\t" |
| 21 | : : : "eax", "ebx", "rdi" |
| 22 | ); |
| 23 | #elif defined(VGA_mips32) || defined(VGA_mips64) |
| 24 | __asm__ __volatile__ |
| 25 | ("li $t0, 42\n\t" |
| 26 | "top:\n\t" |
| 27 | "li $t1, -4\n\t" |
| 28 | "addu $t0, $t0, $t1\n\t" |
| 29 | "li $t2, -2\n\t" |
| 30 | "addu $t0, $t0, $t2\n\t" |
| 31 | "addiu $t0, $t0, -1\n\t" |
| 32 | "bnez $t0, top\n\t" |
| 33 | "nop\n\t" |
| 34 | : : : "t0", "t1" |
| 35 | ); |
| 36 | #endif |
| 37 | return 0; |
| 38 | } |