Module Name:    src
Committed By:   tsutsui
Date:           Mon Dec 27 15:23:37 UTC 2010

Modified Files:
        src/sys/arch/hp300/hp300: genassym.cf locore.s
        src/sys/arch/hp300/stand/common: srt0.S

Log Message:
With a quick test, HP9000/362 doesn't seem to have frodo utility chip,
so probe code to identify HP362 taken from OpenBSD has never worked.

Identify HP362 by probing device IDs of the on-board framebuffer instead.

---

>> NetBSD/hp300 Primary Boot, Revision 1.16 (from NetBSD 5.99.41)
>> HP 9000/362 SPU
>> Enter "reset" to reset system.
Boot: [[[sd0a:]netbsd][-a][-c][-d][-s][-v][-q]] :-
2836828+148212 [343504+216292]=0x361b24
Start @ 0xff003400 [1=0xff2dac50-0x361b24]...
Entry point: 0xff003400
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
    2006, 2007, 2008, 2009, 2010
    The NetBSD Foundation, Inc.  All rights reserved.
Copyright (c) 1982, 1986, 1989, 1991, 1993
    The Regents of the University of California.  All rights reserved.

NetBSD 5.99.41 (GENERIC) #135: Mon Dec 27 23:30:21 JST 2010
        tsut...@mirage:/usr/src/sys/arch/hp300/compile/GENERIC
HP 9000/362 (25MHz MC68030 CPU+MMU, 25MHz MC68882 FPU)
total memory = 16372 KB
avail memory = 11480 KB
 :


To generate a diff of this commit:
cvs rdiff -u -r1.42 -r1.43 src/sys/arch/hp300/hp300/genassym.cf
cvs rdiff -u -r1.155 -r1.156 src/sys/arch/hp300/hp300/locore.s
cvs rdiff -u -r1.15 -r1.16 src/sys/arch/hp300/stand/common/srt0.S

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/hp300/hp300/genassym.cf
diff -u src/sys/arch/hp300/hp300/genassym.cf:1.42 src/sys/arch/hp300/hp300/genassym.cf:1.43
--- src/sys/arch/hp300/hp300/genassym.cf:1.42	Mon Dec 20 00:25:33 2010
+++ src/sys/arch/hp300/hp300/genassym.cf	Mon Dec 27 15:23:36 2010
@@ -1,4 +1,4 @@
-#	$NetBSD: genassym.cf,v 1.42 2010/12/20 00:25:33 matt Exp $
+#	$NetBSD: genassym.cf,v 1.43 2010/12/27 15:23:36 tsutsui Exp $
 
 #
 # Copyright (c) 1982, 1990, 1993
@@ -58,6 +58,8 @@
 include <machine/pte.h>
 
 include <hp300/dev/intioreg.h>
+include <hp300/dev/dioreg.h>
+include <hp300/dev/diodevs.h>
 include <hp300/hp300/clockreg.h>
 
 # values for mmutype
@@ -257,8 +259,11 @@
 define	CLKMSB1			CLKMSB1
 define	CLKMSB3			CLKMSB3
 
-# frodo utility chip address (to identify HP362)
-define	FRODO_BASE		FRODO_BASE
+# DIO macro (to identify HP362)
+define	DIOII_BASE		DIOII_BASE
+define	DIO_IDOFF		DIO_IDOFF
+define	DIO_SECIDOFF		DIO_SECIDOFF
+define	DIO_DEVICE_ID_FRAMEBUFFER	DIO_DEVICE_ID_FRAMEBUFFER
 
 # SVR4 binary compatibility
 ifdef COMPAT_SVR4

Index: src/sys/arch/hp300/hp300/locore.s
diff -u src/sys/arch/hp300/hp300/locore.s:1.155 src/sys/arch/hp300/hp300/locore.s:1.156
--- src/sys/arch/hp300/hp300/locore.s:1.155	Mon Dec 20 00:25:33 2010
+++ src/sys/arch/hp300/hp300/locore.s	Mon Dec 27 15:23:36 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: locore.s,v 1.155 2010/12/20 00:25:33 matt Exp $	*/
+/*	$NetBSD: locore.s,v 1.156 2010/12/27 15:23:36 tsutsui Exp $	*/
 
 /*
  * Copyright (c) 1980, 1990, 1993
@@ -251,14 +251,20 @@
 Lisa36x:
 	/*
 	 * If we found a 360, we need to check for a 362 (neither the 360
-	 * nor the 362 have a nonzero mmuid). Since the 362 has a frodo
-	 * utility chip in the DIO hole, check for it.
+	 * nor the 362 have a nonzero mmuid). Identify 362 by checking
+	 * on-board VRX framebuffer which has secid 0x11 at dio scode 132.
 	 */
-	movl	#(INTIOBASE + FRODO_BASE),%a0
+	movl	#DIOII_BASE,%a0		| probe dio scode 132
 	ASRELOC(phys_badaddr,%a3)
 	jbsr	%a3@
-	tstl	%d0			| found a frodo?
-	jne	Lstart1			| no, really a 360
+	tstl	%d0			| device at scode 132?
+	jne	Lstart1			| no, not 362, assume 360
+	movb	%a0@(DIO_IDOFF),%d0
+	cmpb	#DIO_DEVICE_ID_FRAMEBUFFER,%d0	| framebuffer?
+	jne	Lstart1			| no, not 362, assume 360
+	movb	%a0@(DIO_SECIDOFF),%d0
+	cmpb	#0x11,%d0		| VRX sti on 362?
+	jne	Lstart1			| no, not 362, assume 360
 	RELOC(machineid,%a0)
 	movl	#HP_362,%a0@
 	jra	Lstart1

Index: src/sys/arch/hp300/stand/common/srt0.S
diff -u src/sys/arch/hp300/stand/common/srt0.S:1.15 src/sys/arch/hp300/stand/common/srt0.S:1.16
--- src/sys/arch/hp300/stand/common/srt0.S:1.15	Thu Jul 20 13:21:38 2006
+++ src/sys/arch/hp300/stand/common/srt0.S	Mon Dec 27 15:23:37 2010
@@ -1,4 +1,4 @@
-/*	$NetBSD: srt0.S,v 1.15 2006/07/20 13:21:38 tsutsui Exp $	*/
+/*	$NetBSD: srt0.S,v 1.16 2010/12/27 15:23:37 tsutsui Exp $	*/
 
 /*
  * Copyright (c) 1982, 1990, 1993
@@ -183,11 +183,18 @@
 	movl	#HP_400,%a0@		/* must be a 400 */
 	jra	ihpibcheck
 isa36x:
-	movl	#0x41c000,%...@-		/* check (INTIOBASE + FRODO_BASE) */
+	movl	#0x01000000,%...@-	/* check DIOII_BASE (scode 132) */
 	jbsr	_C_LABEL(badaddr)
 	addql	#4,%sp
 	tstl	%d0
-	jne	ihpibcheck
+	jne	ihpibcheck		/* no device, assume 360 */
+	movl	#0x01000000,%a0
+	movb	%a0@(0x01),%d0		/* check device ID at DIO_IDOFF */
+	cmpb	#0x39,%d0		/* framebuffer? */
+	jne	ihpibcheck		/* no, assume 360 */
+	movb	%a0@(0x15),%d0		/* check sec ID at DIO_SECIDOFF */
+	cmpb	#0x11,%d0		/* VRX sti on 362? */
+	jne	ihpibcheck		/* no, assume 360 */
 	lea	_C_LABEL(machineid),%a0
 	movl	#HP_362,%a0@
 	jra	ihpibcheck

Reply via email to