x86: add CONFIG_X86_KERNEL_OFFSET
Previously, DTS specification of physical RAM bounds did not correspond to the actual bounds of system RAM as the first megabyte was being skipped. There were reasons for this - the first 1MB on PC-like systems is a no-man's-land of reserved memory regions, but we need DTS to accurately capture physical memory bounds. Instead, we introduce a config option which can apply an offset to the beginning of physical memory, and apply this to the "RAM" region defined in the linker scripts. This also fixes a problem where an extra megabyte was being added to the size of system RAM. Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
This commit is contained in:
parent
150e18de6e
commit
87dd0492db
9 changed files with 38 additions and 15 deletions
|
@ -22,10 +22,13 @@
|
|||
#define PHYS_RAM_ADDR DT_REG_ADDR(DT_CHOSEN(zephyr_sram))
|
||||
#define PHYS_RAM_SIZE DT_REG_SIZE(DT_CHOSEN(zephyr_sram))
|
||||
|
||||
#define KERNEL_BASE_ADDR (PHYS_RAM_ADDR + CONFIG_X86_KERNEL_OFFSET)
|
||||
#define KERNEL_RAM_SIZE (PHYS_RAM_SIZE - CONFIG_X86_KERNEL_OFFSET)
|
||||
|
||||
#ifdef CONFIG_XIP
|
||||
#define PHYS_LOAD_ADDR DT_REG_ADDR(DT_CHOSEN(zephyr_flash))
|
||||
#else /* !CONFIG_XIP */
|
||||
#define PHYS_LOAD_ADDR PHYS_RAM_ADDR
|
||||
#define PHYS_LOAD_ADDR KERNEL_BASE_ADDR
|
||||
#endif /* CONFIG_XIP */
|
||||
|
||||
MEMORY
|
||||
|
@ -33,7 +36,7 @@ MEMORY
|
|||
#ifdef CONFIG_XIP
|
||||
ROM (rx) : ORIGIN = PHYS_LOAD_ADDR, LENGTH = DT_REG_SIZE(DT_CHOSEN(zephyr_flash))
|
||||
#endif /* CONFIG_XIP */
|
||||
RAM (wx) : ORIGIN = PHYS_RAM_ADDR, LENGTH = PHYS_RAM_SIZE
|
||||
RAM (wx) : ORIGIN = KERNEL_BASE_ADDR, LENGTH = KERNEL_RAM_SIZE
|
||||
|
||||
/*
|
||||
* It doesn't matter where this region goes as it is stripped from the
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue