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--