Deleted Added
full compact
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 ---