Subject: my diffs for Magnum
To: None <port-arc@netbsd.org, port-mips@netbsd.org>
From: Mark Abene <phiber@radicalmedia.com>
List: port-arc
Date: 02/06/2001 02:59:42
--envbJBWh7q8WU6mo
Content-Type: text/plain; charset=us-ascii

Here are my current diffs for the Magnum against NetBSD-current (1.5R),
in the hopes that some of you folks can help me figure out why tsleep()
is failing to wake up.  You'll have a new kernel config file called "MAGNUM",
which is what I'm building with.

Any questions or comments, feel free.

Cheers,
-Mark

P.S.: These diffs are only relevant for REAL Magnum 4000's, not clones.


--envbJBWh7q8WU6mo
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename=arc_diffs

--- sys/arch/mips/include/locore.h.orig	Sun Feb  4 22:15:43 2001
+++ sys/arch/mips/include/locore.h	Sun Feb  4 22:18:13 2001
@@ -232,6 +232,8 @@
 
 #define mips_indexof(addr)	(((int)(addr)) & mips_CacheAliasMask)
 
+extern u_int	mips_dynamic_status_mask;
+
 #ifdef MIPS3
 extern int	mips3_L1TwoWayCache;
 extern int	mips3_cacheflush_bug;
--- sys/arch/mips/mips/locore_mips3.S.orig	Fri Feb  2 19:13:44 2001
+++ sys/arch/mips/mips/locore_mips3.S	Sun Feb  4 07:27:27 2001
@@ -1540,10 +1540,21 @@
 	addu	t1, t0, t2
 	subu	t1, t1, 128
 1:
+#if defined(MIPS_MAGNUM)
 	cache	C_IWBINV_SD, 0(t0)
+	cache	C_IWBINV_SD, 16(t0)
 	cache	C_IWBINV_SD, 32(t0)
+	cache	C_IWBINV_SD, 48(t0)
 	cache	C_IWBINV_SD, 64(t0)
+	cache	C_IWBINV_SD, 80(t0)
 	cache	C_IWBINV_SD, 96(t0)
+	cache	C_IWBINV_SD, 112(t0)
+#else
+	cache	C_IWBINV_SD, 0(t0)
+	cache	C_IWBINV_SD, 32(t0)
+	cache	C_IWBINV_SD, 64(t0)
+	cache	C_IWBINV_SD, 96(t0)
+#endif
 	bne	t0, t1, 1b
 	addu	t0, t0, 128
 2:
@@ -1648,10 +1659,21 @@
 	li	a0, MIPS_KSEG0_START
 	addu	a0, a0, t0	# reduce to kseg0 address
 1:
+#if defined(MIPS_MAGNUM)
 	cache	C_IWBINV_SD, 0(a0)
+	cache	C_IWBINV_SD, 16(a0)
 	cache	C_IWBINV_SD, 32(a0)
+	cache	C_IWBINV_SD, 48(a0)
 	cache	C_IWBINV_SD, 64(a0)
+	cache	C_IWBINV_SD, 80(a0)
 	cache	C_IWBINV_SD, 96(a0)
+	cache	C_IWBINV_SD, 112(a0)
+#else
+	cache	C_IWBINV_SD, 0(a0)
+	cache	C_IWBINV_SD, 32(a0)
+	cache	C_IWBINV_SD, 64(a0)
+	cache	C_IWBINV_SD, 96(a0)
+#endif
 	addu	t1, -1
 	bne	t1, zero, 1b
 	addu	a0, 128
@@ -1699,10 +1721,21 @@
 	cache	C_HWBINV_D, 96(a0)
 	cache	C_HWBINV_D, 112(a0)
 #if 1
+#if defined(MIPS_MAGNUM)
 	cache	C_HWBINV_SD, 0(a0)
+	cache	C_HWBINV_SD, 16(a0)
 	cache	C_HWBINV_SD, 32(a0)
+	cache	C_HWBINV_SD, 48(a0)
 	cache	C_HWBINV_SD, 64(a0)
+	cache	C_HWBINV_SD, 80(a0)
 	cache	C_HWBINV_SD, 96(a0)
+	cache	C_HWBINV_SD, 112(a0)
+#else
+	cache	C_HWBINV_SD, 0(a0)
+	cache	C_HWBINV_SD, 32(a0)
+	cache	C_HWBINV_SD, 64(a0)
+	cache	C_HWBINV_SD, 96(a0)
+#endif
 #endif
 	addu	a1, -1
 	bne	a1, zero, 1b
