First part of virtual addr support in relocator
This commit is contained in:
parent
ba2f141cb5
commit
368c17f85d
4 changed files with 110 additions and 75 deletions
|
@ -28,4 +28,28 @@
|
|||
#define GRUB_MEMORY_CPU_AMD64_MSR 0xc0000080
|
||||
#define GRUB_MEMORY_CPU_AMD64_MSR_ON 0x00000100
|
||||
|
||||
#ifndef ASM_FILE
|
||||
|
||||
typedef grub_addr_t grub_phys_addr_t;
|
||||
|
||||
static inline grub_phys_addr_t
|
||||
grub_vtop (void *a)
|
||||
{
|
||||
return (grub_phys_addr_t) a;
|
||||
}
|
||||
|
||||
static inline void *
|
||||
grub_map_memory (grub_phys_addr_t a, grub_size_t size __attribute__ ((unused)))
|
||||
{
|
||||
return (void *) a;
|
||||
}
|
||||
|
||||
static inline void
|
||||
grub_unmap_memory (void *a __attribute__ ((unused)),
|
||||
grub_size_t size __attribute__ ((unused)))
|
||||
{
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* ! GRUB_MEMORY_CPU_HEADER */
|
||||
|
|
|
@ -31,8 +31,9 @@ extern grub_size_t grub_relocator_jumper_size;
|
|||
void
|
||||
grub_cpu_relocator_init (void);
|
||||
grub_err_t
|
||||
grub_relocator_prepare_relocs (struct grub_relocator *rel, grub_addr_t addr,
|
||||
grub_addr_t *relstart, grub_size_t *relsize);
|
||||
grub_relocator_prepare_relocs (struct grub_relocator *rel,
|
||||
void *addr,
|
||||
void **relstart, grub_size_t *relsize);
|
||||
void grub_cpu_relocator_forward (void *rels, void *src, void *tgt,
|
||||
grub_size_t size);
|
||||
void grub_cpu_relocator_backward (void *rels, void *src, void *tgt,
|
||||
|
@ -72,7 +73,7 @@ struct grub_relocator_mmap_event
|
|||
COLLISION_START = 10,
|
||||
COLLISION_END = COLLISION_START | 1
|
||||
} type;
|
||||
grub_addr_t pos;
|
||||
grub_phys_addr_t pos;
|
||||
union
|
||||
{
|
||||
struct
|
||||
|
@ -91,10 +92,12 @@ struct grub_relocator_mmap_event
|
|||
/* Return 0 on failure, 1 on success. The failure here
|
||||
can be very time-expensive, so please make sure fill events is accurate. */
|
||||
#if GRUB_RELOCATOR_HAVE_FIRMWARE_REQUESTS
|
||||
int grub_relocator_firmware_alloc_region (grub_addr_t start, grub_size_t size);
|
||||
int grub_relocator_firmware_alloc_region (grub_phys_addr_t start,
|
||||
grub_size_t size);
|
||||
unsigned grub_relocator_firmware_fill_events (struct grub_relocator_mmap_event *events);
|
||||
unsigned grub_relocator_firmware_get_max_events (void);
|
||||
void grub_relocator_firmware_free_region (grub_addr_t start, grub_size_t size);
|
||||
void grub_relocator_firmware_free_region (grub_phys_addr_t start,
|
||||
grub_size_t size);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue