relocator: Switch to own page table while moving chunks

We need to avoid clobbering existing table between starting of chunk movers
and the moment we install target page table. Generate temporary table for
this rather than hoping that we don't clobber existing one.

Fixes 64-bit GhostBSD on 64-bit EFI.

Signed-off-by: Vladimir Serbinenko <phcoder@gmail.com>
Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com>
This commit is contained in:
Vladimir Serbinenko authored and Daniel Kiper committed 2025-08-15 00:23:45 +02:00
1 parent 67a95527b5
commit 6898fcf74d
5 files changed
+123 -2

No files matched your search

+6
View File
@@ -45,6 +45,7 @@ grub_size_t grub_relocator_align = sizeof (grub_uint32_t);
grub_size_t grub_relocator_forward_size;
grub_size_t grub_relocator_backward_size;
grub_size_t grub_relocator_jumper_size = JUMP_SIZEOF + REGW_SIZEOF;
grub_size_t grub_relocator_preamble_size = 0;
void
grub_cpu_relocator_init (void)
@@ -53,6 +54,11 @@ grub_cpu_relocator_init (void)
grub_relocator_backward_size = RELOCATOR_SIZEOF(backward);
}
void
grub_cpu_relocator_preamble (void *rels __attribute__ ((unused)))
{
}
static void
write_reg (int regn, grub_uint32_t val, void **target)
{