diff options
Diffstat (limited to 'util/romcc/tests/simple_test32.c')
-rw-r--r-- | util/romcc/tests/simple_test32.c | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/util/romcc/tests/simple_test32.c b/util/romcc/tests/simple_test32.c new file mode 100644 index 0000000000..bd6947a2ba --- /dev/null +++ b/util/romcc/tests/simple_test32.c @@ -0,0 +1,35 @@ +void main(void) +{ + unsigned long addr, start, stop; + start = 0x00100000; + stop = 0x00180000; + + + for(addr = start; addr < stop ;) { + unsigned char ch; + const char *str = "\r"; + while((ch = *str++) != '\0') { + while(__builtin_inb(0x3f)) + ; + __builtin_outb(ch, 0x3f8); + + while(__builtin_inb(0x3f)) + ; + } + asm ( + "jmp 2f\n\t" + "1:\n\t" + "testl $0xffff, %0\n\t" + "jz 3f\n\t" + "movnti %0, (%0)\n\t" + "add $4, %0\n\t" + "2:\n\t" + "cmp %2, %0\n\t" + "jl 1b\n\t" + "3:\n\t" + : "=b" (addr) /* outputs */ + : "0" (addr), "r" (stop) /* intputs */ + : /* clobbers */ + ); + }; +} |