mirror of https://github.com/acidanthera/audk.git
UefiCpuPkg/CpuMpPei/Ia32: Use CodeSegment and DataSegment fields
Using CodeSegment and DataSegment fields in ExchangeInfo instead of the hardcode MACROs. Cc: Feng Tian <feng.tian@intel.com> Cc: Michael Kinney <michael.d.kinney@intel.com> Cc: Giri Mudusuru <giri.p.mudusuru@intel.com> Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Jeff Fan <jeff.fan@intel.com> Reviewed-by: Giri P Mudusuru <giri.p.mudusuru@intel.com>
This commit is contained in:
parent
ed04bffe75
commit
aad5ee4899
|
@ -1,5 +1,5 @@
|
||||||
;------------------------------------------------------------------------------ ;
|
;------------------------------------------------------------------------------ ;
|
||||||
; Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
|
; Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||||
; This program and the accompanying materials
|
; This program and the accompanying materials
|
||||||
; are licensed and made available under the terms and conditions of the BSD License
|
; 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
|
; which accompanies this distribution. The full text of the license may be found at
|
||||||
|
@ -39,25 +39,34 @@ RendezvousFunnelProcStart::
|
||||||
; Save BIST information to ebp firstly
|
; Save BIST information to ebp firstly
|
||||||
db 66h, 08bh, 0e8h ; mov ebp, eax ; save BIST information
|
db 66h, 08bh, 0e8h ; mov ebp, eax ; save BIST information
|
||||||
|
|
||||||
db 8ch,0c8h ; mov ax,cs
|
db 8ch,0c8h ; mov ax, cs
|
||||||
db 8eh,0d8h ; mov ds,ax
|
db 8eh,0d8h ; mov ds, ax
|
||||||
db 8eh,0c0h ; mov es,ax
|
db 8eh,0c0h ; mov es, ax
|
||||||
db 8eh,0d0h ; mov ss,ax
|
db 8eh,0d0h ; mov ss, ax
|
||||||
db 33h,0c0h ; xor ax,ax
|
db 33h,0c0h ; xor ax, ax
|
||||||
db 8eh,0e0h ; mov fs,ax
|
db 8eh,0e0h ; mov fs, ax
|
||||||
db 8eh,0e8h ; mov gs,ax
|
db 8eh,0e8h ; mov gs, ax
|
||||||
|
|
||||||
db 0BEh ; opcode of mov si, mem16
|
db 0BEh ; opcode of mov si, mem16
|
||||||
dw BufferStartLocation ; mov si, BufferStartLocation
|
dw BufferStartLocation ; mov si, BufferStartLocation
|
||||||
db 66h, 8Bh, 1Ch ; mov ebx,dword ptr [si]
|
db 66h, 8Bh, 1Ch ; mov ebx, dword ptr [si]
|
||||||
|
|
||||||
db 0BFh ; opcode of mov di, mem16
|
db 0BEh ; opcode of mov si, mem16
|
||||||
dw PmodeOffsetLocation ; mov di, PmodeOffsetLocation
|
dw PmodeOffsetLocation ; mov si, PmodeOffsetLocation
|
||||||
db 66h, 8Bh, 05h ; mov eax,dword ptr [di]
|
db 66h, 8Bh, 04h ; mov eax, [si]
|
||||||
db 8Bh, 0F8h ; mov di, ax
|
db 0BEh ; opcode of mov si, mem16
|
||||||
db 83h, 0EFh,06h ; sub di, 06h
|
dw CodeSegmentLocation ; mov si, CodeSegmentLocation
|
||||||
db 66h, 03h, 0C3h ; add eax, ebx
|
db 66h, 8Bh, 14h ; mov edx, [si]
|
||||||
db 66h, 89h, 05h ; mov dword ptr [di],eax
|
db 89h, 0C7h ; mov di, ax
|
||||||
|
db 83h, 0EFh, 02h ; sub di, 02h
|
||||||
|
db 89h, 15h ; mov [di], dx
|
||||||
|
db 83h, 0EFh, 04h ; sub di, 04h
|
||||||
|
db 66h, 01h, 0D8h ; add eax, ebx
|
||||||
|
db 66h, 89h, 05h ; mov [di], eax
|
||||||
|
|
||||||
|
db 0BEh ; opcode of mov si, mem16
|
||||||
|
dw DataSegmentLocation ; mov si, DataSegmentLocation
|
||||||
|
db 66h, 8Bh, 14h ; mov edx, [si]
|
||||||
|
|
||||||
db 0BEh ; opcode of mov si, mem16
|
db 0BEh ; opcode of mov si, mem16
|
||||||
dw GdtrLocation ; mov si, GdtrLocation
|
dw GdtrLocation ; mov si, GdtrLocation
|
||||||
|
@ -78,15 +87,14 @@ RendezvousFunnelProcStart::
|
||||||
|
|
||||||
db 66h, 67h, 0EAh ; far jump
|
db 66h, 67h, 0EAh ; far jump
|
||||||
dd 0h ; 32-bit offset
|
dd 0h ; 32-bit offset
|
||||||
dw PROTECT_MODE_CS ; 16-bit selector
|
dw 0h ; 16-bit selector
|
||||||
|
|
||||||
Flat32Start:: ; protected mode entry point
|
Flat32Start:: ; protected mode entry point
|
||||||
mov ax, PROTECT_MODE_DS
|
mov ds, dx
|
||||||
mov ds, ax
|
mov es, dx
|
||||||
mov es, ax
|
mov fs, dx
|
||||||
mov fs, ax
|
mov gs, dx
|
||||||
mov gs, ax
|
mov ss, dx
|
||||||
mov ss, ax
|
|
||||||
|
|
||||||
mov esi, ebx
|
mov esi, ebx
|
||||||
mov edi, esi
|
mov edi, esi
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
;------------------------------------------------------------------------------ ;
|
;------------------------------------------------------------------------------ ;
|
||||||
; Copyright (c) 2015, Intel Corporation. All rights reserved.<BR>
|
; Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR>
|
||||||
; This program and the accompanying materials
|
; This program and the accompanying materials
|
||||||
; are licensed and made available under the terms and conditions of the BSD License
|
; 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
|
; which accompanies this distribution. The full text of the license may be found at
|
||||||
|
@ -48,13 +48,20 @@ BITS 16
|
||||||
mov si, BufferStartLocation
|
mov si, BufferStartLocation
|
||||||
mov ebx, [si]
|
mov ebx, [si]
|
||||||
|
|
||||||
mov di, PmodeOffsetLocation
|
mov si, PmodeOffsetLocation
|
||||||
mov eax, [di]
|
mov eax, [si]
|
||||||
|
mov si, CodeSegmentLocation
|
||||||
|
mov edx, [si]
|
||||||
mov di, ax
|
mov di, ax
|
||||||
sub di, 06h
|
sub di, 02h
|
||||||
|
mov [di], dx
|
||||||
|
sub di, 04h
|
||||||
add eax, ebx
|
add eax, ebx
|
||||||
mov [di],eax
|
mov [di],eax
|
||||||
|
|
||||||
|
mov si, DataSegmentLocation
|
||||||
|
mov edx, [si]
|
||||||
|
|
||||||
mov si, GdtrLocation
|
mov si, GdtrLocation
|
||||||
o32 lgdt [cs:si]
|
o32 lgdt [cs:si]
|
||||||
|
|
||||||
|
@ -68,15 +75,14 @@ o32 lidt [cs:si]
|
||||||
or eax, 000000003h ;Set PE bit (bit #0) & MP
|
or eax, 000000003h ;Set PE bit (bit #0) & MP
|
||||||
mov cr0, eax
|
mov cr0, eax
|
||||||
|
|
||||||
jmp PROTECT_MODE_CS:strict dword 0 ; far jump to protected mode
|
jmp 0:strict dword 0 ; far jump to protected mode
|
||||||
BITS 32
|
BITS 32
|
||||||
Flat32Start: ; protected mode entry point
|
Flat32Start: ; protected mode entry point
|
||||||
mov ax, PROTECT_MODE_DS
|
mov ds, dx
|
||||||
mov ds, ax
|
mov es, dx
|
||||||
mov es, ax
|
mov fs, dx
|
||||||
mov fs, ax
|
mov gs, dx
|
||||||
mov gs, ax
|
mov ss, dx
|
||||||
mov ss, ax
|
|
||||||
|
|
||||||
mov esi, ebx
|
mov esi, ebx
|
||||||
mov edi, esi
|
mov edi, esi
|
||||||
|
|
Loading…
Reference in New Issue