| 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 */ |
| ); |
| }; |
| } |