From 3a4b9eba07e5cd1866842b0173fac93ffdb931e9 Mon Sep 17 00:00:00 2001 From: rsun3 Date: Wed, 16 Nov 2011 09:38:12 +0000 Subject: DuetPkg BootSector: Update start.asm(S)/start16.asm(S)/start32.asm(S)/efi32.asm(S) under DuetPkg\BootSector to follow the IA32 recommendations on switching to protected mode: Immediately following the MOV CR0 instruction, execute a far JMP or far CALL instruction. (This operation is typically a far jump or call to the next instruction in the instruction stream.) Signed-off-by: rsun3 Reviewed-by: niruiyu git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12723 6f19259b-4bc3-4df7-8a09-765794883524 --- DuetPkg/BootSector/BootSector.inf | 18 +++++++++++++++++- DuetPkg/BootSector/bin/Start.com | Bin 4096 -> 4096 bytes DuetPkg/BootSector/bin/Start16.com | Bin 4096 -> 4096 bytes DuetPkg/BootSector/bin/Start32.com | Bin 4096 -> 4096 bytes DuetPkg/BootSector/bin/efi32.com | Bin 139264 -> 139264 bytes DuetPkg/BootSector/bin/efi32.com2 | Bin 4096 -> 4096 bytes DuetPkg/BootSector/efi32.S | 3 ++- DuetPkg/BootSector/efi32.asm | 3 ++- DuetPkg/BootSector/start.S | 8 ++------ DuetPkg/BootSector/start.asm | 9 ++------- DuetPkg/BootSector/start16.S | 9 ++------- DuetPkg/BootSector/start16.asm | 9 ++------- DuetPkg/BootSector/start32.S | 9 ++------- DuetPkg/BootSector/start32.asm | 9 ++------- 14 files changed, 33 insertions(+), 44 deletions(-) (limited to 'DuetPkg/BootSector') diff --git a/DuetPkg/BootSector/BootSector.inf b/DuetPkg/BootSector/BootSector.inf index c443ebb6ef..49f69eb66e 100644 --- a/DuetPkg/BootSector/BootSector.inf +++ b/DuetPkg/BootSector/BootSector.inf @@ -1,6 +1,6 @@ ## @file # -# Copyright (c) 2006 - 2010, Intel Corporation. All rights reserved.
+# Copyright (c) 2006 - 2011, 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 @@ -61,3 +61,19 @@ efi32.asm | MSFT efi32.S | GCC + start64.asm | INTEL + start64.asm | MSFT + start64.S | GCC + + st16_64.asm | INTEL + st16_64.asm | MSFT + st16_64.S | GCC + + st32_64.asm | INTEL + st32_64.asm | MSFT + st32_64.S | GCC + + efi64.asm | INTEL + efi64.asm | MSFT + efi64.S | GCC + diff --git a/DuetPkg/BootSector/bin/Start.com b/DuetPkg/BootSector/bin/Start.com index adc5a3d0cf..0fd19a14a9 100644 Binary files a/DuetPkg/BootSector/bin/Start.com and b/DuetPkg/BootSector/bin/Start.com differ diff --git a/DuetPkg/BootSector/bin/Start16.com b/DuetPkg/BootSector/bin/Start16.com index 34e5dca6db..b2d77c1262 100644 Binary files a/DuetPkg/BootSector/bin/Start16.com and b/DuetPkg/BootSector/bin/Start16.com differ diff --git a/DuetPkg/BootSector/bin/Start32.com b/DuetPkg/BootSector/bin/Start32.com index 47f2f5d435..ac0e3cb20b 100644 Binary files a/DuetPkg/BootSector/bin/Start32.com and b/DuetPkg/BootSector/bin/Start32.com differ diff --git a/DuetPkg/BootSector/bin/efi32.com b/DuetPkg/BootSector/bin/efi32.com index 7c982e0ba7..4bcd83e2ac 100644 Binary files a/DuetPkg/BootSector/bin/efi32.com and b/DuetPkg/BootSector/bin/efi32.com differ diff --git a/DuetPkg/BootSector/bin/efi32.com2 b/DuetPkg/BootSector/bin/efi32.com2 index d4bae935cb..05522eccc5 100644 Binary files a/DuetPkg/BootSector/bin/efi32.com2 and b/DuetPkg/BootSector/bin/efi32.com2 differ diff --git a/DuetPkg/BootSector/efi32.S b/DuetPkg/BootSector/efi32.S index 391590a856..ebbc450950 100644 --- a/DuetPkg/BootSector/efi32.S +++ b/DuetPkg/BootSector/efi32.S @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ #* -#* Copyright (c) 2006, Intel Corporation. All rights reserved.
+#* Copyright (c) 2006 - 2011, 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 @@ -37,6 +37,7 @@ _start: .endm Start: + movw %bx, %ax movw %ax, %ds movw %ax, %es movw %ax, %fs diff --git a/DuetPkg/BootSector/efi32.asm b/DuetPkg/BootSector/efi32.asm index 471b4807bc..7ccf86f0eb 100644 --- a/DuetPkg/BootSector/efi32.asm +++ b/DuetPkg/BootSector/efi32.asm @@ -1,6 +1,6 @@ ;------------------------------------------------------------------------------ ;* -;* Copyright (c) 2006, Intel Corporation. All rights reserved.
+;* Copyright (c) 2006 - 2011, 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 @@ -39,6 +39,7 @@ endm Start: + mov ax,bx ; flat data descriptor in BX mov ds,ax mov es,ax mov fs,ax diff --git a/DuetPkg/BootSector/start.S b/DuetPkg/BootSector/start.S index b9a34db081..f96d06e144 100644 --- a/DuetPkg/BootSector/start.S +++ b/DuetPkg/BootSector/start.S @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ #* -#* Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.
+#* Copyright (c) 2006 - 2011, 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 @@ -404,6 +404,7 @@ Timeout8042: A20GateEnabled: + movw $0x0008, %bx # Flat data descriptor # # DISABLE INTERRUPTS - Entering Protected Mode @@ -425,11 +426,6 @@ A20GateEnabled: movl %cr0, %eax orb $1, %al movl %eax, %cr0 - - movl $0x008, %eax # Flat data descriptor - movl $0x00400000, %ebp # Destination of EFILDR32 - movl $0x00070000, %ebx # Length of copy - JUMP: # jmp far 0010:00020000 .byte 0x66 diff --git a/DuetPkg/BootSector/start.asm b/DuetPkg/BootSector/start.asm index 2674d1cd8a..9cc05ff5ca 100644 --- a/DuetPkg/BootSector/start.asm +++ b/DuetPkg/BootSector/start.asm @@ -1,6 +1,6 @@ ;------------------------------------------------------------------------------ ;* -;* Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.
+;* Copyright (c) 2006 - 2011, 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 @@ -400,7 +400,7 @@ Timeout8042: A20GateEnabled: - + mov bx,0008h ; Flat data descriptor ; ; DISABLE INTERRUPTS - Entering Protected Mode ; @@ -421,11 +421,6 @@ A20GateEnabled: mov eax,cr0 or al,1 mov cr0,eax - - mov eax,0008h ; Flat data descriptor - mov ebp,000400000h ; Destination of EFILDR32 - mov ebx,000070000h ; Length of copy - JUMP: ; jmp far 0010:00020000 db 066h diff --git a/DuetPkg/BootSector/start16.S b/DuetPkg/BootSector/start16.S index be525b6f30..053a0eeb91 100644 --- a/DuetPkg/BootSector/start16.S +++ b/DuetPkg/BootSector/start16.S @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ #* -#* Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.
+#* Copyright (c) 2006 - 2011, 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 @@ -398,7 +398,7 @@ Timeout8042: A20GateEnabled: - + movw $0x0008, %bx # Flat data descriptor # # DISABLE INTERRUPTS - Entering Protected Mode # @@ -419,11 +419,6 @@ A20GateEnabled: movl %cr0, %eax orb $1, %al movl %eax, %cr0 - - movl $0x008, %eax # Flat data descriptor - movl $0x00400000, %ebp # Destination of EFILDR32 - movl $0x00070000, %ebx # Length of copy - JUMP: # jmp far 0010:00020000 .byte 0x66 diff --git a/DuetPkg/BootSector/start16.asm b/DuetPkg/BootSector/start16.asm index 036726d83d..05d0b2d1e5 100644 --- a/DuetPkg/BootSector/start16.asm +++ b/DuetPkg/BootSector/start16.asm @@ -1,6 +1,6 @@ ;------------------------------------------------------------------------------ ;* -;* Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.
+;* Copyright (c) 2006 - 2011, 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 @@ -393,7 +393,7 @@ Timeout8042: A20GateEnabled: - + mov bx,0008h ; Flat data descriptor ; ; DISABLE INTERRUPTS - Entering Protected Mode ; @@ -414,11 +414,6 @@ A20GateEnabled: mov eax,cr0 or al,1 mov cr0,eax - - mov eax,0008h ; Flat data descriptor - mov ebp,000400000h ; Destination of EFILDR32 - mov ebx,000070000h ; Length of copy - JUMP: ; jmp far 0010:00020000 db 066h diff --git a/DuetPkg/BootSector/start32.S b/DuetPkg/BootSector/start32.S index c47f92763d..6ce225612f 100644 --- a/DuetPkg/BootSector/start32.S +++ b/DuetPkg/BootSector/start32.S @@ -1,6 +1,6 @@ #------------------------------------------------------------------------------ #* -#* Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.
+#* Copyright (c) 2006 - 2011, 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 @@ -413,7 +413,7 @@ Timeout8042: A20GateEnabled: - + movw $0x0008, %bx # Flat data descriptor # # DISABLE INTERRUPTS - Entering Protected Mode # @@ -434,11 +434,6 @@ A20GateEnabled: movl %cr0, %eax orb $1, %al movl %eax, %cr0 - - movl $0x008, %eax # Flat data descriptor - movl $0x00400000, %ebp # Destination of EFILDR32 - movl $0x00070000, %ebx # Length of copy - JUMP: # jmp far 0010:00020000 .byte 0x66 diff --git a/DuetPkg/BootSector/start32.asm b/DuetPkg/BootSector/start32.asm index 2cc5640cd8..aaf04b86bc 100644 --- a/DuetPkg/BootSector/start32.asm +++ b/DuetPkg/BootSector/start32.asm @@ -1,6 +1,6 @@ ;------------------------------------------------------------------------------ ;* -;* Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.
+;* Copyright (c) 2006 - 2011, 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 @@ -408,7 +408,7 @@ Timeout8042: A20GateEnabled: - + mov bx,0008h ; Flat data descriptor ; ; DISABLE INTERRUPTS - Entering Protected Mode ; @@ -429,11 +429,6 @@ A20GateEnabled: mov eax,cr0 or al,1 mov cr0,eax - - mov eax,0008h ; Flat data descriptor - mov ebp,000400000h ; Destination of EFILDR32 - mov ebx,000070000h ; Length of copy - JUMP: ; jmp far 0010:00020000 db 066h -- cgit v1.2.3