s3c24x0_machdep.c (236828) | s3c24x0_machdep.c (236990) |
---|---|
1/*- 2 * Copyright (c) 1994-1998 Mark Brinicombe. 3 * Copyright (c) 1994 Brini. 4 * All rights reserved. 5 * 6 * This code is derived from software written for Brini by Mark Brinicombe 7 * 8 * Redistribution and use in source and binary forms, with or without --- 24 unchanged lines hidden (view full) --- 33 * SUCH DAMAGE. 34 * 35 * RiscBSD kernel project 36 * 37 * machdep.c 38 * 39 * Machine dependant functions for kernel setup 40 * | 1/*- 2 * Copyright (c) 1994-1998 Mark Brinicombe. 3 * Copyright (c) 1994 Brini. 4 * All rights reserved. 5 * 6 * This code is derived from software written for Brini by Mark Brinicombe 7 * 8 * Redistribution and use in source and binary forms, with or without --- 24 unchanged lines hidden (view full) --- 33 * SUCH DAMAGE. 34 * 35 * RiscBSD kernel project 36 * 37 * machdep.c 38 * 39 * Machine dependant functions for kernel setup 40 * |
41 * This file needs a lot of work. | 41 * This file needs a lot of work. |
42 * 43 * Created : 17/09/94 44 */ 45 46#include "opt_ddb.h" 47 48#include <sys/cdefs.h> | 42 * 43 * Created : 17/09/94 44 */ 45 46#include "opt_ddb.h" 47 48#include <sys/cdefs.h> |
49__FBSDID("$FreeBSD: head/sys/arm/s3c2xx0/s3c24x0_machdep.c 236828 2012-06-10 01:13:04Z andrew $"); | 49__FBSDID("$FreeBSD: head/sys/arm/s3c2xx0/s3c24x0_machdep.c 236990 2012-06-13 04:59:00Z imp $"); |
50 51#define _ARM32_BUS_DMA_PRIVATE 52#include <sys/param.h> 53#include <sys/systm.h> 54#include <sys/sysproto.h> 55#include <sys/signalvar.h> 56#include <sys/imgact.h> 57#include <sys/kernel.h> --- 87 unchanged lines hidden (view full) --- 145static const struct pmap_devmap s3c24x0_devmap[] = { 146 /* 147 * Map the devices we need early on. 148 */ 149 { 150 _A(S3C24X0_CLKMAN_BASE), 151 _A(S3C24X0_CLKMAN_PA_BASE), 152 _S(S3C24X0_CLKMAN_SIZE), | 50 51#define _ARM32_BUS_DMA_PRIVATE 52#include <sys/param.h> 53#include <sys/systm.h> 54#include <sys/sysproto.h> 55#include <sys/signalvar.h> 56#include <sys/imgact.h> 57#include <sys/kernel.h> --- 87 unchanged lines hidden (view full) --- 145static const struct pmap_devmap s3c24x0_devmap[] = { 146 /* 147 * Map the devices we need early on. 148 */ 149 { 150 _A(S3C24X0_CLKMAN_BASE), 151 _A(S3C24X0_CLKMAN_PA_BASE), 152 _S(S3C24X0_CLKMAN_SIZE), |
153 VM_PROT_READ|VM_PROT_WRITE, | 153 VM_PROT_READ|VM_PROT_WRITE, |
154 PTE_NOCACHE, 155 }, 156 { 157 _A(S3C24X0_GPIO_BASE), 158 _A(S3C24X0_GPIO_PA_BASE), 159 _S(S3C2410_GPIO_SIZE), | 154 PTE_NOCACHE, 155 }, 156 { 157 _A(S3C24X0_GPIO_BASE), 158 _A(S3C24X0_GPIO_PA_BASE), 159 _S(S3C2410_GPIO_SIZE), |
160 VM_PROT_READ|VM_PROT_WRITE, | 160 VM_PROT_READ|VM_PROT_WRITE, |
161 PTE_NOCACHE, 162 }, 163 { 164 _A(S3C24X0_INTCTL_BASE), 165 _A(S3C24X0_INTCTL_PA_BASE), 166 _S(S3C24X0_INTCTL_SIZE), | 161 PTE_NOCACHE, 162 }, 163 { 164 _A(S3C24X0_INTCTL_BASE), 165 _A(S3C24X0_INTCTL_PA_BASE), 166 _S(S3C24X0_INTCTL_SIZE), |
167 VM_PROT_READ|VM_PROT_WRITE, | 167 VM_PROT_READ|VM_PROT_WRITE, |
168 PTE_NOCACHE, 169 }, 170 { 171 _A(S3C24X0_TIMER_BASE), 172 _A(S3C24X0_TIMER_PA_BASE), 173 _S(S3C24X0_TIMER_SIZE), | 168 PTE_NOCACHE, 169 }, 170 { 171 _A(S3C24X0_TIMER_BASE), 172 _A(S3C24X0_TIMER_PA_BASE), 173 _S(S3C24X0_TIMER_SIZE), |
174 VM_PROT_READ|VM_PROT_WRITE, | 174 VM_PROT_READ|VM_PROT_WRITE, |
175 PTE_NOCACHE, 176 }, 177 { 178 _A(S3C24X0_UART0_BASE), 179 _A(S3C24X0_UART0_PA_BASE), 180 _S(S3C24X0_UART_PA_BASE(3) - S3C24X0_UART0_PA_BASE), | 175 PTE_NOCACHE, 176 }, 177 { 178 _A(S3C24X0_UART0_BASE), 179 _A(S3C24X0_UART0_PA_BASE), 180 _S(S3C24X0_UART_PA_BASE(3) - S3C24X0_UART0_PA_BASE), |
181 VM_PROT_READ|VM_PROT_WRITE, | 181 VM_PROT_READ|VM_PROT_WRITE, |
182 PTE_NOCACHE, 183 }, 184 { 185 _A(S3C24X0_WDT_BASE), 186 _A(S3C24X0_WDT_PA_BASE), 187 _S(S3C24X0_WDT_SIZE), | 182 PTE_NOCACHE, 183 }, 184 { 185 _A(S3C24X0_WDT_BASE), 186 _A(S3C24X0_WDT_PA_BASE), 187 _S(S3C24X0_WDT_SIZE), |
188 VM_PROT_READ|VM_PROT_WRITE, | 188 VM_PROT_READ|VM_PROT_WRITE, |
189 PTE_NOCACHE, 190 }, 191 { 192 0, 193 0, 194 0, 195 0, 196 0, --- 79 unchanged lines hidden (view full) --- 276 for (loop = 0; loop < NUM_KERNEL_PTS; ++loop) { 277 if (!(loop % (PAGE_SIZE / L2_TABLE_SIZE_REAL))) { 278 valloc_pages(kernel_pt_table[loop], 279 L2_TABLE_SIZE / PAGE_SIZE); 280 } else { 281 kernel_pt_table[loop].pv_va = freemempos - 282 (loop % (PAGE_SIZE / L2_TABLE_SIZE_REAL)) * 283 L2_TABLE_SIZE_REAL; | 189 PTE_NOCACHE, 190 }, 191 { 192 0, 193 0, 194 0, 195 0, 196 0, --- 79 unchanged lines hidden (view full) --- 276 for (loop = 0; loop < NUM_KERNEL_PTS; ++loop) { 277 if (!(loop % (PAGE_SIZE / L2_TABLE_SIZE_REAL))) { 278 valloc_pages(kernel_pt_table[loop], 279 L2_TABLE_SIZE / PAGE_SIZE); 280 } else { 281 kernel_pt_table[loop].pv_va = freemempos - 282 (loop % (PAGE_SIZE / L2_TABLE_SIZE_REAL)) * 283 L2_TABLE_SIZE_REAL; |
284 kernel_pt_table[loop].pv_pa = | 284 kernel_pt_table[loop].pv_pa = |
285 kernel_pt_table[loop].pv_va - KERNVIRTADDR + 286 KERNPHYSADDR; 287 } 288 } 289 /* 290 * Allocate a page for the system page mapped to V0x00000000 291 * This page will just contain the system vectors and can be 292 * shared by all processes. --- 17 unchanged lines hidden (view full) --- 310 pmap_link_l2pt(l1pagetable, ARM_VECTORS_HIGH, 311 &kernel_pt_table[KERNEL_PT_SYS]); 312 for (i = 0; i < KERNEL_PT_KERN_NUM; i++) 313 pmap_link_l2pt(l1pagetable, KERNBASE + i * L1_S_SIZE, 314 &kernel_pt_table[KERNEL_PT_KERN + i]); 315 pmap_map_chunk(l1pagetable, KERNBASE, PHYSADDR, 316 (((uint32_t)(lastaddr) - KERNBASE) + PAGE_SIZE) & ~(PAGE_SIZE - 1), 317 VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE); | 285 kernel_pt_table[loop].pv_va - KERNVIRTADDR + 286 KERNPHYSADDR; 287 } 288 } 289 /* 290 * Allocate a page for the system page mapped to V0x00000000 291 * This page will just contain the system vectors and can be 292 * shared by all processes. --- 17 unchanged lines hidden (view full) --- 310 pmap_link_l2pt(l1pagetable, ARM_VECTORS_HIGH, 311 &kernel_pt_table[KERNEL_PT_SYS]); 312 for (i = 0; i < KERNEL_PT_KERN_NUM; i++) 313 pmap_link_l2pt(l1pagetable, KERNBASE + i * L1_S_SIZE, 314 &kernel_pt_table[KERNEL_PT_KERN + i]); 315 pmap_map_chunk(l1pagetable, KERNBASE, PHYSADDR, 316 (((uint32_t)(lastaddr) - KERNBASE) + PAGE_SIZE) & ~(PAGE_SIZE - 1), 317 VM_PROT_READ|VM_PROT_WRITE, PTE_CACHE); |
318 afterkern = round_page((lastaddr + L1_S_SIZE) & ~(L1_S_SIZE | 318 afterkern = round_page((lastaddr + L1_S_SIZE) & ~(L1_S_SIZE |
319 - 1)); 320 for (i = 0; i < KERNEL_PT_AFKERNEL_NUM; i++) { 321 pmap_link_l2pt(l1pagetable, afterkern + i * L1_S_SIZE, 322 &kernel_pt_table[KERNEL_PT_AFKERNEL + i]); 323 } 324 325 /* Map the vector page. */ 326 pmap_map_entry(l1pagetable, ARM_VECTORS_HIGH, systempage.pv_pa, --- 115 unchanged lines hidden --- | 319 - 1)); 320 for (i = 0; i < KERNEL_PT_AFKERNEL_NUM; i++) { 321 pmap_link_l2pt(l1pagetable, afterkern + i * L1_S_SIZE, 322 &kernel_pt_table[KERNEL_PT_AFKERNEL + i]); 323 } 324 325 /* Map the vector page. */ 326 pmap_map_entry(l1pagetable, ARM_VECTORS_HIGH, systempage.pv_pa, --- 115 unchanged lines hidden --- |