From 59ef11de5e3135dd890f86d135c4e76148ff4024 Mon Sep 17 00:00:00 2001 From: "Ronald G. Minnich" Date: Tue, 8 Apr 2003 20:04:45 +0000 Subject: [PATCH] improvements for the real world. --- util/getpir/assignirq.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/util/getpir/assignirq.c b/util/getpir/assignirq.c index c130fab9af..48b3452850 100644 --- a/util/getpir/assignirq.c +++ b/util/getpir/assignirq.c @@ -55,18 +55,22 @@ struct pci_access *pacc; struct pci_dev *dev; // work to minimize: irqused and num* used - -unsigned int irqused[16] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +// for hysterical reasons, we leave 0, 1, 2, 3, 4, 8, 14, and 15 out +// of the picture. +#define M ((unsigned int) -1) +unsigned int irqused[16] = {M, M, M, M, M, 0, 0, 0, M, 0, 0, 0, 0, 0, M, M}; int numa = 0, numb = 0, numbc = 0, numd = 0; +// start at 8 since things seem to like to use high ints +// consider wrapping later ... int getint(u16 m){ - int mask = m, i; + int mask = m>>8, i; unsigned int min = (unsigned int) -1; unsigned int minindex; /* find the least-used interrupt compatible with mask */ printf("getint mask 0x%x\n", mask); - for(minindex = 0, i = 0; i < 16; i++, mask>>=1) { + for(minindex = 8, i = 8; i < 16; i++, mask>>=1) { printf("Check %d\n", i); if (! (mask & 1)) continue;