From owner-freebsd-ports Sat Jun 10 8:50:11 2000 Delivered-To: freebsd-ports@freebsd.org Received: from freefall.freebsd.org (freefall.FreeBSD.ORG [204.216.27.21]) by hub.freebsd.org (Postfix) with ESMTP id 10C9637BBF9 for ; Sat, 10 Jun 2000 08:50:02 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.9.3/8.9.2) id IAA09941; Sat, 10 Jun 2000 08:50:02 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Date: Sat, 10 Jun 2000 08:50:02 -0700 (PDT) Message-Id: <200006101550.IAA09941@freefall.freebsd.org> To: freebsd-ports@FreeBSD.org Cc: From: Alexander Langer Subject: Re: ports/19064: Xosview broken on AXP Alpha Reply-To: Alexander Langer Sender: owner-freebsd-ports@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org The following reply was made to PR ports/19064; it has been noted by GNATS. From: Alexander Langer To: "David O'Brien" Cc: FreeBSD-gnats-submit@FreeBSD.ORG Subject: Re: ports/19064: Xosview broken on AXP Alpha Date: Sat, 10 Jun 2000 17:46:10 +0200 Please try these patches: FreeBSD/Alpha is derived from NetBSD/Alpha, so we should use the NetBSD specific code for Alpha. Can you tell me when FreeBSD changed from 16 to 16+ IRQ's? (hopefully FreeBSD_version). I then can also fix the 16+-IRQ-case, which fails due to hardcoding "16". Alex --- bsd/kernel.cc.old Sat Jun 10 15:45:05 2000 +++ bsd/kernel.cc Sat Jun 10 16:21:55 2000 @@ -284,7 +289,11 @@ while (nlp && nlp->n_name) { if ((nlp->n_type == 0) || (nlp->n_value == 0)) /*errx (-1, "kvm_nlist() lookup failed for symbol '%s'.", nlp->n_name);*/ +#ifndef __alpha__ warnx ("kvm_nlist() lookup failed for symbol '%s'.", nlp->n_name); +#else + ; +#endif nlp++; } #ifdef HAVE_DEVSTAT @@ -792,7 +802,7 @@ OpenKDIfNeeded(); nintr = (nlst[EINTRCNT_SYM_INDEX].n_value - nlst[INTRCNT_SYM_INDEX].n_value) / sizeof(int); -#ifdef XOSVIEW_FREEBSD +#if defined(XOSVIEW_FREEBSD) && !defined(__alpha__) /* I'm not sure exactly how FreeBSD does things, but just do * 16 for now. bgrayson */ return 16; @@ -810,9 +820,9 @@ void BSDGetIntrStats (unsigned long intrCount[NUM_INTR]) { -#ifdef XOSVIEW_FREEBSD +#if defined(XOSVIEW_FREEBSD) && !defined(__alpha__) /* FreeBSD has an array of interrupt counts, indexed by device number. These are also indirected by IRQ num with intr_countp: */ safe_kvm_read (nlst[INTRCOUNTP_SYM_INDEX].n_value, kvm_intrptrs, sizeof(kvm_intrptrs)); size_t len = --- bsd/kernel.h.old Sat Jun 10 16:57:26 2000 +++ bsd/kernel.h Sat Jun 10 16:57:59 2000 @@ -66,8 +66,11 @@ FreeBSDGetBufspace(int* bfsp); #endif - +#if defined(XOSVIEW_FREEBSD) && !defined(__alpha__) #define NUM_INTR 16 +#else if defined(XOSVIEW_FREEBSD) && defined(__alpha__) +#define NUM_INTR 256 +#endif int BSDIntrInit(); --- bsd/intmeter.cc.old Sat Jun 10 17:37:21 2000 +++ bsd/intmeter.cc Sat Jun 10 17:37:51 2000 @@ -22,9 +22,9 @@ // out the door. // Same goes for platforms (like Alpha) with more than 16 // interrupts. - : BitMeter( parent, "INTS", "IRQs", 16 /*BSDNumInts()*/, + : BitMeter( parent, "INTS", "IRQs", BSDNumInts(), dolegends, dousedlegends ) { - for ( int i = 0 ; i < 16 ; i++ ) + for ( int i = 0 ; i < BSDNumInts(); i++ ) irqs_[i] = lastirqs_[i] = 0; } @@ -34,7 +34,7 @@ void IntMeter::checkevent( void ){ getirqs(); - for ( int i = 0 ; i < 16 ; i++ ){ + for ( int i = 0 ; i < BSDNumInts ; i++ ){ bits_[i] = ((irqs_[i] - lastirqs_[i]) != 0); lastirqs_[i] = irqs_[i]; } To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-ports" in the body of the message