aim_machdep.c (275268) | aim_machdep.c (277334) |
---|---|
1/*- 2 * Copyright (C) 1995, 1996 Wolfgang Solfrank. 3 * Copyright (C) 1995, 1996 TooLs GmbH. 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 41 unchanged lines hidden (view full) --- 50 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 51 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 52 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 53 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 54 * $NetBSD: machdep.c,v 1.74.2.1 2000/11/01 16:13:48 tv Exp $ 55 */ 56 57#include <sys/cdefs.h> | 1/*- 2 * Copyright (C) 1995, 1996 Wolfgang Solfrank. 3 * Copyright (C) 1995, 1996 TooLs GmbH. 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions 8 * are met: --- 41 unchanged lines hidden (view full) --- 50 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 51 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 52 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 53 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 54 * $NetBSD: machdep.c,v 1.74.2.1 2000/11/01 16:13:48 tv Exp $ 55 */ 56 57#include <sys/cdefs.h> |
58__FBSDID("$FreeBSD: head/sys/powerpc/aim/machdep.c 275268 2014-11-29 20:54:33Z jhibbits $"); | 58__FBSDID("$FreeBSD: head/sys/powerpc/aim/machdep.c 277334 2015-01-18 18:32:43Z nwhitehorn $"); |
59 60#include "opt_compat.h" 61#include "opt_ddb.h" 62#include "opt_kstack_pages.h" 63#include "opt_platform.h" 64 65#include <sys/param.h> 66#include <sys/proc.h> --- 151 unchanged lines hidden (view full) --- 218 219 /* 220 * Set up buffers, so they can be used to read disk labels. 221 */ 222 bufinit(); 223 vm_pager_bufferinit(); 224} 225 | 59 60#include "opt_compat.h" 61#include "opt_ddb.h" 62#include "opt_kstack_pages.h" 63#include "opt_platform.h" 64 65#include <sys/param.h> 66#include <sys/proc.h> --- 151 unchanged lines hidden (view full) --- 218 219 /* 220 * Set up buffers, so they can be used to read disk labels. 221 */ 222 bufinit(); 223 vm_pager_bufferinit(); 224} 225 |
226extern char kernel_text[], _end[]; | 226extern vm_offset_t __startkernel, __endkernel; |
227 228#ifndef __powerpc64__ 229/* Bits for running on 64-bit systems in 32-bit mode. */ 230extern void *testppc64, *testppc64size; 231extern void *restorebridge, *restorebridgesize; 232extern void *rfid_patch, *rfi_patch1, *rfi_patch2; 233extern void *trapcode64; 234#endif --- 4 unchanged lines hidden (view full) --- 239extern void *alitrap, *alisize; 240extern void *dsitrap, *dsisize; 241extern void *decrint, *decrsize; 242extern void *extint, *extsize; 243extern void *dblow, *dbsize; 244extern void *imisstrap, *imisssize; 245extern void *dlmisstrap, *dlmisssize; 246extern void *dsmisstrap, *dsmisssize; | 227 228#ifndef __powerpc64__ 229/* Bits for running on 64-bit systems in 32-bit mode. */ 230extern void *testppc64, *testppc64size; 231extern void *restorebridge, *restorebridgesize; 232extern void *rfid_patch, *rfi_patch1, *rfi_patch2; 233extern void *trapcode64; 234#endif --- 4 unchanged lines hidden (view full) --- 239extern void *alitrap, *alisize; 240extern void *dsitrap, *dsisize; 241extern void *decrint, *decrsize; 242extern void *extint, *extsize; 243extern void *dblow, *dbsize; 244extern void *imisstrap, *imisssize; 245extern void *dlmisstrap, *dlmisssize; 246extern void *dsmisstrap, *dsmisssize; |
247char save_trap_init[0x2f00]; /* EXC_LAST */ | |
248 249uintptr_t | 247 248uintptr_t |
250powerpc_init(vm_offset_t startkernel, vm_offset_t endkernel, 251 vm_offset_t basekernel, void *mdp) | 249powerpc_init(vm_offset_t fdt, vm_offset_t toc, vm_offset_t ofentry, void *mdp) |
252{ 253 struct pcpu *pc; | 250{ 251 struct pcpu *pc; |
252 vm_offset_t startkernel, endkernel; |
|
254 void *generictrap; 255 size_t trap_offset; 256 void *kmdp; 257 char *env; 258 register_t msr, scratch; 259#ifdef WII 260 register_t vers; 261#endif --- 6 unchanged lines hidden (view full) --- 268 vm_offset_t ksym_start; 269 vm_offset_t ksym_end; 270#endif 271 272 kmdp = NULL; 273 trap_offset = 0; 274 cacheline_warn = 0; 275 | 253 void *generictrap; 254 size_t trap_offset; 255 void *kmdp; 256 char *env; 257 register_t msr, scratch; 258#ifdef WII 259 register_t vers; 260#endif --- 6 unchanged lines hidden (view full) --- 267 vm_offset_t ksym_start; 268 vm_offset_t ksym_end; 269#endif 270 271 kmdp = NULL; 272 trap_offset = 0; 273 cacheline_warn = 0; 274 |
276 /* Save trap vectors. */ 277 ofw_save_trap_vec(save_trap_init); | 275 /* Store boot environment state */ 276 OF_initial_setup((void *)fdt, NULL, (int (*)(void *))ofentry); |
278 | 277 |
278 /* First guess at start/end kernel positions */ 279 startkernel = __startkernel; 280 endkernel = __endkernel; 281 |
|
279#ifdef WII 280 /* 281 * The Wii loader doesn't pass us any environment so, mdp 282 * points to garbage at this point. The Wii CPU is a 750CL. 283 */ 284 vers = mfpvr(); 285 if ((vers & 0xfffff0e0) == (MPC750 << 16 | MPC750CL)) 286 mdp = NULL; --- 198 unchanged lines hidden (view full) --- 485 generictrap = &trapcode64; 486 } else { 487 generictrap = &trapcode; 488 } 489 490 #else /* powerpc64 */ 491 cpu_features |= PPC_FEATURE_64; 492 generictrap = &trapcode; | 282#ifdef WII 283 /* 284 * The Wii loader doesn't pass us any environment so, mdp 285 * points to garbage at this point. The Wii CPU is a 750CL. 286 */ 287 vers = mfpvr(); 288 if ((vers & 0xfffff0e0) == (MPC750 << 16 | MPC750CL)) 289 mdp = NULL; --- 198 unchanged lines hidden (view full) --- 488 generictrap = &trapcode64; 489 } else { 490 generictrap = &trapcode; 491 } 492 493 #else /* powerpc64 */ 494 cpu_features |= PPC_FEATURE_64; 495 generictrap = &trapcode; |
496 497 /* Set TOC base so that the interrupt code can get at it */ 498 *((register_t *)TRAP_TOCBASE) = toc; |
|
493 #endif 494 495 bcopy(&rstcode, (void *)(EXC_RST + trap_offset), (size_t)&rstsize); 496 497#ifdef KDB 498 bcopy(&dblow, (void *)(EXC_MCHK + trap_offset), (size_t)&dbsize); 499 bcopy(&dblow, (void *)(EXC_PGM + trap_offset), (size_t)&dbsize); 500 bcopy(&dblow, (void *)(EXC_TRC + trap_offset), (size_t)&dbsize); --- 457 unchanged lines hidden --- | 499 #endif 500 501 bcopy(&rstcode, (void *)(EXC_RST + trap_offset), (size_t)&rstsize); 502 503#ifdef KDB 504 bcopy(&dblow, (void *)(EXC_MCHK + trap_offset), (size_t)&dbsize); 505 bcopy(&dblow, (void *)(EXC_PGM + trap_offset), (size_t)&dbsize); 506 bcopy(&dblow, (void *)(EXC_TRC + trap_offset), (size_t)&dbsize); --- 457 unchanged lines hidden --- |