@@ -107,8 +107,8 @@ void _relocate(void)
107
107
* absolute addresses
108
108
*/
109
109
trampoline_end = (uint64_t )_ld_trampoline_end - delta ;
110
- primary_32_start = (uint64_t )cpu_primary_start_32 - delta ;
111
- primary_32_end = (uint64_t )cpu_primary_start_64 - delta ;
110
+ primary_32_start = (uint64_t )( & cpu_primary_start_32 ) - delta ;
111
+ primary_32_end = (uint64_t )( & cpu_primary_start_64 ) - delta ;
112
112
113
113
while (start < end ) {
114
114
if ((ELF64_R_TYPE (start -> r_info )) == R_X86_64_RELATIVE ) {
@@ -168,47 +168,50 @@ static void update_trampoline_code_refs(uint64_t dest_pa)
168
168
* trampoline code starts in real mode,
169
169
* so the target addres is HPA
170
170
*/
171
- val = dest_pa + trampoline_relo_addr (trampoline_fixup_target );
171
+ val = dest_pa + trampoline_relo_addr (& trampoline_fixup_target );
172
172
173
- ptr = HPA2HVA (dest_pa + trampoline_relo_addr (trampoline_fixup_cs ));
173
+ ptr = HPA2HVA (dest_pa + trampoline_relo_addr (& trampoline_fixup_cs ));
174
174
* (uint16_t * )(ptr ) = (uint16_t )((val >> 4 ) & 0xFFFFU );
175
175
176
- ptr = HPA2HVA (dest_pa + trampoline_relo_addr (trampoline_fixup_ip ));
176
+ ptr = HPA2HVA (dest_pa + trampoline_relo_addr (& trampoline_fixup_ip ));
177
177
* (uint16_t * )(ptr ) = (uint16_t )(val & 0xfU );
178
178
179
179
/* Update temporary page tables */
180
- ptr = HPA2HVA (dest_pa + trampoline_relo_addr (CPU_Boot_Page_Tables_ptr ));
180
+ ptr = HPA2HVA (dest_pa +
181
+ trampoline_relo_addr (& CPU_Boot_Page_Tables_ptr ));
181
182
* (uint32_t * )(ptr ) += (uint32_t )dest_pa ;
182
183
183
- ptr = HPA2HVA (dest_pa + trampoline_relo_addr (CPU_Boot_Page_Tables_Start ));
184
+ ptr = HPA2HVA (dest_pa +
185
+ trampoline_relo_addr (& CPU_Boot_Page_Tables_Start ));
184
186
* (uint64_t * )(ptr ) += dest_pa ;
185
187
186
- ptr = HPA2HVA (dest_pa + trampoline_relo_addr (trampoline_pdpt_addr ));
188
+ ptr = HPA2HVA (dest_pa + trampoline_relo_addr (& trampoline_pdpt_addr ));
187
189
for (i = 0 ; i < 4 ; i ++ )
188
190
* (uint64_t * )(ptr + sizeof (uint64_t ) * i ) += dest_pa ;
189
191
190
192
/* update the gdt base pointer with relocated offset */
191
- ptr = HPA2HVA (dest_pa + trampoline_relo_addr (trampoline_gdt_ptr ));
193
+ ptr = HPA2HVA (dest_pa + trampoline_relo_addr (& trampoline_gdt_ptr ));
192
194
* (uint64_t * )(ptr + 2 ) += dest_pa ;
193
195
194
196
/* update trampoline jump pointer with relocated offset */
195
- ptr = HPA2HVA (dest_pa + trampoline_relo_addr (trampoline_start64_fixup ));
197
+ ptr = HPA2HVA (dest_pa +
198
+ trampoline_relo_addr (& trampoline_start64_fixup ));
196
199
* (uint32_t * )ptr += dest_pa ;
197
200
198
201
/* update trampoline's main entry pointer */
199
202
ptr = HPA2HVA (dest_pa + trampoline_relo_addr (main_entry ));
200
203
* (uint64_t * )ptr += get_hv_image_delta ();
201
204
202
205
/* update trampoline's spinlock pointer */
203
- ptr = HPA2HVA (dest_pa + trampoline_relo_addr (trampoline_spinlock_ptr ));
206
+ ptr = HPA2HVA (dest_pa + trampoline_relo_addr (& trampoline_spinlock_ptr ));
204
207
* (uint64_t * )ptr += get_hv_image_delta ();
205
208
}
206
209
207
210
uint64_t prepare_trampoline (void )
208
211
{
209
212
uint64_t size , dest_pa ;
210
213
211
- size = (uint64_t )_ld_trampoline_end - ( uint64_t ) _ld_trampoline_start ;
214
+ size = (uint64_t )( & _ld_trampoline_end - & _ld_trampoline_start ) ;
212
215
#ifndef CONFIG_EFI_STUB
213
216
dest_pa = e820_alloc_low_memory (CONFIG_LOW_RAM_SIZE );
214
217
#else
@@ -218,7 +221,8 @@ uint64_t prepare_trampoline(void)
218
221
pr_dbg ("trampoline code: %llx size %x" , dest_pa , size );
219
222
220
223
/* Copy segment for AP initialization code below 1MB */
221
- memcpy_s (HPA2HVA (dest_pa ), (size_t )size , _ld_trampoline_load , (size_t )size );
224
+ memcpy_s (HPA2HVA (dest_pa ), (size_t )size , & _ld_trampoline_load ,
225
+ (size_t )size );
222
226
update_trampoline_code_refs (dest_pa );
223
227
trampoline_start16_paddr = dest_pa ;
224
228
0 commit comments