DuetPkg BootSector: Clean up .S files for 64-bit Duet for GCC build.
Partly contributed by Sergey Isakov [isakov-sl@bk.ru]. Signed-off-by: rsun3 Reviewed-by: niruiyu git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@12921 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
dee3431846
commit
69b1c0214f
@ -1,7 +1,7 @@
|
|||||||
## @file
|
## @file
|
||||||
# Just use host GCC to compile boot sector image.
|
# Just use host GCC to compile boot sector image.
|
||||||
#
|
#
|
||||||
# Copyright (c) 2010, Intel Corporation. All rights reserved.<BR>
|
# Copyright (c) 2010 - 2012, 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
|
||||||
@ -20,11 +20,15 @@ ASSEMBLY_CODE_FILE_LIST = $(MODULE_DIR)/bootsect.S \
|
|||||||
$(MODULE_DIR)/bs16.S \
|
$(MODULE_DIR)/bs16.S \
|
||||||
$(MODULE_DIR)/bs32.S \
|
$(MODULE_DIR)/bs32.S \
|
||||||
$(MODULE_DIR)/efi32.S \
|
$(MODULE_DIR)/efi32.S \
|
||||||
|
$(MODULE_DIR)/efi64.S \
|
||||||
$(MODULE_DIR)/Gpt.S \
|
$(MODULE_DIR)/Gpt.S \
|
||||||
$(MODULE_DIR)/Mbr.S \
|
$(MODULE_DIR)/Mbr.S \
|
||||||
$(MODULE_DIR)/start.S \
|
$(MODULE_DIR)/start.S \
|
||||||
$(MODULE_DIR)/start16.S \
|
$(MODULE_DIR)/start16.S \
|
||||||
$(MODULE_DIR)/start32.S
|
$(MODULE_DIR)/start32.S \
|
||||||
|
$(MODULE_DIR)/start64.S \
|
||||||
|
$(MODULE_DIR)/st16_64.S \
|
||||||
|
$(MODULE_DIR)/st32_64.S
|
||||||
|
|
||||||
TARGET_FILES = $(OUTPUT_DIR)/bootsect.com \
|
TARGET_FILES = $(OUTPUT_DIR)/bootsect.com \
|
||||||
$(OUTPUT_DIR)/bs16.com \
|
$(OUTPUT_DIR)/bs16.com \
|
||||||
@ -34,11 +38,11 @@ TARGET_FILES = $(OUTPUT_DIR)/bootsect.com \
|
|||||||
$(OUTPUT_DIR)/start.com \
|
$(OUTPUT_DIR)/start.com \
|
||||||
$(OUTPUT_DIR)/start16.com \
|
$(OUTPUT_DIR)/start16.com \
|
||||||
$(OUTPUT_DIR)/start32.com \
|
$(OUTPUT_DIR)/start32.com \
|
||||||
$(OUTPUT_DIR)/efi32.com2
|
$(OUTPUT_DIR)/efi32.com2 \
|
||||||
#$(OUTPUT_DIR)/start64.com \
|
$(OUTPUT_DIR)/start64.com \
|
||||||
#$(OUTPUT_DIR)/st16_64.com \
|
$(OUTPUT_DIR)/st16_64.com \
|
||||||
#$(OUTPUT_DIR)/st32_64.com \
|
$(OUTPUT_DIR)/st32_64.com \
|
||||||
#$(OUTPUT_DIR)/efi64.com2
|
$(OUTPUT_DIR)/efi64.com2
|
||||||
|
|
||||||
.PHONY : all
|
.PHONY : all
|
||||||
all: $(TARGET_FILES)
|
all: $(TARGET_FILES)
|
||||||
@ -98,16 +102,16 @@ $(OUTPUT_DIR)/start64.com: $(OUTPUT_DIR)/start64.o
|
|||||||
$(DLINK) --oformat binary -o $(OUTPUT_DIR)/start64.com $(OUTPUT_DIR)/start64.o -Ttext 0 -Map $(OUTPUT_DIR)/start64.map
|
$(DLINK) --oformat binary -o $(OUTPUT_DIR)/start64.com $(OUTPUT_DIR)/start64.o -Ttext 0 -Map $(OUTPUT_DIR)/start64.map
|
||||||
|
|
||||||
# start16_64.S
|
# start16_64.S
|
||||||
$(OUTPUT_DIR)/start16_64.o: $(MODULE_DIR)/start16_64.S
|
$(OUTPUT_DIR)/st16_64.o: $(MODULE_DIR)/st16_64.S
|
||||||
$(ASM) -c -o $(OUTPUT_DIR)/start16_64.o $(MODULE_DIR)/start16_64.S
|
$(ASM) -c -o $(OUTPUT_DIR)/st16_64.o $(MODULE_DIR)/st16_64.S
|
||||||
$(OUTPUT_DIR)/start16_64.com: $(OUTPUT_DIR)/start16_64.o
|
$(OUTPUT_DIR)/st16_64.com: $(OUTPUT_DIR)/st16_64.o
|
||||||
$(DLINK) --oformat binary -o $(OUTPUT_DIR)/start16_64.com $(OUTPUT_DIR)/start16_64.o -Ttext 0 -Map $(OUTPUT_DIR)/start16_64.map
|
$(DLINK) --oformat binary -o $(OUTPUT_DIR)/st16_64.com $(OUTPUT_DIR)/st16_64.o -Ttext 0 -Map $(OUTPUT_DIR)/st16_64.map
|
||||||
|
|
||||||
# start32_64.S
|
# start32_64.S
|
||||||
$(OUTPUT_DIR)/start32_64.o: $(MODULE_DIR)/start32_64.S
|
$(OUTPUT_DIR)/st32_64.o: $(MODULE_DIR)/st32_64.S
|
||||||
$(ASM) -c -o $(OUTPUT_DIR)/start32_64.o $(MODULE_DIR)/start32_64.S
|
$(ASM) -c -o $(OUTPUT_DIR)/st32_64.o $(MODULE_DIR)/st32_64.S
|
||||||
$(OUTPUT_DIR)/start32_64.com: $(OUTPUT_DIR)/start32_64.o
|
$(OUTPUT_DIR)/st32_64.com: $(OUTPUT_DIR)/st32_64.o
|
||||||
$(DLINK) --oformat binary -o $(OUTPUT_DIR)/start32_64.com $(OUTPUT_DIR)/start32_64.o -Ttext 0 -Map $(OUTPUT_DIR)/start32_64.map
|
$(DLINK) --oformat binary -o $(OUTPUT_DIR)/st32_64.com $(OUTPUT_DIR)/st32_64.o -Ttext 0 -Map $(OUTPUT_DIR)/st32_64.map
|
||||||
|
|
||||||
# efi32.S
|
# efi32.S
|
||||||
$(OUTPUT_DIR)/efi32.o: $(MODULE_DIR)/efi32.S
|
$(OUTPUT_DIR)/efi32.o: $(MODULE_DIR)/efi32.S
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
#*
|
#*
|
||||||
#* Copyright (c) 2006, Intel Corporation. All rights reserved.<BR>
|
#* Copyright (c) 2006 - 2012, 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
|
||||||
@ -24,6 +24,9 @@
|
|||||||
.code:
|
.code:
|
||||||
.org 0x21000
|
.org 0x21000
|
||||||
|
|
||||||
|
.global _start
|
||||||
|
_start:
|
||||||
|
|
||||||
.equ DEFAULT_HANDLER_SIZE, INT1 - INT0
|
.equ DEFAULT_HANDLER_SIZE, INT1 - INT0
|
||||||
|
|
||||||
.macro jmpCommonIdtEntry
|
.macro jmpCommonIdtEntry
|
||||||
@ -1279,9 +1282,9 @@ looptop:
|
|||||||
andb $0xf,%bl
|
andb $0xf,%bl
|
||||||
addb $'0', %bl
|
addb $'0', %bl
|
||||||
cmpb $'9', %bl
|
cmpb $'9', %bl
|
||||||
jle @f
|
jle LN_C4
|
||||||
addb $7,%bl
|
addb $7,%bl
|
||||||
@@:
|
LN_C4:
|
||||||
movb %bl, (%edi)
|
movb %bl, (%edi)
|
||||||
addl $2,%edi
|
addl $2,%edi
|
||||||
loop looptop
|
loop looptop
|
||||||
@ -1300,10 +1303,10 @@ ClearScreen:
|
|||||||
movb $0xc,%ah
|
movb $0xc,%ah
|
||||||
movl $0xb8000,%edi
|
movl $0xb8000,%edi
|
||||||
movl $80*24,%ecx
|
movl $80*24,%ecx
|
||||||
LN_C4:
|
LN_C5:
|
||||||
movw %ax, (%edi)
|
movw %ax, (%edi)
|
||||||
addl $2,%edi
|
addl $2,%edi
|
||||||
loop LN_C4
|
loop LN_C5
|
||||||
movl $0xb8000,%edi
|
movl $0xb8000,%edi
|
||||||
|
|
||||||
popl %ecx
|
popl %ecx
|
||||||
@ -1315,9 +1318,9 @@ A2C:
|
|||||||
andb $0xf,%al
|
andb $0xf,%al
|
||||||
addb $'0', %al
|
addb $'0', %al
|
||||||
cmpb $'9', %al
|
cmpb $'9', %al
|
||||||
jle @f
|
jle LN_C6
|
||||||
addb $7,%al
|
addb $7,%al
|
||||||
LN_C5:
|
LN_C6:
|
||||||
ret
|
ret
|
||||||
|
|
||||||
String1: .asciz "*** INT "
|
String1: .asciz "*** INT "
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
#*
|
#*
|
||||||
#* Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.<BR>
|
#* Copyright (c) 2006 - 2012, 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
|
||||||
@ -27,6 +27,10 @@
|
|||||||
.equ BLOCK_SHIFT, 9
|
.equ BLOCK_SHIFT, 9
|
||||||
|
|
||||||
.org 0x0
|
.org 0x0
|
||||||
|
|
||||||
|
.global _start
|
||||||
|
_start:
|
||||||
|
|
||||||
Ia32Jump:
|
Ia32Jump:
|
||||||
jmp BootSectorEntryPoint # JMP inst - 3 bytes
|
jmp BootSectorEntryPoint # JMP inst - 3 bytes
|
||||||
nop
|
nop
|
||||||
@ -123,11 +127,11 @@ CheckEm64T:
|
|||||||
movw $18,%cx
|
movw $18,%cx
|
||||||
jmp PrintStringAndHalt
|
jmp PrintStringAndHalt
|
||||||
CheckEm64TPass:
|
CheckEm64TPass:
|
||||||
jumpFarInstruction:
|
JumpFarInstruction:
|
||||||
.byte 0xea
|
.byte 0xea
|
||||||
jumpOffset:
|
JumpOffset:
|
||||||
.word 0x200
|
.word 0x200
|
||||||
jumpSegment:
|
JumpSegment:
|
||||||
.word 0x2000
|
.word 0x2000
|
||||||
|
|
||||||
|
|
||||||
@ -431,7 +435,7 @@ A20GateEnabled:
|
|||||||
#
|
#
|
||||||
# Enable Protect Mode (set CR0.PE=1)
|
# Enable Protect Mode (set CR0.PE=1)
|
||||||
#
|
#
|
||||||
movl $cr0, %eax # Read CR0.
|
movl %cr0, %eax # Read CR0.
|
||||||
orl $0x1,%eax # Set PE=1
|
orl $0x1,%eax # Set PE=1
|
||||||
movl %eax, %cr0 # Write CR0.
|
movl %eax, %cr0 # Write CR0.
|
||||||
.byte 0x66
|
.byte 0x66
|
||||||
@ -503,7 +507,7 @@ In32BitProtectedMode:
|
|||||||
#
|
#
|
||||||
# Enable paging to activate long mode (set CR0.PG=1)
|
# Enable paging to activate long mode (set CR0.PG=1)
|
||||||
#
|
#
|
||||||
movl $cr0, %eax # Read CR0.
|
movl %cr0, %eax # Read CR0.
|
||||||
.byte 0xf
|
.byte 0xf
|
||||||
.byte 0xba
|
.byte 0xba
|
||||||
.byte 0xe8
|
.byte 0xe8
|
||||||
@ -1098,10 +1102,9 @@ MemoryMap: .long 0,0,0,0,0,0,0,0
|
|||||||
.long 0,0,0,0,0,0,0,0
|
.long 0,0,0,0,0,0,0,0
|
||||||
.long 0,0,0,0,0,0,0,0
|
.long 0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
.long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
.long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
.long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
#.org 0x0fe0 #Just for pass build
|
.org 0x0fe0
|
||||||
MyStack:
|
MyStack:
|
||||||
# below is the pieces of the IVT that is used to redirect INT 68h - 6fh
|
# below is the pieces of the IVT that is used to redirect INT 68h - 6fh
|
||||||
# back to INT 08h - 0fh when in real mode... It is 'org'ed to a
|
# back to INT 08h - 0fh when in real mode... It is 'org'ed to a
|
||||||
@ -1133,7 +1136,7 @@ MyStack:
|
|||||||
iret
|
iret
|
||||||
|
|
||||||
|
|
||||||
#.org 0x0ffe #Just for pass build
|
.org 0x0ffe
|
||||||
BlockSignature:
|
BlockSignature:
|
||||||
.word 0xaa55
|
.word 0xaa55
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
#*
|
#*
|
||||||
#* Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.<BR>
|
#* Copyright (c) 2006 - 2012, 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
|
||||||
@ -27,6 +27,10 @@
|
|||||||
.equ BLOCK_SHIFT, 9
|
.equ BLOCK_SHIFT, 9
|
||||||
|
|
||||||
.org 0x0
|
.org 0x0
|
||||||
|
|
||||||
|
.global _start
|
||||||
|
_start:
|
||||||
|
|
||||||
Ia32Jump:
|
Ia32Jump:
|
||||||
jmp BootSectorEntryPoint # JMP inst - 3 bytes
|
jmp BootSectorEntryPoint # JMP inst - 3 bytes
|
||||||
nop
|
nop
|
||||||
@ -138,11 +142,11 @@ CheckEm64T:
|
|||||||
movw $18,%cx
|
movw $18,%cx
|
||||||
jmp PrintStringAndHalt
|
jmp PrintStringAndHalt
|
||||||
CheckEm64TPass:
|
CheckEm64TPass:
|
||||||
jumpFarInstruction:
|
JumpFarInstruction:
|
||||||
.byte 0xea
|
.byte 0xea
|
||||||
jumpOffset:
|
JumpOffset:
|
||||||
.word 0x200
|
.word 0x200
|
||||||
jumpSegment:
|
JumpSegment:
|
||||||
.word 0x2000
|
.word 0x2000
|
||||||
|
|
||||||
|
|
||||||
@ -446,7 +450,7 @@ A20GateEnabled:
|
|||||||
#
|
#
|
||||||
# Enable Protect Mode (set CR0.PE=1)
|
# Enable Protect Mode (set CR0.PE=1)
|
||||||
#
|
#
|
||||||
movl $cr0, %eax # Read CR0.
|
movl %cr0, %eax # Read CR0.
|
||||||
orl $0x1,%eax # Set PE=1
|
orl $0x1,%eax # Set PE=1
|
||||||
movl %eax, %cr0 # Write CR0.
|
movl %eax, %cr0 # Write CR0.
|
||||||
.byte 0x66
|
.byte 0x66
|
||||||
@ -518,7 +522,7 @@ In32BitProtectedMode:
|
|||||||
#
|
#
|
||||||
# Enable paging to activate long mode (set CR0.PG=1)
|
# Enable paging to activate long mode (set CR0.PG=1)
|
||||||
#
|
#
|
||||||
movl $cr0, %eax # Read CR0.
|
movl %cr0, %eax # Read CR0.
|
||||||
.byte 0xf
|
.byte 0xf
|
||||||
.byte 0xba
|
.byte 0xba
|
||||||
.byte 0xe8
|
.byte 0xe8
|
||||||
@ -1113,10 +1117,9 @@ MemoryMap: .long 0,0,0,0,0,0,0,0
|
|||||||
.long 0,0,0,0,0,0,0,0
|
.long 0,0,0,0,0,0,0,0
|
||||||
.long 0,0,0,0,0,0,0,0
|
.long 0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
.long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
.long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
.long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
#.org 0x0fe0 #Just for pass build
|
.org 0x0fe0
|
||||||
MyStack:
|
MyStack:
|
||||||
# below is the pieces of the IVT that is used to redirect INT 68h - 6fh
|
# below is the pieces of the IVT that is used to redirect INT 68h - 6fh
|
||||||
# back to INT 08h - 0fh when in real mode... It is 'org'ed to a
|
# back to INT 08h - 0fh when in real mode... It is 'org'ed to a
|
||||||
@ -1148,7 +1151,7 @@ MyStack:
|
|||||||
iret
|
iret
|
||||||
|
|
||||||
|
|
||||||
#.org 0x0ffe #Just for pass build
|
.org 0x0ffe
|
||||||
BlockSignature:
|
BlockSignature:
|
||||||
.word 0xaa55
|
.word 0xaa55
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
#*
|
#*
|
||||||
#* Copyright (c) 2006 - 2007, Intel Corporation. All rights reserved.<BR>
|
#* Copyright (c) 2006 - 2012, 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
|
||||||
@ -27,6 +27,10 @@
|
|||||||
.equ BLOCK_SHIFT, 9
|
.equ BLOCK_SHIFT, 9
|
||||||
|
|
||||||
.org 0x0
|
.org 0x0
|
||||||
|
|
||||||
|
.global _start
|
||||||
|
_start:
|
||||||
|
|
||||||
Ia32Jump:
|
Ia32Jump:
|
||||||
jmp BootSectorEntryPoint # JMP inst - 3 bytes
|
jmp BootSectorEntryPoint # JMP inst - 3 bytes
|
||||||
nop
|
nop
|
||||||
@ -123,11 +127,11 @@ CheckEm64T:
|
|||||||
movw $18,%cx
|
movw $18,%cx
|
||||||
jmp PrintStringAndHalt
|
jmp PrintStringAndHalt
|
||||||
CheckEm64TPass:
|
CheckEm64TPass:
|
||||||
jumpFarInstruction:
|
JumpFarInstruction:
|
||||||
.byte 0xea
|
.byte 0xea
|
||||||
jumpOffset:
|
JumpOffset:
|
||||||
.word 0x200
|
.word 0x200
|
||||||
jumpSegment:
|
JumpSegment:
|
||||||
.word 0x2000
|
.word 0x2000
|
||||||
|
|
||||||
|
|
||||||
@ -510,7 +514,7 @@ In32BitProtectedMode:
|
|||||||
#
|
#
|
||||||
# Enable paging to activate long mode (set CR0.PG=1)
|
# Enable paging to activate long mode (set CR0.PG=1)
|
||||||
#
|
#
|
||||||
movl $cr0, %eax # Read CR0.
|
movl %cr0, %eax # Read CR0.
|
||||||
.byte 0xf
|
.byte 0xf
|
||||||
.byte 0xba
|
.byte 0xba
|
||||||
.byte 0xe8
|
.byte 0xe8
|
||||||
@ -1105,7 +1109,6 @@ MemoryMap: .long 0,0,0,0,0,0,0,0
|
|||||||
.long 0,0,0,0,0,0,0,0
|
.long 0,0,0,0,0,0,0,0
|
||||||
.long 0,0,0,0,0,0,0,0
|
.long 0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
.long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
.long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
.long 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
|
||||||
.org 0x0fe0
|
.org 0x0fe0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user