Map LWK TEXT to the end of Linux modules section (0xFFFFFFFFFE800000)

Cherry-pick of b9827b25883a9622058cb78006e705f09eaf9a84
This commit is contained in:
Balazs Gerofi
2018-02-19 11:07:49 +09:00
parent 7982008b5b
commit b888f31b30
3 changed files with 12 additions and 6 deletions

View File

@ -58,8 +58,14 @@
#define MAP_ST_START 0xffff800000000000UL
#define MAP_VMAP_START 0xffff850000000000UL
#define MAP_FIXED_START 0xffff860000000000UL
#define MAP_KERNEL_START 0xffff870000000000UL
#define LINUX_PAGE_OFFSET 0xffff880000000000UL
/*
* MAP_KERNEL_START is 8MB below MODULES_END in Linux.
* Placing the LWK image in the virtual address space at the end of
* the Linux modules section enables us to map the LWK TEXT in Linux
* as well, so that Linux can also call into LWK text.
*/
#define MAP_KERNEL_START 0xFFFFFFFFFE800000UL
#define STACK_TOP(region) ((region)->user_end)
#define MAP_VMAP_SIZE 0x0000000100000000UL

View File

@ -2692,14 +2692,14 @@ unsigned long virt_to_phys(void *v)
{
unsigned long va = (unsigned long)v;
if (va >= LINUX_PAGE_OFFSET) {
return va - LINUX_PAGE_OFFSET;
}
else if (va >= MAP_KERNEL_START) {
if (va >= MAP_KERNEL_START) {
dkprintf("%s: MAP_KERNEL_START <= 0x%lx <= LINUX_PAGE_OFFSET\n",
__FUNCTION__, va);
return va - MAP_KERNEL_START + x86_kernel_phys_base;
}
else if (va >= LINUX_PAGE_OFFSET) {
return va - LINUX_PAGE_OFFSET;
}
else if (va >= MAP_FIXED_START) {
return va - MAP_FIXED_START;
}

View File

@ -5,7 +5,7 @@ PHDRS
}
SECTIONS
{
. = 0xffff870000001000;
. = 0xFFFFFFFFFE801000;
_head = .;
.text : {