@@ -1808,10 +1841,21 @@
         addu    t1, t0, t2
         subu    t1, t1, 128
 1:
+#if defined(MIPS_MAGNUM)
         cache   C_IWBINV_SD, 0(t0)
+        cache   C_IWBINV_SD, 16(t0)
         cache   C_IWBINV_SD, 32(t0)
+        cache   C_IWBINV_SD, 48(t0)
         cache   C_IWBINV_SD, 64(t0)
+        cache   C_IWBINV_SD, 80(t0)
         cache   C_IWBINV_SD, 96(t0)
+        cache   C_IWBINV_SD, 112(t0)
+#else
+        cache   C_IWBINV_SD, 0(t0)
+        cache   C_IWBINV_SD, 32(t0)
+        cache   C_IWBINV_SD, 64(t0)
+        cache   C_IWBINV_SD, 96(t0)
+#endif
         bne     t0, t1, 1b
         addu    t0, t0, 128
 2:      
--- sys/arch/mips/mips/mips_machdep.c.orig	Fri Feb  2 18:51:03 2001
+++ sys/arch/mips/mips/mips_machdep.c	Fri Feb  2 19:00:33 2001
@@ -679,7 +679,7 @@
 		printf("Please fix implementation of mips3_*Flush*Cache\n");
 		cpu_reboot(RB_HALT, NULL);
 	}
