mirror of
https://github.com/projectacrn/acrn-hypervisor.git
synced 2025-05-04 06:26:54 +00:00
This is to enable relocation for code32. - RIP relative addressing is available in x86-64 only so we manually add relocation delta to the target symbols to fixup code32. - both code32 and code64 need to load GDT hence both need to fixup GDT pointer. This patch declares separate GDT pointer cpu_primary64_gdt_ptr for code64 to avoid double fixup. - manually fixup cpu_primary64_gdt_ptr in code64, but not rely on relocate() to do that. Otherwise it's very confusing that symbols from same file could be fixed up externally by relocate() or self-relocated. - to make it clear, define a new symbol ld_entry_end representing the end of the boot code that needs manually fixup, and use this symbol in relocate() to filter out all symbols belong to the entry sections. Tracked-On: #4441 Reviewed-by: Fengwei Yin <fengwei.yin@intel.com> Signed-off-by: Zide Chen <zide.chen@intel.com>
19 lines
402 B
C
19 lines
402 B
C
/*
|
|
* Copyright (C) 2019 Intel Corporation. All rights reserved.
|
|
*
|
|
* SPDX-License-Identifier: BSD-3-Clause
|
|
*/
|
|
|
|
#ifndef LD_SYM_H
|
|
#define LD_SYM_H
|
|
|
|
extern uint8_t ld_text_end;
|
|
extern uint8_t ld_bss_start;
|
|
extern uint8_t ld_bss_end;
|
|
extern uint8_t ld_entry_end;
|
|
extern const uint8_t ld_trampoline_load;
|
|
extern uint8_t ld_trampoline_start;
|
|
extern uint8_t ld_trampoline_end;
|
|
|
|
#endif /* LD_SYM_H */
|