[coreboot] SimNOW VGA int 1a
Marc.Jones at amd.com
Wed Oct 15 23:13:21 CEST 2008
Myles Watson wrote:
>> -----Original Message-----
>> From: Marc Jones [mailto:Marc.Jones at amd.com]
>> Sent: Wednesday, October 15, 2008 2:45 PM
>> To: Myles Watson
>> Cc: Tom Sylla; ron minnich; Coreboot
>> Subject: Re: [coreboot] SimNOW VGA int 1a
>> Myles Watson wrote:
>>> Here's the next part of the log now that I've enabled setup_realmode_idt
>>> (I'm running it right before real_mode_switch_call_vga.
>>> Copying VGA ROM image from 0xfe040000 to 0xc0000, 0x8000 bytes
>>> BREAK HERE run_bios = 0x0000944a
>>> biosint: INT# 0x18
>>> biosint: eax 0x2e ebx 0x10000 ecx 0xfe4 edx 0xcf11c
>>> biosint: ebp 0xc0000000 esp 0xd0000 edi 0x1a esi 0x0
>>> biosint: ip 0x1022 cs 0xf flags 0x2067
>>> BIOSINT: Unsupport int #0x18
>> That isn't the same emulator that most of v2 uses. setup_realmode_idt is
>> certainly required. 0x18 is a strange INT to see.
>> Can you get back to the calling code and see what it was doing?
> The VGA BIOS calls 1a, but it looks like too many things get pushed onto the
> stack, and it thinks it's 18 instead. I'm not an assembly programmer, but
> it looks like the problem is in callbiosint or handler. It looks like the
> registers are being pushed onto the stack too many times?
Ewwww! This looks like a compiler function calling problem.
I think that the 0x18 comes from here :
" .code32 \n"
" movw $0x18, %ax\n"
" mov %ax, %ds\n"
" mov %ax, %es\n"
" mov %ax, %fs\n"
" mov %ax, %gs\n"
" mov %ax, %ss\n"
" lidt idtarg \n"
" call biosint \n"
Which means that biosint isn't using variables from the stack but from
Senior Firmware Engineer
(970) 226-9684 Office
mailto:Marc.Jones at amd.com
More information about the coreboot