Remove STARTUP_PAGETABLE_ADDR from the ARM configs and replace it with

memory at the end of the kernel.

This helps reduce the SoC and board specific configuration required.

Reviewed by:	bsdimp
Tested by:	jmg (armeb), br
This commit is contained in:
andrew 2014-01-28 09:12:04 +00:00
parent f1267848bf
commit ea49382feb
45 changed files with 26 additions and 59 deletions

View File

@ -16,8 +16,6 @@ options KERNPHYSADDR=0x40200000
makeoptions KERNVIRTADDR=0xc0200000
options KERNVIRTADDR=0xc0200000
options STARTUP_PAGETABLE_ADDR=0x48000000
options ARM_L2_PIPT
options IPI_IRQ_START=0

View File

@ -16,6 +16,4 @@ options KERNPHYSADDR=0x40200000
makeoptions KERNVIRTADDR=0xc0200000
options KERNVIRTADDR=0xc0200000
options STARTUP_PAGETABLE_ADDR=0x48000000
files "../allwinner/files.a10"

View File

@ -144,9 +144,15 @@ disable_mmu:
nop
mov pc, r7
Lunmapped:
#ifdef STARTUP_PAGETABLE_ADDR
/* build page table from scratch */
ldr r0, Lstartup_pagetable
/*
* Build page table from scratch.
*/
/* Load the page tables physical address */
ldr r1, Lstartup_pagetable
ldr r2, =(KERNVIRTADDR - KERNPHYSADDR)
sub r0, r1, r2
adr r4, mmu_init_table
b 3f
@ -197,7 +203,6 @@ Lunmapped:
nop
CPWAIT(r0)
#endif
mmu_done:
nop
adr r1, .Lstart
@ -231,7 +236,6 @@ virt_done:
adr r0, .Lmainreturned
b _C_LABEL(panic)
/* NOTREACHED */
#ifdef STARTUP_PAGETABLE_ADDR
#define MMU_INIT(va,pa,n_sec,attr) \
.word n_sec ; \
.word 4*((va)>>L1_S_SHIFT) ; \
@ -246,7 +250,7 @@ Lreal_start:
Lend:
.word _edata
Lstartup_pagetable:
.word STARTUP_PAGETABLE_ADDR
.word pagetable
#ifdef SMP
Lstartup_pagetable_secondary:
.word temp_pagetable
@ -272,10 +276,9 @@ mmu_init_table:
MMU_INIT(0x48000000, 0x48000000, 1, L1_TYPE_S|L1_SHARED|L1_S_C|L1_S_AP(AP_KRW))
#endif /* SMP */
.word 0 /* end of table */
#endif
.Lstart:
.word _edata
.word _end
.word _ebss
.word svcstk + INIT_ARM_STACK_SIZE
.Lvirt_done:
@ -293,6 +296,15 @@ mmu_init_table:
svcstk:
.space INIT_ARM_STACK_SIZE
/*
* Memory for the initial pagetable. We are unable to place this in
* the bss as this will be cleared after the table is loaded.
*/
.section ".init_pagetable"
.align 14 /* 16KiB aligned */
pagetable:
.space L1_TABLE_SIZE
.text
.align 0

View File

@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91"
options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
options KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000

View File

@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91"
options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
options KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000

View File

@ -1,7 +1,6 @@
# $FreeBSD$
include "../at91/std.at91sam9"
options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
options KERNPHYSADDR=0x20000000

View File

@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91"
options STARTUP_PAGETABLE_ADDR=0x20000000
makeoptions KERNPHYSADDR=0x20100000
options KERNPHYSADDR=0x20100000
makeoptions KERNVIRTADDR=0xc0100000

View File

@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91sam9"
options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
options KERNPHYSADDR=0x20000000

View File

@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91"
options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
options KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000

View File

@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91sam9"
options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
options KERNPHYSADDR=0x20000000

View File

@ -1,7 +1,6 @@
# $FreeBSD$
include "../at91/std.at91sam9"
options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
options KERNPHYSADDR=0x20000000

View File

@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91sam9"
options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
options KERNPHYSADDR=0x20000000

View File

@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91sam9"
options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
options KERNPHYSADDR=0x20000000

View File

@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91sam9g45"
options STARTUP_PAGETABLE_ADDR=0x70800000
makeoptions KERNPHYSADDR=0x70008000
options KERNPHYSADDR=0x70008000
makeoptions KERNVIRTADDR=0xc0008000

View File

@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91"
options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
options KERNPHYSADDR=0x20000000

View File

@ -7,6 +7,5 @@ makeoptions KERNVIRTADDR=0xc0100000
options KERNPHYSADDR=0x00100000
makeoptions KERNPHYSADDR=0x00100000
options PHYSADDR=0x00000000
options STARTUP_PAGETABLE_ADDR=0x01000000
options FREEBSD_BOOT_LOADER
options LINUX_BOOT_ABI

View File

@ -10,7 +10,6 @@ include "../at91/std.atmel"
# Typical values for most SoCs and board configurations. Will not work for
# at91sam9g45 or on some boards with non u-boot boot loaders.
options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
options KERNPHYSADDR=0x20000000

