summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorandrew <andrew@FreeBSD.org>2014-01-28 09:12:04 +0000
committerandrew <andrew@FreeBSD.org>2014-01-28 09:12:04 +0000
commitea49382feb2283285e824ed624107ace193a984a (patch)
tree710352cef019fdc2f3b56439be3258511cfdb30c
parentf1267848bf1bff85d055c6f5d67ccddd5c3783ae (diff)
downloadFreeBSD-src-ea49382feb2283285e824ed624107ace193a984a.zip
FreeBSD-src-ea49382feb2283285e824ed624107ace193a984a.tar.gz
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
-rw-r--r--sys/arm/allwinner/a20/std.a202
-rw-r--r--sys/arm/allwinner/std.a102
-rw-r--r--sys/arm/arm/locore.S28
-rw-r--r--sys/arm/at91/std.bwct1
-rw-r--r--sys/arm/at91/std.eb92001
-rw-r--r--sys/arm/at91/std.ethernut51
-rw-r--r--sys/arm/at91/std.hl2001
-rw-r--r--sys/arm/at91/std.hl2011
-rw-r--r--sys/arm/at91/std.kb920x1
-rw-r--r--sys/arm/at91/std.qila9g201
-rw-r--r--sys/arm/at91/std.sam9260ek1
-rw-r--r--sys/arm/at91/std.sam9g20ek1
-rw-r--r--sys/arm/at91/std.sam9x25ek1
-rw-r--r--sys/arm/at91/std.sn9g451
-rw-r--r--sys/arm/at91/std.tsc43701
-rw-r--r--sys/arm/broadcom/bcm2835/std.rpi1
-rw-r--r--sys/arm/conf/ATMEL1
-rw-r--r--sys/arm/conf/CNS11XXNAS1
-rw-r--r--sys/arm/conf/CRB1
-rw-r--r--sys/arm/conf/EP802191
-rw-r--r--sys/arm/conf/GUMSTIX1
-rw-r--r--sys/arm/conf/IQ312441
-rw-r--r--sys/arm/conf/NSLU1
-rw-r--r--sys/arm/conf/VERSATILEPB1
-rw-r--r--sys/arm/econa/std.econa1
-rw-r--r--sys/arm/freescale/imx/std.imx511
-rw-r--r--sys/arm/freescale/imx/std.imx531
-rw-r--r--sys/arm/freescale/imx/std.imx61
-rw-r--r--sys/arm/freescale/vybrid/std.vybrid2
-rw-r--r--sys/arm/lpc/std.lpc1
-rw-r--r--sys/arm/mv/armadaxp/std.armadaxp1
-rw-r--r--sys/arm/mv/discovery/std.db78xxx1
-rw-r--r--sys/arm/mv/kirkwood/std.kirkwood1
-rw-r--r--sys/arm/mv/orion/std.db88f5xxx1
-rw-r--r--sys/arm/mv/orion/std.ts78001
-rw-r--r--sys/arm/rockchip/std.rk30xx2
-rw-r--r--sys/arm/s3c2xx0/std.ln2410sbc1
-rw-r--r--sys/arm/samsung/exynos/std.exynos52
-rw-r--r--sys/arm/tegra/std.tegra22
-rw-r--r--sys/arm/ti/am335x/std.am335x2
-rw-r--r--sys/arm/ti/omap4/std.omap42
-rw-r--r--sys/arm/xilinx/std.zynq71
-rw-r--r--sys/arm/xscale/ixp425/std.avila1
-rw-r--r--sys/conf/ldscript.arm6
-rw-r--r--sys/conf/options.arm1
45 files changed, 26 insertions, 59 deletions
diff --git a/sys/arm/allwinner/a20/std.a20 b/sys/arm/allwinner/a20/std.a20
index 851308c..f582e91 100644
--- a/sys/arm/allwinner/a20/std.a20
+++ b/sys/arm/allwinner/a20/std.a20
@@ -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
diff --git a/sys/arm/allwinner/std.a10 b/sys/arm/allwinner/std.a10
index f698b34..11ef732 100644
--- a/sys/arm/allwinner/std.a10
+++ b/sys/arm/allwinner/std.a10
@@ -16,6 +16,4 @@ options KERNPHYSADDR=0x40200000
makeoptions KERNVIRTADDR=0xc0200000
options KERNVIRTADDR=0xc0200000
-options STARTUP_PAGETABLE_ADDR=0x48000000
-
files "../allwinner/files.a10"
diff --git a/sys/arm/arm/locore.S b/sys/arm/arm/locore.S
index 209839a..5b38494 100644
--- a/sys/arm/arm/locore.S
+++ b/sys/arm/arm/locore.S
@@ -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
diff --git a/sys/arm/at91/std.bwct b/sys/arm/at91/std.bwct
index 6cb7ddd..19e5356 100644
--- a/sys/arm/at91/std.bwct
+++ b/sys/arm/at91/std.bwct
@@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91"
-options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
options KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
diff --git a/sys/arm/at91/std.eb9200 b/sys/arm/at91/std.eb9200
index c1dcd2a..cc8f70f 100644
--- a/sys/arm/at91/std.eb9200
+++ b/sys/arm/at91/std.eb9200
@@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91"
-options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
options KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
diff --git a/sys/arm/at91/std.ethernut5 b/sys/arm/at91/std.ethernut5
index 876b59a..7793a83 100644
--- a/sys/arm/at91/std.ethernut5
+++ b/sys/arm/at91/std.ethernut5
@@ -1,7 +1,6 @@
# $FreeBSD$
include "../at91/std.at91sam9"
-options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
options KERNPHYSADDR=0x20000000
diff --git a/sys/arm/at91/std.hl200 b/sys/arm/at91/std.hl200
index f48f723..5b5ed22 100644
--- a/sys/arm/at91/std.hl200
+++ b/sys/arm/at91/std.hl200
@@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91"
-options STARTUP_PAGETABLE_ADDR=0x20000000
makeoptions KERNPHYSADDR=0x20100000
options KERNPHYSADDR=0x20100000
makeoptions KERNVIRTADDR=0xc0100000
diff --git a/sys/arm/at91/std.hl201 b/sys/arm/at91/std.hl201
index ff27308..6537b27 100644
--- a/sys/arm/at91/std.hl201
+++ b/sys/arm/at91/std.hl201
@@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91sam9"
-options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
options KERNPHYSADDR=0x20000000
diff --git a/sys/arm/at91/std.kb920x b/sys/arm/at91/std.kb920x
index 85c8d03..2f52db5 100644
--- a/sys/arm/at91/std.kb920x
+++ b/sys/arm/at91/std.kb920x
@@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91"
-options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
options KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
diff --git a/sys/arm/at91/std.qila9g20 b/sys/arm/at91/std.qila9g20
index e2043b6..f9dbb5f 100644
--- a/sys/arm/at91/std.qila9g20
+++ b/sys/arm/at91/std.qila9g20
@@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91sam9"
-options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
options KERNPHYSADDR=0x20000000
diff --git a/sys/arm/at91/std.sam9260ek b/sys/arm/at91/std.sam9260ek
index e7d1884..fd4a7da 100644
--- a/sys/arm/at91/std.sam9260ek
+++ b/sys/arm/at91/std.sam9260ek
@@ -1,7 +1,6 @@
# $FreeBSD$
include "../at91/std.at91sam9"
-options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
options KERNPHYSADDR=0x20000000
diff --git a/sys/arm/at91/std.sam9g20ek b/sys/arm/at91/std.sam9g20ek
index cdbecda..160a893 100644
--- a/sys/arm/at91/std.sam9g20ek
+++ b/sys/arm/at91/std.sam9g20ek
@@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91sam9"
-options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
options KERNPHYSADDR=0x20000000
diff --git a/sys/arm/at91/std.sam9x25ek b/sys/arm/at91/std.sam9x25ek
index 661213b..4536b51 100644
--- a/sys/arm/at91/std.sam9x25ek
+++ b/sys/arm/at91/std.sam9x25ek
@@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91sam9"
-options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
options KERNPHYSADDR=0x20000000
diff --git a/sys/arm/at91/std.sn9g45 b/sys/arm/at91/std.sn9g45
index e0d7c98..5376955 100644
--- a/sys/arm/at91/std.sn9g45
+++ b/sys/arm/at91/std.sn9g45
@@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91sam9g45"
-options STARTUP_PAGETABLE_ADDR=0x70800000
makeoptions KERNPHYSADDR=0x70008000
options KERNPHYSADDR=0x70008000
makeoptions KERNVIRTADDR=0xc0008000
diff --git a/sys/arm/at91/std.tsc4370 b/sys/arm/at91/std.tsc4370
index 6c08f8c..6eb25cb 100644
--- a/sys/arm/at91/std.tsc4370
+++ b/sys/arm/at91/std.tsc4370
@@ -1,7 +1,6 @@
#$FreeBSD$
include "../at91/std.at91"
-options STARTUP_PAGETABLE_ADDR=0x20800000
makeoptions KERNPHYSADDR=0x20000000
makeoptions KERNVIRTADDR=0xc0000000
options KERNPHYSADDR=0x20000000
diff --git a/sys/arm/broadcom/bcm2835/std.rpi b/sys/arm/broadcom/bcm2835/std.rpi
index 8bb62c8..af99deb 100644
--- a/sys/arm/broadcom/bcm2835/std.rpi
+++ b/sys/arm/broadcom/bcm2835/std.rpi
@@ -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
diff --git a/sys/arm/conf/ATMEL b/sys/arm/conf/ATMEL
index 74871eb..93d124d 100644
--- a/sys/arm/conf/ATMEL
+++ b/sys/arm/conf/ATMEL
@@ -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
diff --git a/sys/arm/conf/CNS11XXNAS b/sys/arm/conf/CNS11XXNAS
index cab0682..159bbdf 100644
--- a/sys/arm/conf/CNS11XXNAS
+++ b/sys/arm/conf/CNS11XXNAS
@@ -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"
diff --git a/sys/arm/conf/CRB b/sys/arm/conf/CRB
index d9b0a4e..850121e 100644
--- a/sys/arm/conf/CRB
+++ b/sys/arm/conf/CRB
@@ -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=""
diff --git a/sys/arm/conf/EP80219 b/sys/arm/conf/EP80219
index a112fe1..8d2c5bf 100644
--- a/sys/arm/conf/EP80219
+++ b/sys/arm/conf/EP80219
@@ -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=""
diff --git a/sys/arm/conf/GUMSTIX b/sys/arm/conf/GUMSTIX
index 11fe6a9..8b9824c 100644
--- a/sys/arm/conf/GUMSTIX
+++ b/sys/arm/conf/GUMSTIX
@@ -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=""
diff --git a/sys/arm/conf/IQ31244 b/sys/arm/conf/IQ31244
index 1eb4a20..c1cbc13 100644
--- a/sys/arm/conf/IQ31244
+++ b/sys/arm/conf/IQ31244
@@ -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=""
diff --git a/sys/arm/conf/NSLU b/sys/arm/conf/NSLU
index e9b4e28..0b23ee2 100644
--- a/sys/arm/conf/NSLU
+++ b/sys/arm/conf/NSLU
@@ -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)
diff --git a/sys/arm/conf/VERSATILEPB b/sys/arm/conf/VERSATILEPB
index 78d0789..6f884d1 100644
--- a/sys/arm/conf/VERSATILEPB
+++ b/sys/arm/conf/VERSATILEPB
@@ -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
diff --git a/sys/arm/econa/std.econa b/sys/arm/econa/std.econa
index 324caf3..6b1f2d0 100644
--- a/sys/arm/econa/std.econa
+++ b/sys/arm/econa/std.econa
@@ -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
diff --git a/sys/arm/freescale/imx/std.imx51 b/sys/arm/freescale/imx/std.imx51
index 6c70ef9..a6b6ffa 100644
--- a/sys/arm/freescale/imx/std.imx51
+++ b/sys/arm/freescale/imx/std.imx51
@@ -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"
diff --git a/sys/arm/freescale/imx/std.imx53 b/sys/arm/freescale/imx/std.imx53
index a7bdba2..40fbb30 100644
--- a/sys/arm/freescale/imx/std.imx53
+++ b/sys/arm/freescale/imx/std.imx53
@@ -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"
diff --git a/sys/arm/freescale/imx/std.imx6 b/sys/arm/freescale/imx/std.imx6
index abe09e9..c328b22 100644
--- a/sys/arm/freescale/imx/std.imx6
+++ b/sys/arm/freescale/imx/std.imx6
@@ -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"
diff --git a/sys/arm/freescale/vybrid/std.vybrid b/sys/arm/freescale/vybrid/std.vybrid
index 92d5a46..2fbd85c 100644
--- a/sys/arm/freescale/vybrid/std.vybrid
+++ b/sys/arm/freescale/vybrid/std.vybrid
@@ -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"
diff --git a/sys/arm/lpc/std.lpc b/sys/arm/lpc/std.lpc
index 84995ce..4c0d0d6 100644
--- a/sys/arm/lpc/std.lpc
+++ b/sys/arm/lpc/std.lpc
@@ -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
diff --git a/sys/arm/mv/armadaxp/std.armadaxp b/sys/arm/mv/armadaxp/std.armadaxp
index d731ad3..d53a803 100644
--- a/sys/arm/mv/armadaxp/std.armadaxp
+++ b/sys/arm/mv/armadaxp/std.armadaxp
@@ -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
diff --git a/sys/arm/mv/discovery/std.db78xxx b/sys/arm/mv/discovery/std.db78xxx
index 7a7d927..70314fd 100644
--- a/sys/arm/mv/discovery/std.db78xxx
+++ b/sys/arm/mv/discovery/std.db78xxx
@@ -9,4 +9,3 @@ makeoptions KERNVIRTADDR=0xc0900000
options KERNPHYSADDR=0x00900000
options KERNVIRTADDR=0xc0900000
options PHYSADDR=0x00000000
-options STARTUP_PAGETABLE_ADDR=0x00100000
diff --git a/sys/arm/mv/kirkwood/std.kirkwood b/sys/arm/mv/kirkwood/std.kirkwood
index 6b74920..abe2ddd 100644
--- a/sys/arm/mv/kirkwood/std.kirkwood
+++ b/sys/arm/mv/kirkwood/std.kirkwood
@@ -12,4 +12,3 @@ makeoptions KERNVIRTADDR=0xc0900000
options KERNPHYSADDR=0x00900000
options KERNVIRTADDR=0xc0900000
options PHYSADDR=0x00000000
-options STARTUP_PAGETABLE_ADDR=0x00100000
diff --git a/sys/arm/mv/orion/std.db88f5xxx b/sys/arm/mv/orion/std.db88f5xxx
index 49c6ae4..7b52d7d 100644
--- a/sys/arm/mv/orion/std.db88f5xxx
+++ b/sys/arm/mv/orion/std.db88f5xxx
@@ -9,4 +9,3 @@ makeoptions KERNVIRTADDR=0xc0900000
options KERNPHYSADDR=0x00900000
options KERNVIRTADDR=0xc0900000
options PHYSADDR=0x00000000
-options STARTUP_PAGETABLE_ADDR=0x00100000
diff --git a/sys/arm/mv/orion/std.ts7800 b/sys/arm/mv/orion/std.ts7800
index 163af16..aa5dcef 100644
--- a/sys/arm/mv/orion/std.ts7800
+++ b/sys/arm/mv/orion/std.ts7800
@@ -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
diff --git a/sys/arm/rockchip/std.rk30xx b/sys/arm/rockchip/std.rk30xx
index 7b714bb..79ddcc6 100644
--- a/sys/arm/rockchip/std.rk30xx
+++ b/sys/arm/rockchip/std.rk30xx
@@ -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
diff --git a/sys/arm/s3c2xx0/std.ln2410sbc b/sys/arm/s3c2xx0/std.ln2410sbc
index d73d62d..a76a849 100644
--- a/sys/arm/s3c2xx0/std.ln2410sbc
+++ b/sys/arm/s3c2xx0/std.ln2410sbc
@@ -6,6 +6,5 @@ makeoptions KERNVIRTADDR=0xc0000000
options KERNPHYSADDR=0x30000000
options KERNVIRTADDR=0xc0000000
options PHYSADDR=0x30000000
-options STARTUP_PAGETABLE_ADDR=0x30800000
options NO_EVENTTIMERS
diff --git a/sys/arm/samsung/exynos/std.exynos5 b/sys/arm/samsung/exynos/std.exynos5
index 58f692c..5f59adc 100644
--- a/sys/arm/samsung/exynos/std.exynos5
+++ b/sys/arm/samsung/exynos/std.exynos5
@@ -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
diff --git a/sys/arm/tegra/std.tegra2 b/sys/arm/tegra/std.tegra2
index 337b85f..e8d5524 100644
--- a/sys/arm/tegra/std.tegra2
+++ b/sys/arm/tegra/std.tegra2
@@ -11,6 +11,4 @@ options KERNPHYSADDR=0x00200000
makeoptions KERNVIRTADDR=0xc0200000
options KERNVIRTADDR=0xc0200000
-options STARTUP_PAGETABLE_ADDR=0x00100000
-
files "../tegra/files.tegra2"
diff --git a/sys/arm/ti/am335x/std.am335x b/sys/arm/ti/am335x/std.am335x
index 1801cee..7bcc746 100644
--- a/sys/arm/ti/am335x/std.am335x
+++ b/sys/arm/ti/am335x/std.am335x
@@ -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
diff --git a/sys/arm/ti/omap4/std.omap4 b/sys/arm/ti/omap4/std.omap4
index bbdd432..27ec5ff 100644
--- a/sys/arm/ti/omap4/std.omap4
+++ b/sys/arm/ti/omap4/std.omap4
@@ -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
diff --git a/sys/arm/xilinx/std.zynq7 b/sys/arm/xilinx/std.zynq7
index 76a21e2..f387703 100644
--- a/sys/arm/xilinx/std.zynq7
+++ b/sys/arm/xilinx/std.zynq7
@@ -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
diff --git a/sys/arm/xscale/ixp425/std.avila b/sys/arm/xscale/ixp425/std.avila
index 77036ee..9c00e1b 100644
--- a/sys/arm/xscale/ixp425/std.avila
+++ b/sys/arm/xscale/ixp425/std.avila
@@ -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
diff --git a/sys/conf/ldscript.arm b/sys/conf/ldscript.arm
index 0d1c7ee..353e365 100644
--- a/sys/conf/ldscript.arm
+++ b/sys/conf/ldscript.arm
@@ -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 = . ;
diff --git a/sys/conf/options.arm b/sys/conf/options.arm
index 0296a1a..c7f0bcf 100644
--- a/sys/conf/options.arm
+++ b/sys/conf/options.arm
@@ -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
OpenPOWER on IntegriCloud