diff --git a/sys/kern/link_elf.c b/sys/kern/link_elf.c index 03f9ae63d9a..266b9d0b06b 100644 --- a/sys/kern/link_elf.c +++ b/sys/kern/link_elf.c @@ -51,6 +51,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include @@ -389,6 +390,13 @@ link_elf_link_common_finish(linker_file_t lf) extern vm_offset_t __startkernel, __endkernel; +static unsigned long kern_relbase = KERNBASE; + +SYSCTL_ULONG(_kern, OID_AUTO, base_address, CTLFLAG_RD, + SYSCTL_NULL_ULONG_PTR, KERNBASE, "Kernel base address"); +SYSCTL_ULONG(_kern, OID_AUTO, relbase_address, CTLFLAG_RD, + &kern_relbase, 0, "Kernel relocated base address"); + static void link_elf_init(void* arg) { @@ -431,6 +439,7 @@ link_elf_init(void* arg) #ifdef __powerpc__ linker_kernel_file->address = (caddr_t)__startkernel; linker_kernel_file->size = (intptr_t)(__endkernel - __startkernel); + kern_relbase = (unsigned long)__startkernel; #else linker_kernel_file->address += KERNBASE; linker_kernel_file->size = -(intptr_t)linker_kernel_file->address;