Myles Watson wrote:

-----Original Message-----
From: Marc Jones [mailto:[EMAIL PROTECTED]
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.
http://www.ctyme.com/intr/int.htm

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 :
                "biosprotect:              \n"
                "  .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 the register.


Marc

--
Marc Jones
Senior Firmware Engineer
(970) 226-9684 Office
mailto:[EMAIL PROTECTED]
http://www.amd.com/embeddedprocessors


--
coreboot mailing list: [email protected]
http://www.coreboot.org/mailman/listinfo/coreboot

Reply via email to