36 lines
611 B
C
36 lines
611 B
C
|
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 */
|
||
|
);
|
||
|
};
|
||
|
}
|