Added DJMEMCMAX option for recognizing 128 meg SIMMs in Centris and Quadra
610, 650 and 800 systems. From Rob Braun, http://synack.net/~bbraun/netbsdmac2.html
This commit is contained in:
parent
d01d30fa5a
commit
4893db76f5
|
@ -1,4 +1,4 @@
|
|||
# $NetBSD: GENERIC,v 1.214 2013/06/30 21:38:57 rmind Exp $
|
||||
# $NetBSD: GENERIC,v 1.215 2013/07/16 07:31:40 jklos Exp $
|
||||
#
|
||||
# GENERIC machine description file
|
||||
#
|
||||
|
@ -22,7 +22,7 @@ include "arch/mac68k/conf/std.mac68k"
|
|||
|
||||
options INCLUDE_CONFIG_FILE # embed config file in kernel binary
|
||||
|
||||
#ident "GENERIC-$Revision: 1.214 $"
|
||||
#ident "GENERIC-$Revision: 1.215 $"
|
||||
|
||||
maxusers 16 # estimated number of users
|
||||
|
||||
|
@ -35,6 +35,10 @@ options M68020 # Note: must have 68851 PMMU
|
|||
options FPSP
|
||||
options FPU_EMULATE
|
||||
|
||||
# Support for 128 meg SIMMs in Centris / Quadra 610, 650 and 800 machines.
|
||||
# You need to set the total memory in the MacOS Booter.
|
||||
#options DJMEMCMAX
|
||||
|
||||
# Standard system options
|
||||
|
||||
options INSECURE # disable kernel security levels
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# $NetBSD: genassym.cf,v 1.36 2011/01/14 02:06:28 rmind Exp $
|
||||
# $NetBSD: genassym.cf,v 1.37 2013/07/16 07:31:40 jklos Exp $
|
||||
|
||||
#
|
||||
# Copyright (c) 1990 The Regents of the University of California.
|
||||
|
@ -169,6 +169,13 @@ define ENOENT ENOENT
|
|||
define EFAULT EFAULT
|
||||
define ENAMETOOLONG ENAMETOOLONG
|
||||
|
||||
# machine ids
|
||||
define MACH_MACC610 MACH_MACC610
|
||||
define MACH_MACQ610 MACH_MACQ610
|
||||
define MACH_MACC650 MACH_MACC650
|
||||
define MACH_MACQ650 MACH_MACQ650
|
||||
define MACH_MACQ800 MACH_MACQ800
|
||||
|
||||
# SVR4 binary compatibility
|
||||
ifdef COMPAT_SVR4
|
||||
define SVR4_SIGF_HANDLER offsetof(struct svr4_sigframe, sf_handler)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: locore.s,v 1.166 2011/12/22 15:33:29 tsutsui Exp $ */
|
||||
/* $NetBSD: locore.s,v 1.167 2013/07/16 07:31:40 jklos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988 University of Utah.
|
||||
|
@ -273,6 +273,117 @@ Lstart3:
|
|||
movl %a1,%d1
|
||||
.word 0xf518 | pflusha
|
||||
.long 0x4e7b1807 | movc %d1,%srp
|
||||
|
||||
#if defined(DJMEMCMAX)
|
||||
movl %a3,%sp@-
|
||||
cmp #MACH_MACC610,_C_LABEL(machineid)
|
||||
jra Ldjmemc610
|
||||
cmp #MACH_MACQ610,_C_LABEL(machineid)
|
||||
jra Ldjmemc610
|
||||
cmp #MACH_MACC650,_C_LABEL(machineid)
|
||||
jra Ldjmemccfg
|
||||
cmp #MACH_MACQ650,_C_LABEL(machineid)
|
||||
jra Ldjmemccfg
|
||||
cmp #MACH_MACQ800,_C_LABEL(machineid)
|
||||
jra Ldjmemccfg
|
||||
|
||||
jra Lnodjmemc
|
||||
|
||||
Ldjmemccfg:
|
||||
movl #0x50f0e00c,%a0
|
||||
movl %a0@,%d0 | determine where RAM SIMMs start
|
||||
andl #0x000000FF,%d0
|
||||
addl #0x10,%d0 | bank 3 start
|
||||
addl #0x10,%d0 | bank 4 start
|
||||
|
||||
movl #0x50f0e014,%a0
|
||||
movl %d0,%a0@+ | bank 4
|
||||
addl #0x10,%d0
|
||||
movl %d0,%a0@+ | bank 5
|
||||
addl #0x10,%d0
|
||||
|
||||
movl %d0,%a0@+ | bank 6
|
||||
addl #0x10,%d0
|
||||
movl %d0,%a0@+ | bank 7
|
||||
addl #0x10,%d0
|
||||
movl %d0,%a0@+ | bank 8
|
||||
addl #0x10,%d0
|
||||
movl %d0,%a0@+ | bank 9
|
||||
addl #0x10,%d0
|
||||
jra Ldjmemctop
|
||||
|
||||
Ldjmemc610:
|
||||
movl #0x50f0e00c,%a0
|
||||
movl %a0@,%d0 | determine where RAM SIMMs start
|
||||
andl #0x000000FF,%d0
|
||||
addl #0x10,%d0 | bank 3 start
|
||||
|
||||
movl #0x50f0e014,%a0
|
||||
movl %d0,%a0@+ | bank 4
|
||||
addl #0x10,%d0
|
||||
movl %d0,%a0@+ | bank 5
|
||||
movl %d0,%a0@+ | bank 6
|
||||
addl #0x10,%d0
|
||||
movl %d0,%a0@+ | bank 7
|
||||
movl %d0,%a0@+ | bank 8
|
||||
addl #0x10,%d0
|
||||
movl %d0,%a0@+ | bank 9
|
||||
|
||||
Ldjmemctop:
|
||||
movl #0x50F0E02C,%a0
|
||||
movl %d0,%a0@ | memtop
|
||||
|
||||
| preserve ~512KB beyond 4MB just in case
|
||||
movl #0x400000,%a0
|
||||
movl #0x9000000,%a2
|
||||
movl #0xFFFF,%d0
|
||||
L1stbankcopy1:
|
||||
movl %a0@+,%a2@+
|
||||
dbra %d0,L1stbankcopy1
|
||||
movl #0xFFFF,%d0
|
||||
L1stbankcopy2:
|
||||
movl %a0@+,%a2@+
|
||||
dbra %d0,L1stbankcopy2
|
||||
|
||||
lea _ASM_LABEL(Lsetup1stbank),%a0
|
||||
movl #0x8800000,%a2 | Pick a location that should be in bank 4
|
||||
movl #0x64,%d0
|
||||
Ldjcopy:
|
||||
movl %a0@+,%a2@+
|
||||
dbra %d0,Ldjcopy
|
||||
|
||||
movl #0x8800000,%a0
|
||||
lea _ASM_LABEL(Ldjmemcdone),%a2
|
||||
jmp %a0@
|
||||
|
||||
Lsetup1stbank:
|
||||
| now configure banks 2 & 3
|
||||
movl #0x50f0e00c,%a0
|
||||
movl %a0@,%d0 | determine where RAM SIMMs start
|
||||
andl #0x000000FF,%d0
|
||||
movl %d0,%a0@+
|
||||
addl #0x10,%d0 | bank 3 start
|
||||
movl %d0,%a0@
|
||||
|
||||
| and return to where we came from.
|
||||
jmp %a2@
|
||||
|
||||
Ldjmemcdone:
|
||||
movl #0x400000,%a2
|
||||
movl #0x9000000,%a0
|
||||
movl #0xFFFF,%d0
|
||||
Lcopyback1:
|
||||
movl %a0@+,%a2@+
|
||||
dbra %d0,Lcopyback1
|
||||
movl #0xFFFF,%d0
|
||||
Lcopyback2:
|
||||
movl %a0@+,%a2@+
|
||||
dbra %d0,Lcopyback2
|
||||
|
||||
Lnodjmemc:
|
||||
movl %sp@+,%a3
|
||||
#endif
|
||||
|
||||
#if PGSHIFT == 13
|
||||
movl #0xc000,%d0
|
||||
#else
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: machdep.c,v 1.345 2012/08/04 17:18:38 martin Exp $ */
|
||||
/* $NetBSD: machdep.c,v 1.346 2013/07/16 07:31:40 jklos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1988 University of Utah.
|
||||
|
@ -74,7 +74,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.345 2012/08/04 17:18:38 martin Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: machdep.c,v 1.346 2013/07/16 07:31:40 jklos Exp $");
|
||||
|
||||
#include "opt_adb.h"
|
||||
#include "opt_ddb.h"
|
||||
|
@ -172,6 +172,7 @@ vaddr_t SCSIBase;
|
|||
extern int numranges;
|
||||
extern u_long low[8];
|
||||
extern u_long high[8];
|
||||
extern int machineid;
|
||||
|
||||
/* These are used to map NuBus space: */
|
||||
#define NBMAXRANGES 16
|
||||
|
@ -899,7 +900,7 @@ getenvvars(u_long flag, char *buf)
|
|||
/*
|
||||
* More misc stuff from booter.
|
||||
*/
|
||||
mac68k_machine.machineid = getenv("MACHINEID");
|
||||
mac68k_machine.machineid = machineid = getenv("MACHINEID");
|
||||
mac68k_machine.mach_processor = getenv("PROCESSOR");
|
||||
mac68k_machine.mach_memsize = getenv("MEMSIZE");
|
||||
mac68k_machine.do_graybars = getenv("GRAYBARS");
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: pmap_bootstrap.c,v 1.93 2012/02/10 04:49:45 mhitch Exp $ */
|
||||
/* $NetBSD: pmap_bootstrap.c,v 1.94 2013/07/16 07:31:40 jklos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1991, 1993
|
||||
|
@ -36,7 +36,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.93 2012/02/10 04:49:45 mhitch Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: pmap_bootstrap.c,v 1.94 2013/07/16 07:31:40 jklos Exp $");
|
||||
|
||||
#include "opt_ddb.h"
|
||||
#include "opt_kgdb.h"
|
||||
|
@ -166,6 +166,7 @@ pmap_bootstrap(paddr_t nextpa, paddr_t firstpa)
|
|||
for (i = 0; i < numranges; i++)
|
||||
mem_size += high[i] - low[i];
|
||||
nptpages += howmany(m68k_btop(mem_size), NPTEPG);
|
||||
nptpages++;
|
||||
nextpa += nptpages * PAGE_SIZE;
|
||||
|
||||
for (i = 0; i < numranges; i++)
|
||||
|
@ -534,6 +535,17 @@ bootstrap_mac68k(int tc)
|
|||
extern int *esym;
|
||||
paddr_t nextpa;
|
||||
void *oldROMBase;
|
||||
char use_bootmem = 0;
|
||||
|
||||
#ifdef DJMEMCMAX
|
||||
if(mac68k_machine.machineid == MACH_MACC650 ||
|
||||
mac68k_machine.machineid == MACH_MACQ650 ||
|
||||
mac68k_machine.machineid == MACH_MACQ610 ||
|
||||
mac68k_machine.machineid == MACH_MACC610 ||
|
||||
mac68k_machine.machineid == MACH_MACQ800) {
|
||||
use_bootmem = 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
if (mac68k_machine.do_graybars)
|
||||
printf("Bootstrapping NetBSD/mac68k.\n");
|
||||
|
@ -541,8 +553,8 @@ bootstrap_mac68k(int tc)
|
|||
oldROMBase = ROMBase;
|
||||
mac68k_video.mv_phys = mac68k_video.mv_kvaddr;
|
||||
|
||||
if (((tc & 0x80000000) && (mmutype == MMU_68030)) ||
|
||||
((tc & 0x8000) && (mmutype == MMU_68040))) {
|
||||
if ((!use_bootmem) && (((tc & 0x80000000) && (mmutype == MMU_68030)) ||
|
||||
((tc & 0x8000) && (mmutype == MMU_68040)))) {
|
||||
if (mac68k_machine.do_graybars)
|
||||
printf("Getting mapping from MMU.\n");
|
||||
(void) get_mapping();
|
||||
|
|
Loading…
Reference in New Issue