summaryrefslogtreecommitdiff
path: root/sys/arch
diff options
context:
space:
mode:
authorJason Wright <jason@cvs.openbsd.org>2006-05-30 23:24:16 +0000
committerJason Wright <jason@cvs.openbsd.org>2006-05-30 23:24:16 +0000
commit87fc35398a7e41f5be6b048ee75050b17cbb9281 (patch)
tree2530d890047cf40fdc79079b32809f0de4e0138f /sys/arch
parent46196309614bc3b746024663aa7112a2ce3cbdd3 (diff)
how about we -correctly- match the schizo. When I get home, I'm going
to make this code cleaner, but I'm bloody tired of typing the root device name
Diffstat (limited to 'sys/arch')
-rw-r--r--sys/arch/sparc64/sparc64/autoconf.c18
1 files changed, 16 insertions, 2 deletions
diff --git a/sys/arch/sparc64/sparc64/autoconf.c b/sys/arch/sparc64/sparc64/autoconf.c
index ea97194110a..3074d41f9a1 100644
--- a/sys/arch/sparc64/sparc64/autoconf.c
+++ b/sys/arch/sparc64/sparc64/autoconf.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: autoconf.c,v 1.52 2006/05/30 19:37:29 jason Exp $ */
+/* $OpenBSD: autoconf.c,v 1.53 2006/05/30 23:24:15 jason Exp $ */
/* $NetBSD: autoconf.c,v 1.51 2001/07/24 19:32:11 eeh Exp $ */
/*
@@ -1513,7 +1513,21 @@ instance_match(dev, aux, bp)
DPRINTF(ACDB_BOOTDEV,
("instance_match: mainbus device, want %#x have %#x\n",
ma->ma_upaid, bp->val[0]));
- if (bp->val[0] == ma->ma_upaid)
+ if (bp->val[0] != ma->ma_upaid)
+ break;
+ if (bus_class(dev) != BUSCLASS_SCHIZO)
+ return (1);
+ if (ma->ma_nreg < 1) {
+ DPRINTF(ACDB_BOOTDEV,
+ ("instance match: schizo not enough regs %d\n",
+ ma->ma_nreg));
+ break;
+ }
+ DPRINTF(ACDB_BOOTDEV,
+ ("instance_match: schizo device, want %llx have %llx\n",
+ (unsigned long long)ma->ma_reg[0].ur_paddr & 0x00700000,
+ (unsigned long long)bp->val[1]));
+ if ((ma->ma_reg[0].ur_paddr & 0x00700000) == bp->val[1])
return (1);
break;
case BUSCLASS_SBUS: