[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] [xen-unstable] rombios: fix pointer argument to PMM
# HG changeset patch # User Keir Fraser <keir.fraser@xxxxxxxxxx> # Date 1232968923 0 # Node ID c9dc7dcacc1d0c064a131da98a4063fa2cedd716 # Parent f2ad1a7ca58231f098296b9c038ec90ee55b7b7a rombios: fix pointer argument to PMM The pointer to PMM function arguments must be flattened for protected mode with zero-based segments. Signed-off-by: Kouya Shimura <kouya@xxxxxxxxxxxxxx> --- tools/firmware/rombios/rombios.c | 32 ++++++++++++++++++++++++-------- 1 files changed, 24 insertions(+), 8 deletions(-) diff -r f2ad1a7ca582 -r c9dc7dcacc1d tools/firmware/rombios/rombios.c --- a/tools/firmware/rombios/rombios.c Mon Jan 26 11:16:52 2009 +0000 +++ b/tools/firmware/rombios/rombios.c Mon Jan 26 11:22:03 2009 +0000 @@ -10366,19 +10366,35 @@ pmm_structure: db 0,0,0,0,0 ;; reserved pmm_entry_point: + pushf pushad - mov eax, esp - add eax, #(8*4+2+2) ;; skip regs of pushad, ip, cs - push eax ;; pointer to PMM function args +; Calculate protected-mode address of PMM function args + xor eax, eax + mov ax, sp + xor ebx, ebx + mov bx, ss + shl ebx, 4 + lea ebx, [eax+ebx+38] ;; ebx=(ss<<4)+sp+4(far call)+2(pushf)+32(pushad) + push ebx +; +; Stack layout at this point: +; +; : +0x0 +0x2 +0x4 +0x6 +0x8 +0xa +0xc +0xe +; ----------------------------------------------------------------------- +; sp : [&arg1 ][edi ][esi ][ebp ] +; sp+0x10: [esp ][ebx ][edx ][ecx ] +; sp+0x20: [eax ][flags ][ip ][cs ][arg1 ][arg2, ... +; call _pmm - mov bx, sp + mov bx, sp SEG SS - mov [bx+(4+7*4)], ax + mov [bx+0x20], ax SEG SS - mov [bx+(4+5*4)], dx - pop eax + mov [bx+0x18], dx + pop ebx popad - db 0xcb ;; lret + popf + retf #endif // BX_PMM ; parallel port detection: base address in DX, index in BX, timeout in CL _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |