1. Updated function headers in all assembly files.

2. Split x86LowLevel.c into a bunch of C files to make images linked with BaseLib smaller.
3. Fixed a few minor bugs.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@1066 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
bxing
2006-07-21 08:47:38 +00:00
parent 31a9215c32
commit 3f566587ae
252 changed files with 1840 additions and 2009 deletions

View File

@@ -23,6 +23,17 @@
.code
;------------------------------------------------------------------------------
; VOID
; EFIAPI
; InternalX86DisablePaging64 (
; IN UINT16 Cs,
; IN UINT32 EntryPoint,
; IN UINT32 Context1, OPTIONAL
; IN UINT32 Context2, OPTIONAL
; IN UINT32 NewStack
; );
;------------------------------------------------------------------------------
InternalX86DisablePaging64 PROC
cli
shl rcx, 32

View File

@@ -23,6 +23,13 @@
.code
;------------------------------------------------------------------------------
; VOID
; EFIAPI
; InternalX86FxRestore (
; IN CONST IA32_FX_BUFFER *Buffer
; );
;------------------------------------------------------------------------------
InternalX86FxRestore PROC
fxrstor [rcx]
ret

View File

@@ -23,6 +23,13 @@
.code
;------------------------------------------------------------------------------
; VOID
; EFIAPI
; InternalX86FxSave (
; OUT IA32_FX_BUFFER *Buffer
; );
;------------------------------------------------------------------------------
InternalX86FxSave PROC
fxsave [rcx]
ret

View File

@@ -21,6 +21,14 @@
.code
;------------------------------------------------------------------------------
; VOID
; EFIAPI
; InternalLongJump (
; IN BASE_LIBRARY_JUMP_BUFFER *JumpBuffer,
; IN UINTN Value
; );
;------------------------------------------------------------------------------
InternalLongJump PROC
mov rbx, [rcx]
mov rsp, [rcx + 8]

View File

@@ -31,7 +31,7 @@
; );
;------------------------------------------------------------------------------
AsmReadCs PROC
mov ax, cs
mov eax, cs
ret
AsmReadCs ENDP

View File

@@ -31,9 +31,8 @@
; );
;------------------------------------------------------------------------------
AsmReadDs PROC
mov ax, ds
mov eax, ds
ret
AsmReadDs ENDP
END

View File

@@ -31,7 +31,7 @@
; );
;------------------------------------------------------------------------------
AsmReadEs PROC
mov ax, es
mov eax, es
ret
AsmReadEs ENDP

View File

@@ -31,7 +31,7 @@
; );
;------------------------------------------------------------------------------
AsmReadFs PROC
mov ax, fs
mov eax, fs
ret
AsmReadFs ENDP

View File

@@ -23,6 +23,13 @@
.code
;------------------------------------------------------------------------------
; VOID
; EFIAPI
; InternalX86ReadGdtr (
; OUT IA32_DESCRIPTOR *Gdtr
; );
;------------------------------------------------------------------------------
InternalX86ReadGdtr PROC
sgdt fword ptr [rcx]
ret

View File

@@ -31,7 +31,7 @@
; );
;------------------------------------------------------------------------------
AsmReadGs PROC
mov ax, gs
mov eax, gs
ret
AsmReadGs ENDP

View File

@@ -23,6 +23,13 @@
.code
;------------------------------------------------------------------------------
; VOID
; EFIAPI
; InternalX86ReadIdtr (
; OUT IA32_DESCRIPTOR *Idtr
; );
;------------------------------------------------------------------------------
InternalX86ReadIdtr PROC
sidt fword ptr [rcx]
ret

View File

