acrn-hypervisor/hypervisor/boot/include/reloc.h

39 lines
1.1 KiB
C

/*
* Copyright (C) <2018> Intel Corporation
* SPDX-License-Identifier: BSD-3-Clause
*/
#ifndef RELOCATE_H
#define RELOCATE_H
extern void relocate(void);
extern uint64_t get_hv_image_delta(void);
extern uint64_t get_hv_image_base(void);
extern uint64_t read_trampoline_sym(const void *sym);
extern void write_trampoline_sym(const void *sym, uint64_t val);
extern uint64_t prepare_trampoline(void);
/* external symbols that are helpful for relocation */
extern uint8_t _DYNAMIC[1];
extern const uint8_t ld_trampoline_load;
extern uint8_t ld_trampoline_start;
extern uint8_t ld_trampoline_end;
extern const uint64_t ld_trampoline_size;
extern uint8_t cpu_primary_start_32;
extern uint8_t cpu_primary_start_64;
extern uint8_t trampoline_fixup_cs;
extern uint8_t trampoline_fixup_ip;
extern uint8_t trampoline_fixup_target;
extern uint8_t CPU_Boot_Page_Tables_Start;
extern uint8_t CPU_Boot_Page_Tables_ptr;
extern uint8_t trampoline_pdpt_addr;
extern uint8_t trampoline_gdt_ptr;
extern uint8_t trampoline_start64_fixup;
extern uint8_t trampoline_spinlock_ptr;
extern uint64_t trampoline_start16_paddr;
#endif /* RELOCATE_H */