From 08a9fcdb80b28115ce3637f57f9c94ec8dfcfbc9 Mon Sep 17 00:00:00 2001 From: Andrew Boie Date: Tue, 11 Jul 2017 09:59:30 -0700 Subject: [PATCH] x86: ia32: set access based on linker regions This will set program text and rodata as read-only even in non-XIP systems. Signed-off-by: Andrew Boie --- arch/x86/soc/ia32/soc.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/arch/x86/soc/ia32/soc.c b/arch/x86/soc/ia32/soc.c index 78b0fd4cb03..13c61aacb58 100644 --- a/arch/x86/soc/ia32/soc.c +++ b/arch/x86/soc/ia32/soc.c @@ -18,21 +18,19 @@ #include #include #include +#include #ifdef CONFIG_X86_MMU +/* Mark text and rodata as read-only, for XIP rest of flash unmapped */ +MMU_BOOT_REGION((u32_t)&_image_rom_start, (u32_t)&_image_rom_size, + MMU_ENTRY_READ); -#ifdef CONFIG_XIP -MMU_BOOT_REGION(CONFIG_PHYS_LOAD_ADDR, CONFIG_ROM_SIZE*1024, MMU_ENTRY_READ); +/* From _image_ram_start to the end of all RAM, read/write */ +MMU_BOOT_REGION((u32_t)&_image_ram_start, (u32_t)&_image_ram_all, + MMU_ENTRY_WRITE); -MMU_BOOT_REGION(CONFIG_PHYS_RAM_ADDR, CONFIG_RAM_SIZE*1024, MMU_ENTRY_WRITE); -#else -MMU_BOOT_REGION(CONFIG_PHYS_LOAD_ADDR, CONFIG_RAM_SIZE*1024, MMU_ENTRY_WRITE); -#endif /*CONFIG_XIP */ - -MMU_BOOT_REGION(CONFIG_LOAPIC_BASE_ADDRESS, 4*1024, MMU_ENTRY_WRITE); -MMU_BOOT_REGION(CONFIG_IOAPIC_BASE_ADDRESS, 1024*1024, MMU_ENTRY_WRITE); - -/*HPET */ -MMU_BOOT_REGION(CONFIG_HPET_TIMER_BASE_ADDRESS, 4*1024, MMU_ENTRY_WRITE); +MMU_BOOT_REGION(CONFIG_LOAPIC_BASE_ADDRESS, KB(4), MMU_ENTRY_WRITE); +MMU_BOOT_REGION(CONFIG_IOAPIC_BASE_ADDRESS, MB(1), MMU_ENTRY_WRITE); +MMU_BOOT_REGION(CONFIG_HPET_TIMER_BASE_ADDRESS, KB(4), MMU_ENTRY_WRITE); #endif /* CONFIG_X86_MMU*/