Deleted Added
sdiff udiff text old ( 275268 ) new ( 277334 )
full compact
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 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
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;
247
248uintptr_t
249powerpc_init(vm_offset_t fdt, vm_offset_t toc, vm_offset_t ofentry, void *mdp)
250{
251 struct pcpu *pc;
252 vm_offset_t startkernel, endkernel;
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
275 /* Store boot environment state */
276 OF_initial_setup((void *)fdt, NULL, (int (*)(void *))ofentry);
277
278 /* First guess at start/end kernel positions */
279 startkernel = __startkernel;
280 endkernel = __endkernel;
281
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;
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 ---