summaryrefslogtreecommitdiffstats
path: root/sys/arm/xscale
diff options
context:
space:
mode:
authorcognet <cognet@FreeBSD.org>2005-03-17 23:01:15 +0000
committercognet <cognet@FreeBSD.org>2005-03-17 23:01:15 +0000
commitd8999c1cc658aac51182a4d1cf842809dcc2a2a0 (patch)
tree25ef414e51a721dd8f56aacb3090c7364dc3bf30 /sys/arm/xscale
parent691cfe03b0fed3d2740cc54e4c470b81134041f7 (diff)
downloadFreeBSD-src-d8999c1cc658aac51182a4d1cf842809dcc2a2a0.zip
FreeBSD-src-d8999c1cc658aac51182a4d1cf842809dcc2a2a0.tar.gz
Bring back some of the cleanups and fixes jmg did in the TS7200 port.
Diffstat (limited to 'sys/arm/xscale')
-rw-r--r--sys/arm/xscale/i80321/iq31244_machdep.c34
1 files changed, 16 insertions, 18 deletions
diff --git a/sys/arm/xscale/i80321/iq31244_machdep.c b/sys/arm/xscale/i80321/iq31244_machdep.c
index 01fba53..4eb8958 100644
--- a/sys/arm/xscale/i80321/iq31244_machdep.c
+++ b/sys/arm/xscale/i80321/iq31244_machdep.c
@@ -99,14 +99,13 @@ __FBSDID("$FreeBSD$");
#include <arm/xscale/i80321/obiovar.h>
#define KERNEL_PT_SYS 0 /* Page table for mapping proc0 zero page */
-#define KERNEL_PT_KERNEL 1 /* Page table for mapping kernel */
-#define KERNEL_PT_KERNEL_NUM 4
- /* L2 table for mapping i80321 */
-#define KERNEL_PT_IOPXS (KERNEL_PT_KERNEL + KERNEL_PT_KERNEL_NUM)
+#define KERNEL_PT_IOPXS 1
+#define KERNEL_PT_BEFOREKERN 2
+#define KERNEL_PT_AFKERNEL 3 /* L2 table for mapping after kernel */
+#define KERNEL_PT_AFKERNEL_NUM 9
-#define KERNEL_PT_VMDATA (KERNEL_PT_IOPXS + 1)
-#define KERNEL_PT_VMDATA_NUM 10
-#define NUM_KERNEL_PTS (KERNEL_PT_VMDATA + KERNEL_PT_VMDATA_NUM)
+/* this should be evenly divisable by PAGE_SIZE / L2_TABLE_SIZE_REAL (or 4) */
+#define NUM_KERNEL_PTS (KERNEL_PT_AFKERNEL + KERNEL_PT_AFKERNEL_NUM)
/* Define various stack sizes in pages */
#define IRQ_STACK_SIZE 1
@@ -303,15 +302,10 @@ initarm(void *arg, void *arg2)
/* Map the L2 pages tables in the L1 page table */
pmap_link_l2pt(l1pagetable, ARM_VECTORS_HIGH & ~(0x00100000 - 1),
&kernel_pt_table[KERNEL_PT_SYS]);
- for (i = 0; i < KERNEL_PT_KERNEL_NUM; i++) {
- pmap_link_l2pt(l1pagetable, KERNBASE + i * 0x00100000,
- &kernel_pt_table[KERNEL_PT_KERNEL + i]);
- }
- for (loop = 0; loop < KERNEL_PT_VMDATA_NUM; ++loop)
- pmap_link_l2pt(l1pagetable, KERNBASE + (i + loop) * 0x00100000,
- &kernel_pt_table[KERNEL_PT_VMDATA + loop]);
pmap_link_l2pt(l1pagetable, IQ80321_IOPXS_VBASE,
&kernel_pt_table[KERNEL_PT_IOPXS]);
+ pmap_link_l2pt(l1pagetable, KERNBASE,
+ &kernel_pt_table[KERNEL_PT_BEFOREKERN]);
pmap_map_chunk(l1pagetable, KERNBASE, SDRAM_START,
freemempos - 0xa0000000 + 0x1000,
VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE);
@@ -323,6 +317,10 @@ initarm(void *arg, void *arg2)
freemem_after = ((int)&end + PAGE_SIZE) & ~(PAGE_SIZE - 1);
afterkern = round_page(((vm_offset_t)&end + L1_S_SIZE) & ~(L1_S_SIZE
- 1));
+ for (i = 0; i < KERNEL_PT_AFKERNEL_NUM; i++) {
+ pmap_link_l2pt(l1pagetable, afterkern + i * 0x00100000,
+ &kernel_pt_table[KERNEL_PT_AFKERNEL + i]);
+ }
/* Map the stack pages */
#define alloc_afterkern(va, pa, size) \
@@ -462,10 +460,10 @@ initarm(void *arg, void *arg2)
freemempos &= ~(PAGE_SIZE - 1);
phys_avail[0] = SDRAM_START;
phys_avail[1] = freemempos;
- phys_avail[0] = round_page(virtual_avail - KERNBASE + SDRAM_START);
- phys_avail[1] = trunc_page(0xa0000000 + memsize - 1);
- phys_avail[2] = 0;
- phys_avail[3] = 0;
+ phys_avail[2] = round_page(virtual_avail - KERNBASE + SDRAM_START);
+ phys_avail[3] = trunc_page(0xa0000000 + memsize - 1);
+ phys_avail[4] = 0;
+ phys_avail[5] = 0;
/* Do basic tuning, hz etc */
init_param1();
OpenPOWER on IntegriCloud