machdep.c (215159) | machdep.c (217523) |
---|---|
1/*- 2 * Copyright (C) 2006 Semihalf, Marian Balakowicz <m8@semihalf.com> 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 65 unchanged lines hidden (view full) --- 74 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 75 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 76 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 77 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 78 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 79 */ 80 81#include <sys/cdefs.h> | 1/*- 2 * Copyright (C) 2006 Semihalf, Marian Balakowicz <m8@semihalf.com> 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 65 unchanged lines hidden (view full) --- 74 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 75 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 76 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 77 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 78 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 79 */ 80 81#include <sys/cdefs.h> |
82__FBSDID("$FreeBSD: head/sys/powerpc/booke/machdep.c 215159 2010-11-12 04:18:19Z nwhitehorn $"); | 82__FBSDID("$FreeBSD: head/sys/powerpc/booke/machdep.c 217523 2011-01-17 23:54:50Z marcel $"); |
83 84#include "opt_compat.h" 85#include "opt_ddb.h" 86#include "opt_kstack_pages.h" 87#include "opt_msgbuf.h" | 83 84#include "opt_compat.h" 85#include "opt_ddb.h" 86#include "opt_kstack_pages.h" 87#include "opt_msgbuf.h" |
88#include "opt_platform.h" |
|
88 89#include <sys/cdefs.h> 90#include <sys/types.h> 91#include <sys/param.h> 92#include <sys/proc.h> 93#include <sys/systm.h> 94#include <sys/time.h> 95#include <sys/bio.h> --- 62 unchanged lines hidden (view full) --- 158extern unsigned char __sbss_end[]; 159extern unsigned char _end[]; 160 161extern void dcache_enable(void); 162extern void dcache_inval(void); 163extern void icache_enable(void); 164extern void icache_inval(void); 165 | 89 90#include <sys/cdefs.h> 91#include <sys/types.h> 92#include <sys/param.h> 93#include <sys/proc.h> 94#include <sys/systm.h> 95#include <sys/time.h> 96#include <sys/bio.h> --- 62 unchanged lines hidden (view full) --- 159extern unsigned char __sbss_end[]; 160extern unsigned char _end[]; 161 162extern void dcache_enable(void); 163extern void dcache_inval(void); 164extern void icache_enable(void); 165extern void icache_inval(void); 166 |
167/* 168 * Bootinfo is passed to us by legacy loaders. Save the address of the 169 * structure to handle backward compatibility. 170 */ 171uint32_t *bootinfo; 172 |
|
166struct kva_md_info kmi; 167struct pcpu __pcpu[MAXCPU]; 168struct trapframe frame0; 169int cold = 1; 170long realmem = 0; 171long Maxmem = 0; | 173struct kva_md_info kmi; 174struct pcpu __pcpu[MAXCPU]; 175struct trapframe frame0; 176int cold = 1; 177long realmem = 0; 178long Maxmem = 0; |
172 | |
173char machine[] = "powerpc"; 174SYSCTL_STRING(_hw, HW_MACHINE, machine, CTLFLAG_RD, machine, 0, ""); 175 176int cacheline_size = 32; 177 178SYSCTL_INT(_machdep, CPU_CACHELINE, cacheline_size, 179 CTLFLAG_RD, &cacheline_size, 0, ""); 180 --- 108 unchanged lines hidden (view full) --- 289 if (mdp != NULL) { 290 preload_metadata = mdp; 291 kmdp = preload_search_by_type("elf kernel"); 292 if (kmdp != NULL) { 293 boothowto = MD_FETCH(kmdp, MODINFOMD_HOWTO, int); 294 kern_envp = MD_FETCH(kmdp, MODINFOMD_ENVP, char *); 295 dtbp = MD_FETCH(kmdp, MODINFOMD_DTBP, vm_offset_t); 296 end = MD_FETCH(kmdp, MODINFOMD_KERNEND, vm_offset_t); | 179char machine[] = "powerpc"; 180SYSCTL_STRING(_hw, HW_MACHINE, machine, CTLFLAG_RD, machine, 0, ""); 181 182int cacheline_size = 32; 183 184SYSCTL_INT(_machdep, CPU_CACHELINE, cacheline_size, 185 CTLFLAG_RD, &cacheline_size, 0, ""); 186 --- 108 unchanged lines hidden (view full) --- 295 if (mdp != NULL) { 296 preload_metadata = mdp; 297 kmdp = preload_search_by_type("elf kernel"); 298 if (kmdp != NULL) { 299 boothowto = MD_FETCH(kmdp, MODINFOMD_HOWTO, int); 300 kern_envp = MD_FETCH(kmdp, MODINFOMD_ENVP, char *); 301 dtbp = MD_FETCH(kmdp, MODINFOMD_DTBP, vm_offset_t); 302 end = MD_FETCH(kmdp, MODINFOMD_KERNEND, vm_offset_t); |
303 304 bootinfo = (uint32_t *)preload_search_info(kmdp, 305 MODINFO_METADATA | MODINFOMD_BOOTINFO); 306 |
|
297#ifdef DDB 298 ksym_start = MD_FETCH(kmdp, MODINFOMD_SSYM, uintptr_t); 299 ksym_end = MD_FETCH(kmdp, MODINFOMD_ESYM, uintptr_t); 300#endif 301 } 302 } else { 303 /* 304 * We should scream but how? Cannot even output anything... 305 */ 306 307 /* 308 * FIXME add return value and handle in the locore so we can 309 * return to the loader maybe? (this seems not very easy to 310 * restore everything as the TLB have all been reprogrammed 311 * in the locore etc...) 312 */ 313 while (1); 314 } 315 | 307#ifdef DDB 308 ksym_start = MD_FETCH(kmdp, MODINFOMD_SSYM, uintptr_t); 309 ksym_end = MD_FETCH(kmdp, MODINFOMD_ESYM, uintptr_t); 310#endif 311 } 312 } else { 313 /* 314 * We should scream but how? Cannot even output anything... 315 */ 316 317 /* 318 * FIXME add return value and handle in the locore so we can 319 * return to the loader maybe? (this seems not very easy to 320 * restore everything as the TLB have all been reprogrammed 321 * in the locore etc...) 322 */ 323 while (1); 324 } 325 |
326#if defined(FDT_DTB_STATIC) 327 /* 328 * In case the device tree blob was not retrieved (from metadata) try 329 * to use the statically embedded one. 330 */ 331 if (dtbp == (vm_offset_t)NULL) 332 dtbp = (vm_offset_t)&fdt_static_dtb; 333#endif 334 |
|
316 if (OF_install(OFW_FDT, 0) == FALSE) 317 while (1); 318 319 if (OF_init((void *)dtbp) != 0) 320 while (1); 321 322 if (fdt_immr_addr(CCSRBAR_VA) != 0) 323 while (1); --- 276 unchanged lines hidden --- | 335 if (OF_install(OFW_FDT, 0) == FALSE) 336 while (1); 337 338 if (OF_init((void *)dtbp) != 0) 339 while (1); 340 341 if (fdt_immr_addr(CCSRBAR_VA) != 0) 342 while (1); --- 276 unchanged lines hidden --- |