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