hw: introduce kernel/user address space split
* introduces central memory map for core/kernel * on 32-bit platforms the kernel/core starts at 0x80000000 * on 64-bit platforms the kernel/core starts at 0xffffffc000000000 * mark kernel/core mappings as global ones (tagged TLB) * move the exception vector to begin of core's binary, thereby bootstrap knows from where to map it appropriately * do not map boot modules into core anymore * constrain core's virtual heap memory area * differentiate in between user's and core's main thread's UTCB, which now resides inside the kernel segment Ref #2091
This commit is contained in:
committed by
Christian Helmuth
parent
362337a9e8
commit
42db1e112b
@@ -6,13 +6,13 @@ proc binary_name_timer { } { return "hw_timer_drv" }
|
||||
proc run_boot_string { } { return "\nkernel initialized" }
|
||||
|
||||
proc bootstrap_link_address { } {
|
||||
if {[have_spec "odroid_xu"]} { return "0x80000000" }
|
||||
if {[have_spec "odroid_xu"]} { return "0x81000000" }
|
||||
if {[have_spec "pbxa9"]} { return "0x70000000" }
|
||||
if {[have_spec "usb_armory"]} { return "0x72000000" }
|
||||
if {[have_spec "x86_64"]} { return "0x00200000" }
|
||||
if {[have_spec "wand_quad"]} { return "0x10001000" }
|
||||
if {[have_spec "imx53_qsb"]} { return "0x70010000" }
|
||||
if {[have_spec "arndale"]} { return "0x80000000" }
|
||||
if {[have_spec "arndale"]} { return "0x81000000" }
|
||||
if {[have_spec "panda"]} { return "0x81000000" }
|
||||
if {[have_spec "zynq"]} { return "0x00100000" }
|
||||
if {[have_spec "riscv"]} { return "0x81000000" }
|
||||
@@ -23,9 +23,9 @@ proc bootstrap_link_address { } {
|
||||
}
|
||||
|
||||
proc core_link_address { } {
|
||||
if {[have_spec "riscv"]} { return "0x1000000" }
|
||||
scan [bootstrap_link_address] 0x%x link_address
|
||||
return [format 0x%08x [expr {$link_address + 0x10000000}]]
|
||||
if {[have_spec "64bit"]} { return "0xffffffc000000000" }
|
||||
if {[have_spec "32bit"]} { return "0x80000000" }
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -770,7 +770,7 @@ proc build_core {lib modules target link_address} {
|
||||
|
||||
# architecture dependent definitions
|
||||
set arch {}
|
||||
if {[have_spec "x86_64"]} { set arch -m64 }
|
||||
if {[have_spec "x86_64"]} { set arch { -m64 -mcmodel=large } }
|
||||
if {[have_spec "x86_32"]} { set arch -m32 }
|
||||
|
||||
# determine the libgcc
|
||||
|
||||
Reference in New Issue
Block a user