Sync all bug fixes between EDK1.04 and EDK1.06 into EdkCompatibilityPkg.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11094 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
lgao4
2010-11-26 01:54:49 +00:00
parent 68bb5ce77e
commit 3e99020dbf
183 changed files with 15250 additions and 2636 deletions

View File

@@ -1,6 +1,6 @@
#*****************************************************************************
#*
#* Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
#* Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
#* This program and the accompanying materials
#* are licensed and made available under the terms and conditions of the BSD License
#* which accompanies this distribution. The full text of the license may be found at
@@ -51,4 +51,26 @@ ASM_PFX(AsmFxRestore):
ret
#AsmFxRestore ENDP
#------------------------------------------------------------------------------
# UINTN
# AsmGetEflags (
# VOID
# );
#------------------------------------------------------------------------------
ASM_PFX(AsmGetEflags):
pushfl
pop %eax
ret
#AsmGetEflags ENDP
#------------------------------------------------------------------------------
# VOID
# AsmSetEflags (
# IN UINTN Eflags
# );
#------------------------------------------------------------------------------
ASM_PFX(AsmSetEflags):
push 4(%esp)
popfl
ret
#AsmSetEflags ENDP

View File

@@ -1,6 +1,6 @@
;*****************************************************************************
;*
;* Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
;* Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
;* This program and the accompanying materials
;* are licensed and made available under the terms and conditions of the BSD License
;* which accompanies this distribution. The full text of the license may be found at
@@ -48,4 +48,28 @@ AsmFxRestore PROC
ret
AsmFxRestore ENDP
;------------------------------------------------------------------------------
; UINTN
; AsmGetEflags (
; VOID
; );
;------------------------------------------------------------------------------
AsmGetEflags PROC
pushfd
pop eax
ret
AsmGetEflags ENDP
;------------------------------------------------------------------------------
; VOID
; AsmSetEflags (
; IN UINTN Eflags
; );
;------------------------------------------------------------------------------
AsmSetEflags PROC
push [esp + 4]
popfd
ret
AsmSetEflags ENDP
END

View File

@@ -1,6 +1,6 @@
#*****************************************************************************
#*
#* Copyright (c) 2006 - 2009, Intel Corporation. All rights reserved.<BR>
#* Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
#* This program and the accompanying materials
#* are licensed and made available under the terms and conditions of the BSD License
#* which accompanies this distribution. The full text of the license may be found at
@@ -72,6 +72,9 @@ ASM_PFX(Thunk16):
push $0xd
pop %ecx
rep movsl %ds:(%esi),%es:(%edi) #; copy context to 16-bit stack
#; copy eflags to stack frame
mov -12(%esi), %eax
mov %eax, -72(%edi)
pop %ebx #; ebx <- 16-bit stack offset
mov $L_Lable1,%eax
stos %eax,%es:(%edi)
@@ -140,20 +143,23 @@ ASM_PFX(RealMode):
popw %es
popw %fs
popw %gs
addw $4, %sp # skip EFlags
testw $1, 14(%esp) #(_STK16 ptr [esp + 8]).ThunkFlags, 1
sub 60, %esp
popfw
testw $1, 74(%esp) #(_STK16 ptr [esp + STACK_PARAM_SIZE + sizeof(IA32_REGS)]).ThunkFlags, 1
jz 1f
pushf
pushf # push Flags when it's INT#
1:
pushw %cs
# push @FarCallRet - _Code16Addr
.byte 0x68 # push /iw
.word FarCallRet - _Code16Addr
jz 2f
ljmp *6(%esp) #bugbug
ljmp *66(%esp) #[esp + 6 + STACK_PARAM_SIZE + sizeof(IA32_REGS) - 8]
2:
ljmp *4(%esp) #bugbug
ljmp *64(%esp) #[esp + 4 + STACK_PARAM_SIZE + sizeof(IA32_REGS) - 8]
FarCallRet:
add 60, %esp
pushfl
pushw %gs
pushw %fs

View File

@@ -1,6 +1,6 @@
;*****************************************************************************
;*
;* Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.<BR>
;* Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.<BR>
;* This program and the accompanying materials
;* are licensed and made available under the terms and conditions of the BSD License
;* which accompanies this distribution. The full text of the license may be found at
@@ -55,6 +55,8 @@ _DATA ENDS
_TEXT SEGMENT FLAT "CODE" PARA
STACK_PARAM_SIZE EQU 16
IA32_REGS STRUC 4t
_EDI DD ?
_ESI DD ?
@@ -99,6 +101,11 @@ __Thunk16 PROC USES ebp ebx esi edi ds es fs gs
push sizeof (IA32_REGS) / 4
pop ecx
rep movsd ; copy context to 16-bit stack
; copy eflags to stack frame
mov eax, [esi - sizeof(IA32_REGS)]._EFLAGS
mov [edi - sizeof(IA32_REGS) - STACK_PARAM_SIZE - 4], eax
pop ebx ; ebx <- 16-bit stack offset
mov eax, offset @F ; return offset
stosd
@@ -158,20 +165,22 @@ RealMode PROC
pop es
pop fs
pop gs
add sp, 4 ; skip EFlags
test (_STK16 ptr [esp + 8]).ThunkFlags, 1
sub esp, (sizeof(IA32_REGS) - 12) + STACK_PARAM_SIZE + 4
popfd
test (_STK16 ptr [esp + STACK_PARAM_SIZE + sizeof(IA32_REGS)]).ThunkFlags, 1
jz @F
pushf
pushf ; push Flags when it's INT#
@@:
push cs
; push @FarCallRet - _Code16Addr
DB 68h ; push /iw
DW @FarCallRet - _Code16Addr
jz @F
jmp fword ptr [esp + 6]
jmp fword ptr [esp + 6 + STACK_PARAM_SIZE + sizeof(IA32_REGS) - 8]
@@:
jmp fword ptr [esp + 4]
jmp fword ptr [esp + 4 + STACK_PARAM_SIZE + sizeof(IA32_REGS) - 8]
@FarCallRet:
add esp, (sizeof(IA32_REGS) - 12) + STACK_PARAM_SIZE + 4
pushfd
push gs
push fs