-	if (mips_L2CachePresent && mips_L2CacheLSize < 32) {
+	if (mips_L2CachePresent && mips_L2CacheLSize < 16) {
 		/*
 		 * current implementation of mips3_FlushCache(),
 		 * mips3_FlushDCache() and mips3_HitFlushDCache() assume
--- sys/arch/arc/arc/arc_trap.c.orig	Sat Feb  3 00:39:27 2001
+++ sys/arch/arc/arc/arc_trap.c	Sun Feb  4 05:47:04 2001
@@ -128,8 +128,13 @@
 	switch(cputype) {
 	case ACER_PICA_61:
 	case MAGNUM:
+#if defined(MIPS_MAGNUM)
+		out32(R4030_SYS_EXT_IMASK,
+		    cpu_int_mask & (~MIPS_INT_MASK_5 >> 10));
+#else
 		out32(R4030_SYS_EXT_IMASK,
 		    cpu_int_mask & (~MIPS_INT_MASK_4 >> 10));
+#endif
 		break;
 	case NEC_R94:
 	case NEC_RAx94:
@@ -159,7 +164,7 @@
 	u_int32_t pc;
 	u_int32_t ipending;		/* pending interrupts & enable mask */
 {
-#if defined(MIPS3) && defined(MIPS_INT_MASK_CLOCK)
+#if defined(MIPS3) && defined(MIPS_INT_MASK_CLOCK) && !defined(MIPS_MAGNUM)
 	if ((ipending & MIPS_INT_MASK_CLOCK) && CPUISMIPS3) {
 		/*
 		 *  Writing a value to the Compare register,
--- sys/arch/arc/arc/clock_mc.c.orig	Fri Feb  2 19:24:48 2001
+++ sys/arch/arc/arc/clock_mc.c	Sun Feb  4 05:28:00 2001
@@ -174,7 +174,12 @@
 	struct clock_softc *csc;
 {
 /* XXX Does not really belong here but for the moment we don't care */
+#if defined(MIPS_MAGNUM)
+	mips3_cp0_count_write(0); /* clear counter */
+	mips3_cp0_compare_write(225000); /* 10ms - 1 */
+#else
 	out32(R4030_SYS_IT_VALUE, 9); /* 10ms - 1 */
+#endif
 	/* Enable periodic clock interrupt */
 	out32(R4030_SYS_EXT_IMASK, cpu_int_mask);
 }
--- sys/arch/arc/arc/machdep.c.orig	Fri Feb  2 18:43:57 2001
+++ sys/arch/arc/arc/machdep.c	Sun Feb  4 22:29:18 2001
@@ -640,7 +640,7 @@
 	/*
 	 * Initialize machine-dependent DDB commands, in case of early panic.
 	 */
-	db_machine_init();
+	/* db_machine_init(); */
 #if 0 /* XXX */
 	/* init symbols if present */
 	if (esym)
@@ -742,6 +742,11 @@
 machine_ConfigCache()
 {
 	switch (cputype) {
+	case MAGNUM:
+		mips_L2CachePresent = 1;
+		mips_L2CacheSize = 1024 * 1024;
+		vm_page_zero_enable = FALSE;
+		break;
 	case ACER_PICA_61:
 #if 0	/* doesn't work */
 		mips_L2CachePresent = 1;
@@ -1313,6 +1318,9 @@
 		 * Disable all interrupts. New masks will be set up
 		 * during system configuration
 		 */
+#if defined(MIPS_MAGNUM)
+		mips_dynamic_status_mask = (MIPS_INT_MASK & ~MIPS_INT_MASK_4);
+#endif
 		out16(PICA_SYS_LB_IE,0x000);
 		out32(R4030_SYS_EXT_IMASK, 0x00);
 		break;
--- sys/arch/arc/jazz/asc.c.orig	Fri Feb  2 18:48:23 2001
+++ sys/arch/arc/jazz/asc.c	Sat Feb  3 16:19:12 2001
@@ -588,7 +588,8 @@
 	wbflush(); DELAY(25);
 	regs->asc_cmd = ASC_CMD_DMA | ASC_CMD_NOP;
 	wbflush(); DELAY(25);
-	asc->is24bit = regs->asc_id == ASC_ID_53CF94;
+	asc->is24bit = (regs->asc_id == ASC_ID_53CF94 ||
+			regs->asc_id == ASC_ID_FAS216);
 
 	asc_reset(asc, regs);
 
@@ -2067,9 +2068,9 @@
 	asc_softc_t asc;
 	int status, ss, ir;
 {
+#ifdef DIAGNOSTIC
 	State *state = &asc->st[asc->target];
 
-#ifdef DIAGNOSTIC
 	if (!(state->flags & DISCONN)) {
 		printf("asc_disconnect: device %d: DISCONN not set!\n",
 			asc->target);
--- sys/arch/arc/jazz/ascreg.h.orig	Fri Feb  2 18:47:52 2001
+++ sys/arch/arc/jazz/ascreg.h	Fri Feb  2 18:48:18 2001
@@ -334,5 +334,6 @@
  * chip identifier
  */
 #define ASC_ID_53CF94		0xa2	/* 53CF94-2 or 53CF96-2 */
+#define ASC_ID_FAS216		0x12
 
 #define	ST_MASK	0x3e
--- sys/arch/arc/jazz/jazzio.c.orig	Fri Feb  2 19:23:16 2001
+++ sys/arch/arc/jazz/jazzio.c	Sun Feb  4 04:53:34 2001
@@ -307,7 +307,11 @@
 		switch (cputype) {
 		case ACER_PICA_61:
 		case MAGNUM:
+#if defined(MIPS_MAGNUM)
+			set_intr(MIPS_INT_MASK_5, pica_clkintr, 1);
+#else	
 			set_intr(MIPS_INT_MASK_4, pica_clkintr, 1);
+#endif
 			break;
 		case NEC_R94:
 		case NEC_RAx94:
@@ -390,15 +394,28 @@
 	unsigned mask;
 	struct clockframe *cf;
 {
-	int temp;
+	u_int32_t temp;
 
+#if defined(MIPS_MAGNUM)
+	temp = mips3_cp0_compare_read();
+	temp += 225000;
+	mips3_cp0_compare_write(temp);
+#else
 	temp = inw(R4030_SYS_IT_STAT);
+#endif
 	(*pica_clock_handler)(cf);
 
+#if defined(MIPS_MAGNUM)
+	/* Re-enable clock interrupts */
+	splx(MIPS_INT_MASK_5 | MIPS_SR_INT_IE);
+
+	return(~MIPS_INT_MASK_5); /* Keep clock interrupts enabled */
+#else
 	/* Re-enable clock interrupts */
 	splx(MIPS_INT_MASK_4 | MIPS_SR_INT_IE);
 
 	return(~MIPS_INT_MASK_4); /* Keep clock interrupts enabled */
+#endif
 }
 
 /*
--- /dev/null	Mon Feb  5 12:19:08 2001
+++ sys/arch/arc/conf/MAGNUM	Mon Feb  5 04:04:29 2001
@@ -0,0 +1,210 @@
+#
+#	configuration file for MIPS Magnum 4000 system
+#
+
+include		"arch/arc/conf/std.arc"
+
+maxusers	4		# estimated number of users
+
+makeoptions	COPTS="-Os"
+
+options		COMCONSOLE
+options		MIPS_MAGNUM
+options		MIPS3_ENABLE_CLOCK_INTR
+options		MIPS_DYNAMIC_STATUS_MASK
+
+# Standard system options
+
+options 	RTC_OFFSET=-300	# hardware clock is this many mins. (Japan)
+options 	NTP		# NTP phase/frequency locked loop
+
+#options 	KTRACE		# system call tracing via ktrace(1)
+
+options 	SYSVMSG		# System V-like message queues
+options 	SYSVSEM		# System V-like semaphores
+options 	SYSVSHM		# System V-like memory sharing
+#options 	SHMMAXPGS=1024	# 1024 pages is the default
+
+#options 	LKM		# loadable kernel modules
+
+# Diagnostic/debugging support options
+options 	DIAGNOSTIC	# cheap kernel consistency checks
+#options 	DEBUG		# expensive debugging checks/support
+#options 	KMEMSTATS	# kernel memory statistics (vmstat -m)
+options 	DDB		# in-kernel debugger
+#options 	DDB_HISTORY_SIZE=100	# enable history editing in DDB
+#options 	KGDB		# remote gdb
+#options 	KGDBRATE=19200	# kernel gdb port rate (default 9600)
+#options 	KGDBDEV="17*256+0"	# device for kernel gdb
+#makeoptions	DEBUG="-g"	# compile full symbol table
+
+# Compatibility options
+#options 	COMPAT_10	# NetBSD 1.0,
+#options 	COMPAT_11	# NetBSD 1.1,
+#options 	COMPAT_12	# NetBSD 1.2,
+options 	COMPAT_13	# NetBSD 1.3,
+options 	COMPAT_14	# NetBSD 1.4,
+options 	COMPAT_43	# and 4.3BSD
+options 	COMPAT_386BSD_MBRPART # recognize old partition ID
+
+# mipsel specific
+#options 	COMPAT_ULTRIX	# Ultrix binary compatibility
+#options 	EXEC_ECOFF	# Ultrix RISC binaries are ECOFF format
+
+# File systems
+file-system 	FFS		# fast filesystem
+#file-system 	EXT2FS		# second extended file system (linux)
+#file-system 	LFS		# log-structured file system
+#file-system 	MFS		# memory file system
+#file-system 	NTFS		# Windows/NT file system (experimental)
+#file-system 	CD9660		# ISO 9660 + Rock Ridge file system
+file-system 	MSDOSFS		# MS-DOS file system
+file-system 	NFS		# Network File System client
+file-system 	FDESC		# /dev/fd
+file-system 	KERNFS		# /kern
+#file-system 	NULLFS		# loopback file system
+#file-system 	OVERLAY		# overlay file system
+#file-system 	PORTAL		# portal filesystem (still experimental)
+file-system 	PROCFS		# /proc
+#file-system 	UMAPFS		# NULLFS + uid and gid remapping
+#file-system 	UNION		# union file system
+#file-system	CODA		# Coda File System; also needs vcoda (below)
+
+# File system options
+#options 	QUOTA		# FFS quotas
+#options 	FFS_EI		# FFS Endian Independent support
+#options 	SOFTDEP		# FFS soft updates support.
+#options 	NFSSERVER	# Network File System server
+#options 	EXT2FS_SYSTEM_FLAGS # makes ext2fs file flags (append and
+				# immutable) behave as system flags.
+
+# Networking options
+#options 	GATEWAY		# IP packet forwarding
+options 	INET		# IP + ICMP + TCP + UDP
+#options 	INET6		# IPV6
+#options 	IPSEC		# IP security
+#options 	IPSEC_ESP	# IP security (encryption part; define w/IPSEC)
+#options 	IPSEC_DEBUG	# debug for IP security
+#options 	MROUTING	# IP multicast routing
+#options 	NS		# XNS
+#options 	NSIP		# XNS tunneling over IP
+#options 	ISO,TPIP	# OSI networking
+#options 	EON		# OSI tunneling over IP
+#options 	CCITT,LLC,HDLC	# X.25
+#options 	NETATALK	# AppleTalk networking protocols
+#options 	PPP_BSDCOMP	# BSD-Compress compression support for PPP
+#options 	PPP_DEFLATE	# Deflate compression support for PPP
+#options 	PPP_FILTER	# Active filter support for PPP (requires bpf)
+#options 	PFIL_HOOKS	# pfil(9) packet filter hooks
+#options 	IPFILTER_LOG	# ipmon(8) log support
+
+# Compatibility with 4.2BSD implementation of TCP/IP.  Not recommended.
+#options 	TCP_COMPAT_42
+
+# These options enable verbose messages for several subsystems.
+# Warning, these may compile large string tables into the kernel!
+#options 	EISAVERBOSE	# verbose EISA device autoconfig messages
+#options 	PCIVERBOSE	# verbose PCI device autoconfig messages
+#options 	PCI_CONFIG_DUMP	# verbosely dump PCI config space
+#options 	SCSIVERBOSE	# human readable SCSI error messages
+
+# wscons terminal emulation
+#options 	WSEMUL_VT100	# VT100 emulation
+
+# Kernel root file system and dump configuration.
+options 	NFS_BOOT_DHCP,NFS_BOOT_BOOTPARAM
+config		netbsd	root on ? type nfs
+
+#
+# Device configuration
+#
+
+mainbus0	at root
+cpu*		at mainbus0
+
+#### Jazz-Internal bus devices
+
+jazzio*		at mainbus0	# Jazz-Internal bus.
+aclock0 	at jazzio?
+#pc0		at jazzio?
+#opms0		at jazzio?
+#vga0		at jazzio?	# Jazz localbus VGA
+#pckbc0		at jazzio?	# PC keyboard controller
+options		COM_FREQ_MAGNUM=8000000	# 8 MHz - Magnum PC/SC
+com0		at jazzio?
+com1		at jazzio?
+#lpt0		at jazzio?
+sn0		at jazzio?
+
+fdc0		at jazzio?
+fd*		at fdc? drive ?
+
+#asc0		at jazzio?
+#scsibus* 	at asc?
+
+#siop0		at jazzio?
+#scsibus* 	at siop?
+
+#### ISA bus devices
+
+#isabr*		at mainbus0	# ISA Bus bridge (std ISA bus).
+#isa*		at isabr?
+
+#com2		at isa? port 0x3f8 irq 4
+#com3		at isa? port 0x2f8 irq 3
+
+#### SCSI bus devices
+
+#sd*		at scsibus? target ? lun ?
+#st*		at scsibus? target ? lun ?
+#cd*		at scsibus? target ? lun ?
+#ch*		at scsibus? target ? lun ?
+#ss*		at scsibus? target ? lun ?
+#uk*		at scsibus? target ? lun ?
+
+#### Workstation Console attachments
+
+#wsdisplay*	at vga?
+#wsdisplay*	at tga?
+#pckbd*		at pckbc?	# PC keyboard (kbd port)
+#wskbd*		at pckbd?
+#pms*		at pckbc?	# PS/2-style mouse (aux port)
+#wsmouse*	at pms?
+#pmsi*		at pckbc?	# PS/2 "Intelli"mouse (aux port)
+#wsmouse*	at pmsi?
+
+#### Pseudo devices
+
+# disk/mass storage pseudo-devices
+#pseudo-device	ccd		4	# concatenated/striped disk devices
+#pseudo-device	raid		4	# RAIDframe disk driver
+#pseudo-device	md		1	# memory disk device (ramdisk)
+pseudo-device	vnd		4	# disk-like interface to files
+
+# network pseudo-devices
+#pseudo-device	bpfilter	8	# Berkeley packet filter
+#pseudo-device	ipfilter		# IP filter (firewall) and NAT
+pseudo-device	loop		1	# network loopback
+#pseudo-device	ppp		2	# Point-to-Point Protocol
+#pseudo-device	sl		2	# Serial Line IP
+#pseudo-device	strip		2	# Starmode Radio IP (Metricom)
+#pseudo-device	tun		2	# network tunneling over tty
+#pseudo-device	gre		2	# generic L3 over IP tunnel
+#pseudo-device	ipip		2	# IP Encapsulation within IP (RFC 2003)
+#pseudo-device	gif		4	# IPv[46] over IPv[46] tunnel (RFC1933)
+#pseudo-device	faith		1	# IPv[46] tcp relay translation i/f
+#pseudo-device	stf		1	# 6to4 IPv6 over IPv4 encapsulation
+
+# miscellaneous pseudo-devices
+pseudo-device	pty			# pseudo-terminals
+#pseudo-device	tb		1	# tablet line discipline
+#pseudo-device	sequencer	1	# MIDI sequencer
+# rnd works; RND_COM does not on port arc yet.
+#pseudo-device	rnd			# /dev/random and in-kernel generator
+#options 	RND_COM			# use "com" randomness as well (BROKEN)
+
+# a pseudo device needed for Coda	# also needs CODA (above)
+#pseudo-device	vcoda		4	# coda minicache <-> venus comm.
+
+# mouse & keyboard multiplexor pseudo-devices
+#pseudo-device	wsmux		2

--envbJBWh7q8WU6mo--