@@ -24,7 +24,7 @@
.code
;------------------------------------------------------------------------------
; UINTN
; UINT64
; EFIAPI
; AsmReadMm0 (
; VOID

View File

@@ -24,7 +24,7 @@
.code
;------------------------------------------------------------------------------
; UINTN
; UINT64
; EFIAPI
; AsmReadMm1 (
; VOID

View File

@@ -24,7 +24,7 @@
.code
;------------------------------------------------------------------------------
; UINTN
; UINT64
; EFIAPI
; AsmReadMm2 (
; VOID

View File

@@ -24,7 +24,7 @@
.code
;------------------------------------------------------------------------------
; UINTN
; UINT64
; EFIAPI
; AsmReadMm3 (
; VOID

View File

@@ -24,7 +24,7 @@
.code
;------------------------------------------------------------------------------
; UINTN
; UINT64
; EFIAPI
; AsmReadMm4 (
; VOID

View File

@@ -24,7 +24,7 @@
.code
;------------------------------------------------------------------------------
; UINTN
; UINT64
; EFIAPI
; AsmReadMm5 (
; VOID

View File

@@ -24,7 +24,7 @@
.code
;------------------------------------------------------------------------------
; UINTN
; UINT64
; EFIAPI
; AsmReadMm6 (
; VOID

View File

@@ -24,7 +24,7 @@
.code
;------------------------------------------------------------------------------
; UINTN
; UINT64
; EFIAPI
; AsmReadMm7 (
; VOID

View File

@@ -1,38 +0,0 @@
;------------------------------------------------------------------------------
;
; Copyright (c) 2006, Intel Corporation
; All rights reserved. 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
; http://opensource.org/licenses/bsd-license.php
;
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
;
; Module Name:
;
; ReadMsr32.Asm
;
; Abstract:
;
; AsmReadMsr32 function
;
; Notes:
;
;------------------------------------------------------------------------------
.code
;------------------------------------------------------------------------------
; UINT32
; EFIAPI
; AsmReadMsr32 (
; IN UINT32 Index
; );
;------------------------------------------------------------------------------
AsmReadMsr32 PROC
rdmsr
ret
AsmReadMsr32 ENDP
END

View File

@@ -31,9 +31,9 @@
; );
;------------------------------------------------------------------------------
AsmReadMsr64 PROC
rdmsr
shl rax, 20h
shrd rax, rdx, 20h
rdmsr ; edx & eax are zero extended
shl rdx, 20h
or rax, rdx
ret
AsmReadMsr64 ENDP

View File

@@ -32,11 +32,8 @@
;------------------------------------------------------------------------------
AsmReadPmc PROC
rdpmc
shl ecx, 1
jnc @F
shl rax, 20h
shrd rax, rdx, 20h
@@:
shl rdx, 20h
or rax, rdx
ret
AsmReadPmc ENDP

View File

@@ -31,7 +31,7 @@
; );
;------------------------------------------------------------------------------
AsmReadSs PROC
mov ax, ss
mov eax, ss
ret
AsmReadSs ENDP

View File

@@ -32,8 +32,8 @@
;------------------------------------------------------------------------------
AsmReadTsc PROC
rdtsc
shl rax, 20h
shrd rax, rdx, 20h
shl rdx, 20h
or rax, rdx
ret
AsmReadTsc ENDP

View File

@@ -23,6 +23,13 @@
EXTERNDEF InternalAssertJumpBuffer:PROC
;------------------------------------------------------------------------------
; UINTN
; EFIAPI
; SetJump (
; OUT BASE_LIBRARY_JUMP_BUFFER *JumpBuffer
; );
;------------------------------------------------------------------------------
SetJump PROC
push rcx
add rsp, -20h

View File

@@ -61,6 +61,10 @@ SavedGdt LABEL FWORD
DW ?
DQ ?
;------------------------------------------------------------------------------
; _BackFromUserCode() takes control in real mode after 'retf' has been executed
; by user code. It will be shadowed to somewhere in memory below 1MB.
;------------------------------------------------------------------------------
_BackFromUserCode PROC
DB 16h ; push ss
DB 0eh ; push cs
@@ -125,6 +129,10 @@ _16Gdtr LABEL FWORD
_16GdtrBase DQ _NullSegDesc
_16Idtr FWORD (1 SHL 10) - 1
;------------------------------------------------------------------------------
; _ToUserCode() takes control in real mode before passing control to user code.
; It will be shadowed to somewhere in memory below 1MB.
;------------------------------------------------------------------------------
_ToUserCode PROC
mov edi, ss
mov ss, edx ; set new segment selectors
@@ -184,11 +192,14 @@ _16DsDesc LABEL QWORD
DB 0
GdtEnd LABEL QWORD
;
; @param RegSet Pointer to a IA32_DWORD_REGS structure
; @param Transition Pointer to the transition code
; @return The address of the 16-bit stack after returning from user code
;
;------------------------------------------------------------------------------
; IA32_REGISTER_SET *
; EFIAPI
; InternalAsmThunk16 (
; IN IA32_REGISTER_SET *RegisterSet,
; IN OUT VOID *Transition
; );
;------------------------------------------------------------------------------
InternalAsmThunk16 PROC USES rbp rbx rsi rdi
mov r10d, ds
mov r11d, es

View File

@@ -27,11 +27,12 @@
; UINTN
; EFIAPI
; AsmWriteCr0 (
; VOID
; UINTN Cr0
; );
;------------------------------------------------------------------------------
AsmWriteCr0 PROC
mov cr0, rcx
mov rax, rcx
ret
AsmWriteCr0 ENDP

View File

@@ -27,11 +27,12 @@
; UINTN
; EFIAPI
; AsmWriteCr2 (
; VOID
; UINTN Cr2
; );
;------------------------------------------------------------------------------
AsmWriteCr2 PROC
mov cr2, rcx
mov rax, rcx
ret
AsmWriteCr2 ENDP

View File

@@ -27,11 +27,12 @@
; UINTN
; EFIAPI
; AsmWriteCr3 (
; VOID
; UINTN Cr3
; );
;------------------------------------------------------------------------------
AsmWriteCr3 PROC
mov cr3, rcx
mov rax, rcx
ret
AsmWriteCr3 ENDP

View File

@@ -27,11 +27,12 @@
; UINTN
; EFIAPI
; AsmWriteCr4 (
; VOID
; UINTN Cr4
; );
;------------------------------------------------------------------------------
AsmWriteCr4 PROC
mov cr4, rcx
mov rax, rcx
ret
AsmWriteCr4 ENDP

View File

@@ -27,11 +27,12 @@
; UINTN
; EFIAPI
; AsmWriteDr0 (
; VOID
; IN UINTN Value
; );
;------------------------------------------------------------------------------
AsmWriteDr0 PROC
mov dr0, rcx
mov rax, rcx
ret
AsmWriteDr0 ENDP

View File

@@ -27,11 +27,12 @@
; UINTN
; EFIAPI
; AsmWriteDr1 (
; VOID
; IN UINTN Value
; );
;------------------------------------------------------------------------------
AsmWriteDr1 PROC
mov dr1, rcx
mov rax, rcx
ret
AsmWriteDr1 ENDP

View File

@@ -27,11 +27,12 @@
; UINTN
; EFIAPI
; AsmWriteDr2 (
; VOID
; IN UINTN Value
; );
;------------------------------------------------------------------------------
AsmWriteDr2 PROC
mov dr2, rcx
mov rax, rcx
ret
AsmWriteDr2 ENDP

View File

@@ -27,11 +27,12 @@
; UINTN
; EFIAPI
; AsmWriteDr3 (
; VOID
; IN UINTN Value
; );
;------------------------------------------------------------------------------
AsmWriteDr3 PROC
mov dr3, rcx
mov rax, rcx
ret
AsmWriteDr3 ENDP

View File

@@ -27,11 +27,12 @@
; UINTN
; EFIAPI
; AsmWriteDr4 (
; VOID
; IN UINTN Value
; );
;------------------------------------------------------------------------------
AsmWriteDr4 PROC
DB 0fh, 23h, 0e1h
mov rax, rcx
ret
AsmWriteDr4 ENDP

View File

@@ -26,12 +26,13 @@
;------------------------------------------------------------------------------
; UINTN
; EFIAPI
; AsmWriteDr5 (
; VOID
; AsmWriteDr6 (
; IN UINTN Value
; );
;------------------------------------------------------------------------------
AsmWriteDr5 PROC
DB 0fh, 23h, 0e9h
mov rax, rcx
ret
AsmWriteDr5 ENDP

View File

@@ -27,11 +27,12 @@
; UINTN
; EFIAPI
; AsmWriteDr6 (
; VOID
; IN UINTN Value
; );
;------------------------------------------------------------------------------
AsmWriteDr6 PROC
mov dr6, rcx
mov rax, rcx
ret
AsmWriteDr6 ENDP

View File

@@ -27,11 +27,12 @@
; UINTN
; EFIAPI
; AsmWriteDr7 (
; VOID
; IN UINTN Value
; );
;------------------------------------------------------------------------------
AsmWriteDr7 PROC
mov dr7, rcx
mov rax, rcx
ret
AsmWriteDr7 ENDP

View File

@@ -23,6 +23,13 @@
.code
;------------------------------------------------------------------------------
; VOID
; EFIAPI
; InternalX86WriteGdtr (
; IN CONST IA32_DESCRIPTOR *Idtr
; );
;------------------------------------------------------------------------------
InternalX86WriteGdtr PROC
lgdt fword ptr [rcx]
ret

View File

@@ -23,6 +23,13 @@
.code
;------------------------------------------------------------------------------
; VOID
; EFIAPI
; InternalX86WriteIdtr (
; IN CONST IA32_DESCRIPTOR *Idtr
; );
;------------------------------------------------------------------------------
InternalX86WriteIdtr PROC
lidt fword ptr [rcx]
ret

View File

@@ -24,10 +24,10 @@
.code
;------------------------------------------------------------------------------
; UINTN
; VOID
; EFIAPI
; AsmWriteMm0 (
; VOID
; IN UINT64 Value
; );
;------------------------------------------------------------------------------
AsmWriteMm0 PROC

View File

@@ -24,10 +24,10 @@
.code
;------------------------------------------------------------------------------
; UINTN
; VOID
; EFIAPI
; AsmWriteMm1 (
; VOID
; IN UINT64 Value
; );
;------------------------------------------------------------------------------
AsmWriteMm1 PROC

View File

@@ -24,10 +24,10 @@
.code
;------------------------------------------------------------------------------
; UINTN
; VOID
; EFIAPI
; AsmWriteMm2 (
; VOID
; IN UINT64 Value
; );
;------------------------------------------------------------------------------
AsmWriteMm2 PROC

View File

@@ -24,10 +24,10 @@
.code
;------------------------------------------------------------------------------
; UINTN
; VOID
; EFIAPI
; AsmWriteMm3 (
; VOID
; IN UINT64 Value
; );
;------------------------------------------------------------------------------
AsmWriteMm3 PROC

View File

@@ -24,10 +24,10 @@
.code
;------------------------------------------------------------------------------
; UINTN
; VOID
; EFIAPI
; AsmWriteMm4 (
; VOID
; IN UINT64 Value
; );
;------------------------------------------------------------------------------
AsmWriteMm4 PROC

View File

@@ -24,10 +24,10 @@
.code
;------------------------------------------------------------------------------
; UINTN
; VOID
; EFIAPI
; AsmWriteMm5 (
; VOID
; IN UINT64 Value
; );
;------------------------------------------------------------------------------
AsmWriteMm5 PROC

View File

@@ -24,10 +24,10 @@
.code
;------------------------------------------------------------------------------
; UINTN
; VOID
; EFIAPI
; AsmWriteMm6 (
; VOID
; IN UINT64 Value
; );
;------------------------------------------------------------------------------
AsmWriteMm6 PROC

View File

@@ -24,10 +24,10 @@
.code
;------------------------------------------------------------------------------
; UINTN
; VOID
; EFIAPI
; AsmWriteMm7 (
; VOID
; IN UINT64 Value
; );
;------------------------------------------------------------------------------
AsmWriteMm7 PROC

View File

@@ -1,41 +0,0 @@
;------------------------------------------------------------------------------
;
; Copyright (c) 2006, Intel Corporation
; All rights reserved. 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
; http://opensource.org/licenses/bsd-license.php
;
; THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
; WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
;
; Module Name:
;
; WriteMsr32.Asm
;
; Abstract:
;
; AsmWriteMsr32 function
;
; Notes:
;
;------------------------------------------------------------------------------
.code
;------------------------------------------------------------------------------
; UINT32
; EFIAPI
; AsmWriteMsr32 (
; IN UINT32 Index,
; IN UINT32 Value
; );
;------------------------------------------------------------------------------
AsmWriteMsr32 PROC
mov eax, edx
xor edx, edx
wrmsr
ret
AsmWriteMsr32 ENDP
END

View File

@@ -32,11 +32,9 @@
; );
;------------------------------------------------------------------------------
AsmWriteMsr64 PROC
push rdx
mov eax, edx
mov rax, rdx
shr rdx, 20h
wrmsr
pop rax
ret
AsmWriteMsr64 ENDP