[coreboot] mode 117

ron minnich rminnich at gmail.com
Fri Oct 3 03:06:51 CEST 2008


it's not pretty but this is working to get into mode 117 on the
(private) tree I am using.

It's in the emulator. The 'entering emulator' is what you would see;
the first X86EMU_exec is when we run the vga bios.
 src/devices/emulator/biosemu.c

The way it works is that I put an INT 10 at f0000, followed by a HLT.
It's ok to scribble there because that is the 55aa signature for the
expansion bios -- it's not needed any more, the BIOS is installed.

This appears to work. Tomorrow I'll try scribbling on the frame buffer
and see how it goes.

As Jordan has pointed out,coreboot starts up so fast that I'm going to
need to put a delay in to let the splash screen be visible. But this
is important enough that it is worth doing.

Now I need a modern opteron laptop :-)

thanks
ron
	printk_info("entering emulator\n");

	X86EMU_exec();

	printk_err("Done; now try to set the mode to x117\n");
	X86_AX = 0x4f02;
	X86_BX = 0x117;
	X86_CX = 1;
	X86_DX = 0x0;
	X86_DI = 0;
	X86_EIP = 0x0000;
	X86_CS = initialcs;

	/* Initialize stack and data segment */
	X86_SS = initialcs;
	X86_SP = 0xfffe;
	X86_DS = 0x0040;
	X86_ES = 0x0000;

	/* We need a sane way to return from bios
	 * execution. A hlt instruction and a pointer
	 * to it, both kept on the stack, will do.
	 */
	pushw(0xf4f4);		/* hlt; hlt */
	pushw(X86_SS);
	pushw(X86_SP + 2);
#if 0
   1              	.code16
   2 0000 CD10     		int $0x10
   3 0002 F4       		hlt
   4 0003 F4       		hlt
#endif
	MEM_WB(initialcs<<4+0, 0xCD);
	MEM_WB(initialcs<<4+1, 0x10);
	MEM_WB(initialcs<<4+2, 0xF4);
	MEM_WB(initialcs<<4+3, 0xF4);
//	MEM_WB(initialcs<<4+0, 0xF4);
//	X86EMU_trace_on();

	printk_err("entering emulator\n");

	X86EMU_exec();
	printk_err("Mode should now be set\n");
#endif
}




More information about the coreboot mailing list