View File

@ -25,7 +25,6 @@ ident CNS11XXNAS
#options KERNVIRTADDR=0xc0200000 # Used in ldscript.arm
#options FLASHADDR=0x50000000
#options LOADERRAMADDR=0x00000000
#options STARTUP_PAGETABLE_ADDR=0x10000000
include "../econa/std.econa"

View File

@ -24,7 +24,6 @@ options KERNPHYSADDR=0x00200000
options KERNVIRTADDR=0xc0200000 # Used in ldscript.arm
options COUNTS_PER_SEC=400000000
options STARTUP_PAGETABLE_ADDR=0x00000000
include "../xscale/i8134x/std.crb"
makeoptions MODULES_OVERRIDE=""

View File

@ -23,7 +23,6 @@ options PHYSADDR=0xa0000000
options KERNPHYSADDR=0xa0200000
options KERNVIRTADDR=0xc0200000 # Used in ldscript.arm
options STARTUP_PAGETABLE_ADDR=0xa0000000
#options ARM32_NEW_VM_LAYOUT
include "../xscale/i80321/std.ep80219"
makeoptions MODULES_OVERRIDE=""

View File

@ -30,7 +30,6 @@ options PHYSADDR=0xa0000000
options KERNPHYSADDR=0xa0200000
options KERNVIRTADDR=0xc0200000 # Used in ldscript.arm
options STARTUP_PAGETABLE_ADDR=0xa0000000
include "../xscale/pxa/std.pxa"
makeoptions MODULES_OVERRIDE=""

View File

@ -25,7 +25,6 @@ options KERNVIRTADDR=0xc0200000 # Used in ldscript.arm
options FLASHADDR=0xf0000000
options LOADERRAMADDR=0x00000000
options STARTUP_PAGETABLE_ADDR=0xa0000000
include "../xscale/i80321/std.iq31244"
makeoptions MODULES_OVERRIDE=""

View File

@ -25,7 +25,6 @@ ident NSLU
#options KERNVIRTADDR=0xc0200000 # Used in ldscript.arm
#options FLASHADDR=0x50000000
#options LOADERRAMADDR=0x00000000
#options STARTUP_PAGETABLE_ADDR=0x10000000
include "../xscale/ixp425/std.ixp425"
# NB: memory mapping is defined in std.avila (see also comment above)

View File

@ -29,7 +29,6 @@ makeoptions KERNVIRTADDR=0xc0100000
options KERNPHYSADDR=0x00100000
makeoptions KERNPHYSADDR=0x00100000
options PHYSADDR=0x00000000
options STARTUP_PAGETABLE_ADDR=0x01000000
options FREEBSD_BOOT_LOADER
options LINUX_BOOT_ABI

View File

@ -12,6 +12,5 @@ options KERNPHYSADDR=0x01000000
options KERNVIRTADDR=0xc1000000 # Used in ldscript.arm
options FLASHADDR=0xD0000000
options LOADERRAMADDR=0x00000000
options STARTUP_PAGETABLE_ADDR=0x00100000
options NO_EVENTTIMERS

View File

@ -9,7 +9,6 @@ makeoptions KERNVIRTADDR=0xc0100000
options KERNPHYSADDR=0x90100000
makeoptions KERNPHYSADDR=0x90100000
options PHYSADDR=0x90000000
options STARTUP_PAGETABLE_ADDR=0x91000000
files "../freescale/imx/files.imx51"

View File

@ -9,7 +9,6 @@ makeoptions KERNVIRTADDR=0xc0100000
options KERNPHYSADDR=0x70100000
makeoptions KERNPHYSADDR=0x70100000
options PHYSADDR=0x70000000
options STARTUP_PAGETABLE_ADDR=0x71000000
files "../freescale/imx/files.imx53"

View File

@ -9,7 +9,6 @@ makeoptions KERNVIRTADDR = 0xc2000000
options KERNPHYSADDR = 0x12000000
makeoptions KERNPHYSADDR = 0x12000000
options PHYSADDR = 0x10000000
options STARTUP_PAGETABLE_ADDR = 0x11f00000
files "../freescale/imx/files.imx6"

View File

@ -13,8 +13,6 @@ options KERNPHYSADDR=0x80100000
makeoptions KERNVIRTADDR=0xc0100000
options KERNVIRTADDR=0xc0100000
options STARTUP_PAGETABLE_ADDR=0x81000000
options ARM_L2_PIPT
files "../freescale/vybrid/files.vybrid"

View File

@ -8,7 +8,6 @@ cpu CPU_ARM9
machine arm
makeoptions CONF_CFLAGS="-march=armv5te"
options PHYSADDR=0x80000000
options STARTUP_PAGETABLE_ADDR=0x80000000
makeoptions KERNPHYSADDR=0x80100000
options KERNPHYSADDR=0x80100000
makeoptions KERNVIRTADDR=0xc0100000

View File

