-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Jarkko Sakkinen
authored and
H. Peter Anvin
committed
May 8, 2012
1 parent
d9d74a4
commit ee9bcbf
Showing
8 changed files
with
190 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: 433de739bbc22a5b2c87602116566ce27e3b4cab | ||
refs/heads/master: b3266bd6ff52efb9e57c7fbfff4c8f7363dfaab3 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
# | ||
# arch/x86/realmode/Makefile | ||
# | ||
# This file is subject to the terms and conditions of the GNU General Public | ||
# License. See the file "COPYING" in the main directory of this archive | ||
# for more details. | ||
# | ||
# | ||
|
||
subdir- := rm | ||
|
||
obj-y += rmpiggy.o | ||
|
||
$(obj)/rmpiggy.o: $(obj)/rm/realmode.relocs $(obj)/rm/realmode.bin | ||
|
||
$(obj)/rm/realmode.bin: FORCE | ||
$(Q)$(MAKE) $(build)=$(obj)/rm $@ | ||
|
||
$(obj)/rm/realmode.relocs: FORCE | ||
$(Q)$(MAKE) $(build)=$(obj)/rm $@ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
pasyms.h | ||
realmode.lds | ||
realmode.relocs |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
# | ||
# arch/x86/realmode/Makefile | ||
# | ||
# This file is subject to the terms and conditions of the GNU General Public | ||
# License. See the file "COPYING" in the main directory of this archive | ||
# for more details. | ||
# | ||
# | ||
|
||
subdir- := wakeup | ||
|
||
always := realmode.bin | ||
|
||
realmode-y += header.o | ||
|
||
targets += $(realmode-y) | ||
|
||
REALMODE_OBJS = $(addprefix $(obj)/,$(realmode-y)) | ||
|
||
sed-pasyms := -n -r -e 's/^([0-9a-fA-F]+) [ABCDGRSTVW] (.+)$$/pa_\2 = \2;/p' | ||
|
||
quiet_cmd_pasyms = PASYMS $@ | ||
cmd_pasyms = $(NM) $(filter-out FORCE,$^) | \ | ||
sed $(sed-pasyms) | sort | uniq > $@ | ||
|
||
$(obj)/pasyms.h: $(REALMODE_OBJS) FORCE | ||
$(call if_changed,pasyms) | ||
|
||
$(obj)/realmode.lds: $(obj)/pasyms.h | ||
|
||
LDFLAGS_realmode.elf := --emit-relocs -T | ||
CPPFLAGS_realmode.lds += -P -C -I$(obj) | ||
|
||
$(obj)/realmode.elf: $(obj)/realmode.lds $(REALMODE_OBJS) FORCE | ||
$(call if_changed,ld) | ||
|
||
OBJCOPYFLAGS_realmode.bin := -O binary | ||
|
||
$(obj)/realmode.bin: $(obj)/realmode.elf | ||
$(call if_changed,objcopy) | ||
|
||
quiet_cmd_relocs = RELOCS $@ | ||
cmd_relocs = scripts/x86-relocs --realmode $< > $@ | ||
$(obj)/realmode.relocs: $(obj)/realmode.elf FORCE | ||
$(call if_changed,relocs) | ||
|
||
# --------------------------------------------------------------------------- | ||
|
||
# How to compile the 16-bit code. Note we always compile for -march=i386, | ||
# that way we can complain to the user if the CPU is insufficient. | ||
KBUILD_CFLAGS := $(LINUXINCLUDE) -m32 -g -Os -D_SETUP -D__KERNEL__ \ | ||
-DDISABLE_BRANCH_PROFILING \ | ||
-Wall -Wstrict-prototypes \ | ||
-march=i386 -mregparm=3 \ | ||
-include $(srctree)/$(src)/../../boot/code16gcc.h \ | ||
-fno-strict-aliasing -fomit-frame-pointer \ | ||
$(call cc-option, -ffreestanding) \ | ||
$(call cc-option, -fno-toplevel-reorder,\ | ||
$(call cc-option, -fno-unit-at-a-time)) \ | ||
$(call cc-option, -fno-stack-protector) \ | ||
$(call cc-option, -mpreferred-stack-boundary=2) | ||
KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__ | ||
GCOV_PROFILE := n |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
/* | ||
* Real-mode blob header; this should match realmode.h and be | ||
* readonly; for mutable data instead add pointers into the .data | ||
* or .bss sections as appropriate. | ||
*/ | ||
|
||
#include <linux/linkage.h> | ||
#include <asm/page_types.h> | ||
|
||
.section ".header", "a" | ||
|
||
ENTRY(real_mode_header) | ||
.long pa_text_start | ||
.long pa_ro_end | ||
.long pa_end | ||
END(real_mode_header) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
/* | ||
* realmode.lds.S | ||
* | ||
* Linker script for the real-mode code | ||
*/ | ||
|
||
#include <asm/page_types.h> | ||
|
||
#undef i386 | ||
|
||
OUTPUT_FORMAT("elf32-i386", "elf32-i386", "elf32-i386") | ||
OUTPUT_ARCH(i386) | ||
|
||
SECTIONS | ||
{ | ||
real_mode_seg = 0; | ||
|
||
. = 0; | ||
.header : { | ||
pa_real_mode_base = .; | ||
*(.header) | ||
} | ||
|
||
. = ALIGN(4); | ||
.rodata : { | ||
*(.rodata) | ||
*(.rodata.*) | ||
} | ||
|
||
. = ALIGN(PAGE_SIZE); | ||
.text : { | ||
pa_text_start = .; | ||
*(.text) | ||
*(.text.*) | ||
} | ||
|
||
.text32 : { | ||
*(.text32) | ||
*(.text32.*) | ||
pa_ro_end = .; | ||
} | ||
|
||
. = ALIGN(PAGE_SIZE); | ||
.data : { | ||
*(.data) | ||
*(.data.*) | ||
} | ||
|
||
. = ALIGN(128); | ||
.bss : { | ||
*(.bss*) | ||
} | ||
|
||
/* End signature for integrity checking */ | ||
. = ALIGN(4); | ||
.signature : { | ||
*(.signature) | ||
pa_end = .; | ||
} | ||
|
||
/DISCARD/ : { | ||
*(.note*) | ||
*(.debug*) | ||
*(.eh_frame*) | ||
} | ||
|
||
#include "pasyms.h" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
/* | ||
* Wrapper script for the realmode binary as a transport object | ||
* before copying to low memory. | ||
*/ | ||
#include <linux/linkage.h> | ||
#include <asm/page_types.h> | ||
|
||
.section ".init.data","aw" | ||
|
||
.balign PAGE_SIZE | ||
|
||
ENTRY(real_mode_blob) | ||
.incbin "arch/x86/realmode/rm/realmode.bin" | ||
END(real_mode_blob) | ||
|
||
ENTRY(real_mode_relocs) | ||
.incbin "arch/x86/realmode/rm/realmode.relocs" | ||
END(real_mode_relocs) |