diff options
Diffstat (limited to 'arch/arm64/kernel/vmlinux.lds.S')
-rw-r--r-- | arch/arm64/kernel/vmlinux.lds.S | 30 |
1 files changed, 21 insertions, 9 deletions
diff --git a/arch/arm64/kernel/vmlinux.lds.S b/arch/arm64/kernel/vmlinux.lds.S index 3fae2be8b016..f5e55747242f 100644 --- a/arch/arm64/kernel/vmlinux.lds.S +++ b/arch/arm64/kernel/vmlinux.lds.S | |||
@@ -17,6 +17,19 @@ ENTRY(stext) | |||
17 | 17 | ||
18 | jiffies = jiffies_64; | 18 | jiffies = jiffies_64; |
19 | 19 | ||
20 | #define HYPERVISOR_TEXT \ | ||
21 | /* \ | ||
22 | * Force the alignment to be compatible with \ | ||
23 | * the vectors requirements \ | ||
24 | */ \ | ||
25 | . = ALIGN(2048); \ | ||
26 | VMLINUX_SYMBOL(__hyp_idmap_text_start) = .; \ | ||
27 | *(.hyp.idmap.text) \ | ||
28 | VMLINUX_SYMBOL(__hyp_idmap_text_end) = .; \ | ||
29 | VMLINUX_SYMBOL(__hyp_text_start) = .; \ | ||
30 | *(.hyp.text) \ | ||
31 | VMLINUX_SYMBOL(__hyp_text_end) = .; | ||
32 | |||
20 | SECTIONS | 33 | SECTIONS |
21 | { | 34 | { |
22 | /* | 35 | /* |
@@ -49,6 +62,7 @@ SECTIONS | |||
49 | TEXT_TEXT | 62 | TEXT_TEXT |
50 | SCHED_TEXT | 63 | SCHED_TEXT |
51 | LOCK_TEXT | 64 | LOCK_TEXT |
65 | HYPERVISOR_TEXT | ||
52 | *(.fixup) | 66 | *(.fixup) |
53 | *(.gnu.warning) | 67 | *(.gnu.warning) |
54 | . = ALIGN(16); | 68 | . = ALIGN(16); |
@@ -56,7 +70,7 @@ SECTIONS | |||
56 | } | 70 | } |
57 | 71 | ||
58 | RO_DATA(PAGE_SIZE) | 72 | RO_DATA(PAGE_SIZE) |
59 | 73 | EXCEPTION_TABLE(8) | |
60 | _etext = .; /* End of text and rodata section */ | 74 | _etext = .; /* End of text and rodata section */ |
61 | 75 | ||
62 | . = ALIGN(PAGE_SIZE); | 76 | . = ALIGN(PAGE_SIZE); |
@@ -99,14 +113,6 @@ SECTIONS | |||
99 | READ_MOSTLY_DATA(64) | 113 | READ_MOSTLY_DATA(64) |
100 | 114 | ||
101 | /* | 115 | /* |
102 | * The exception fixup table (might need resorting at runtime) | ||
103 | */ | ||
104 | . = ALIGN(32); | ||
105 | __start___ex_table = .; | ||
106 | *(__ex_table) | ||
107 | __stop___ex_table = .; | ||
108 | |||
109 | /* | ||
110 | * and the usual data section | 116 | * and the usual data section |
111 | */ | 117 | */ |
112 | DATA_DATA | 118 | DATA_DATA |
@@ -124,3 +130,9 @@ SECTIONS | |||
124 | STABS_DEBUG | 130 | STABS_DEBUG |
125 | .comment 0 : { *(.comment) } | 131 | .comment 0 : { *(.comment) } |
126 | } | 132 | } |
133 | |||
134 | /* | ||
135 | * The HYP init code can't be more than a page long. | ||
136 | */ | ||
137 | ASSERT(((__hyp_idmap_text_start + PAGE_SIZE) > __hyp_idmap_text_end), | ||
138 | "HYP init code too big") | ||