@ -12,6 +12,5 @@ makeoptions KERNVIRTADDR=0xc0200000
options KERNPHYSADDR=0x00200000
options KERNVIRTADDR=0xc0200000
options PHYSADDR=0x00000000
options STARTUP_PAGETABLE_ADDR=0x00100000
options ARM_L2_PIPT

View File

@ -9,4 +9,3 @@ makeoptions KERNVIRTADDR=0xc0900000
options KERNPHYSADDR=0x00900000
options KERNVIRTADDR=0xc0900000
options PHYSADDR=0x00000000
options STARTUP_PAGETABLE_ADDR=0x00100000

View File

@ -12,4 +12,3 @@ makeoptions KERNVIRTADDR=0xc0900000
options KERNPHYSADDR=0x00900000
options KERNVIRTADDR=0xc0900000
options PHYSADDR=0x00000000
options STARTUP_PAGETABLE_ADDR=0x00100000

View File

@ -9,4 +9,3 @@ makeoptions KERNVIRTADDR=0xc0900000
options KERNPHYSADDR=0x00900000
options KERNVIRTADDR=0xc0900000
options PHYSADDR=0x00000000
options STARTUP_PAGETABLE_ADDR=0x00100000

View File

@ -9,7 +9,6 @@ makeoptions KERNVIRTADDR=0xc0900000
options KERNPHYSADDR=0x00900000
options KERNVIRTADDR=0xc0900000
options PHYSADDR=0x00000000
options STARTUP_PAGETABLE_ADDR=0x00100000
options LOADERRAMADDR=0x00000000
options FLASHADDR=0x00008000

View File

@ -17,8 +17,6 @@ options KERNPHYSADDR=0x60400000
makeoptions KERNVIRTADDR=0xc0400000
options KERNVIRTADDR=0xc0400000
options STARTUP_PAGETABLE_ADDR=0x60200000
options ARM_L2_PIPT
options IPI_IRQ_START=0

View File

@ -6,6 +6,5 @@ makeoptions KERNVIRTADDR=0xc0000000
options KERNPHYSADDR=0x30000000
options KERNVIRTADDR=0xc0000000
options PHYSADDR=0x30000000
options STARTUP_PAGETABLE_ADDR=0x30800000
options NO_EVENTTIMERS

View File

@ -13,8 +13,6 @@ options KERNPHYSADDR=0x40f00000
makeoptions KERNVIRTADDR=0xc0f00000
options KERNVIRTADDR=0xc0f00000
options STARTUP_PAGETABLE_ADDR=0x40100000
options ARM_L2_PIPT
options IPI_IRQ_START=0

View File

@ -11,6 +11,4 @@ options KERNPHYSADDR=0x00200000
makeoptions KERNVIRTADDR=0xc0200000
options KERNVIRTADDR=0xc0200000
options STARTUP_PAGETABLE_ADDR=0x00100000
files "../tegra/files.tegra2"

View File

@ -14,8 +14,6 @@ makeoptions KERNPHYSADDR=0x80200000
options KERNVIRTADDR=0xc0200000 # Used in ldscript.arm
makeoptions KERNVIRTADDR=0xc0200000
options STARTUP_PAGETABLE_ADDR=0x80000000
options SOC_TI_AM335X
options ARM_L2_PIPT

View File

@ -14,8 +14,6 @@ makeoptions KERNPHYSADDR=0x80200000
options KERNVIRTADDR=0xc0200000 # Used in ldscript.arm
makeoptions KERNVIRTADDR=0xc0200000
options STARTUP_PAGETABLE_ADDR=0x80000000
options SOC_OMAP4
options ARM_L2_PIPT

View File

@ -18,6 +18,5 @@ makeoptions KERNPHYSADDR=0x00100000
options KERNVIRTADDR=0xc0100000 # Used in ldscript.arm
makeoptions KERNVIRTADDR=0xc0100000
options STARTUP_PAGETABLE_ADDR=0x000f0000
options ARM_L2_PIPT

View File

@ -19,4 +19,3 @@ options KERNVIRTADDR=0xc0200000 # Used in ldscript.arm
makeoptions KERNVIRTADDR=0xc0200000
options FLASHADDR=0x50000000
options LOADERRAMADDR=0x00000000
options STARTUP_PAGETABLE_ADDR=0x00000000

View File

@ -107,6 +107,12 @@ SECTIONS
*(.dynbss)
*(.bss)
*(COMMON)
. = ALIGN(32 / 8);
_ebss = .;
/* A section for the initial page table, it doesn't need to be in the
kernel file, however unlike normal .bss entries should not be zeroed
out as we use it before the .bss section is cleared. */
*(.init_pagetable)
}
. = ALIGN(32 / 8);
_end = . ;

View File

@ -50,7 +50,6 @@ SOC_OMAP3 opt_global.h
SOC_OMAP4 opt_global.h
SOC_TI_AM335X opt_global.h
SOC_TEGRA2 opt_global.h
STARTUP_PAGETABLE_ADDR opt_global.h
XSCALE_CACHE_READ_WRITE_ALLOCATE opt_global.h
XSACLE_DISABLE_CCNT opt_timer.h
VERBOSE_INIT_ARM opt_global.h