ron minnich wrote:
here's an interesting bug in /home/rminnich/src/bios/coreboot-v3/util/x86emu/vm86.c /* Dump zeros in the other segment registers */ " mov %ax, %es \n" " mov %ax, %fs \n" " mov %ax, %gs \n" " mov $0x40, %ax \n"<----------------------WHAT? " mov %ax, %ds \n" " mov %cx, %ax \n"
Why did somebody move 0x40 to the ds? That's not even a valid gdt selector?
Anybody know why this was done?
That is probably normal. These are real mode selectors (segment registers), and that code is calling a VGA ROM. 0x40:xx is the BDA. I think that is one of the expectations of a VGA ROM is that it is called with the BDA pointed to be ds. cx has the device/function of the card being called.
Your generic case won't want that stuff (and it doesn't have it now)