Map LWK TEXT to the end of Linux modules section (0xFFFFFFFFFE800000)
This commit is contained in:
committed by
Masamichi Takagi
parent
1cf7fad15a
commit
7836aa0136
@ -58,8 +58,14 @@
|
|||||||
#define MAP_ST_START 0xffff800000000000UL
|
#define MAP_ST_START 0xffff800000000000UL
|
||||||
#define MAP_VMAP_START 0xffff850000000000UL
|
#define MAP_VMAP_START 0xffff850000000000UL
|
||||||
#define MAP_FIXED_START 0xffff860000000000UL
|
#define MAP_FIXED_START 0xffff860000000000UL
|
||||||
#define MAP_KERNEL_START 0xffff870000000000UL
|
|
||||||
#define LINUX_PAGE_OFFSET 0xffff880000000000UL
|
#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 STACK_TOP(region) ((region)->user_end)
|
||||||
|
|
||||||
#define MAP_VMAP_SIZE 0x0000000100000000UL
|
#define MAP_VMAP_SIZE 0x0000000100000000UL
|
||||||
|
|||||||
@ -2689,14 +2689,14 @@ unsigned long virt_to_phys(void *v)
|
|||||||
{
|
{
|
||||||
unsigned long va = (unsigned long)v;
|
unsigned long va = (unsigned long)v;
|
||||||
|
|
||||||
if (va >= LINUX_PAGE_OFFSET) {
|
if (va >= MAP_KERNEL_START) {
|
||||||
return va - LINUX_PAGE_OFFSET;
|
|
||||||
}
|
|
||||||
else if (va >= MAP_KERNEL_START) {
|
|
||||||
dkprintf("%s: MAP_KERNEL_START <= 0x%lx <= LINUX_PAGE_OFFSET\n",
|
dkprintf("%s: MAP_KERNEL_START <= 0x%lx <= LINUX_PAGE_OFFSET\n",
|
||||||
__FUNCTION__, va);
|
__FUNCTION__, va);
|
||||||
return va - MAP_KERNEL_START + x86_kernel_phys_base;
|
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) {
|
else if (va >= MAP_FIXED_START) {
|
||||||
return va - MAP_FIXED_START;
|
return va - MAP_FIXED_START;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,7 +5,7 @@ PHDRS
|
|||||||
}
|
}
|
||||||
SECTIONS
|
SECTIONS
|
||||||
{
|
{
|
||||||
. = 0xffff870000001000;
|
. = 0xFFFFFFFFFE801000;
|
||||||
_head = .;
|
_head = .;
|
||||||
|
|
||||||
.text : {
|
.text : {
|
||||||
|
|||||||
Reference in New Issue
Block a user