Symbol fixups
authorMichael Brown <mcb30@etherboot.org>
Tue, 3 May 2005 11:29:33 +0000 (11:29 +0000)
committerMichael Brown <mcb30@etherboot.org>
Tue, 3 May 2005 11:29:33 +0000 (11:29 +0000)
15 files changed:
src/drivers/net/davicom.c
src/drivers/net/dmfe.c
src/drivers/net/e1000.c
src/drivers/net/eepro100.c
src/drivers/net/epic100.c
src/drivers/net/forcedeth.c
src/drivers/net/mtd80x.c
src/drivers/net/natsemi.c
src/drivers/net/ns83820.c
src/drivers/net/pcnet32.c
src/drivers/net/rtl8139.c
src/drivers/net/sis900.c
src/drivers/net/tlan.c
src/drivers/net/tlan.h
src/drivers/net/tulip.c

index de2be33..fdbf983 100644 (file)
@@ -141,13 +141,17 @@ static unsigned long ioaddr;
 
 /* transmit descriptor and buffer */
 #define NTXD 2
-static struct txdesc txd[NTXD] __attribute__ ((aligned(4)));
-static unsigned char txb[BUFLEN] __attribute__ ((aligned(4)));
-
-/* receive descriptor(s) and buffer(s) */
 #define NRXD 4
-static struct rxdesc rxd[NRXD] __attribute__ ((aligned(4)));
-static unsigned char rxb[NRXD * BUFLEN] __attribute__ ((aligned(4)));
+struct {
+       struct txdesc txd[NTXD] __attribute__ ((aligned(4)));
+       unsigned char txb[BUFLEN] __attribute__ ((aligned(4)));
+       struct rxdesc rxd[NRXD] __attribute__ ((aligned(4)));
+       unsigned char rxb[NRXD * BUFLEN] __attribute__ ((aligned(4)));
+} davicom_bufs __shared;
+#define txd davicom_bufs.txd
+#define txb davicom_bufs.txb
+#define rxd davicom_bufs.rxd
+#define rxb davicom_bufs.rxb
 static int rxd_tail;
 static int TxPtr;
 
index 9dba477..4061ebf 100644 (file)
@@ -150,7 +150,7 @@ struct rx_desc {
         u32 /* struct rx_desc * */ next_rx_desc;
 } __attribute__ ((aligned(32)));
 
-struct dmfe_private {
+static struct dmfe_private {
        u32 chip_id;            /* Chip vendor/Device ID */
        u32 chip_revision;      /* Chip revision */
        u32 cr0_data;
@@ -214,26 +214,21 @@ static u8 SF_mode;                /* Special Function: 1:VLAN, 2:RX Flow Control
 /**********************************************
 * Descriptor Ring and Buffer defination
 ***********************************************/
-/* Define the TX Descriptor */
-static struct tx_desc txd[TX_DESC_CNT]
-    __attribute__ ((aligned(32)));
-
-/* Create a static buffer of size PKT_BUF_SZ for each TX Descriptor.
-  All descriptors point to a part of this buffer */
-static unsigned char txb[TX_BUF_ALLOC * TX_DESC_CNT]
-    __attribute__ ((aligned(32)));
-
-/* Define the RX Descriptor */
-static struct rx_desc rxd[RX_DESC_CNT]
-__attribute__ ((aligned(32)));
-
-/* Create a static buffer of size PKT_BUF_SZ for each RX Descriptor.
-   All descriptors point to a part of this buffer */
-static unsigned char rxb[RX_ALLOC_SIZE * RX_DESC_CNT]
-__attribute__ ((aligned(32)));
+struct {
+       struct tx_desc txd[TX_DESC_CNT] __attribute__ ((aligned(32)));
+       unsigned char txb[TX_BUF_ALLOC * TX_DESC_CNT]
+       __attribute__ ((aligned(32)));
+       struct rx_desc rxd[RX_DESC_CNT] __attribute__ ((aligned(32)));
+       unsigned char rxb[RX_ALLOC_SIZE * RX_DESC_CNT]
+       __attribute__ ((aligned(32)));
+} dmfe_bufs __shared;
+#define txd dmfe_bufs.txd
+#define txb dmfe_bufs.txb
+#define rxd dmfe_bufs.rxd
+#define rxb dmfe_bufs.rxb
 
 /* NIC specific static variables go here */
-long int BASE;
+static long int BASE;
 
 static u16 read_srom_word(long ioaddr, int offset);
 static void dmfe_init_dm910x(struct nic *nic);
index 3dc8b88..d5de2cc 100644 (file)
@@ -89,9 +89,12 @@ static struct nic_operations e1000_operations;
 static struct pci_driver e1000_driver;
 
 static struct e1000_hw hw;
-static char tx_pool[128 + 16];
-static char rx_pool[128 + 16];
-static char packet[2096];
+
+struct {
+       char tx_pool[128 + 16];
+       char rx_pool[128 + 16];
+       char packet[2096];
+} e1000_bufs __shared;
 
 static struct e1000_tx_desc *tx_base;
 static struct e1000_rx_desc *rx_base;
@@ -171,13 +174,13 @@ static void e1000_irq(struct nic *nic, irq_action_t action);
 
 #define E1000_WRITE_FLUSH(a) {uint32_t x; x = E1000_READ_REG(a, STATUS);}
 
-uint32_t
+static inline uint32_t
 e1000_io_read(struct e1000_hw *hw __unused, uint32_t port)
 {
         return inl(port);
 }
 
-void
+static inline void
 e1000_io_write(struct e1000_hw *hw __unused, uint32_t port, uint32_t value)
 {
         outl(value, port);
@@ -724,11 +727,10 @@ e1000_clear_vfta(struct e1000_hw *hw)
 * hw - Struct containing variables accessed by shared code
 * offset - offset to write to * value - value to write
 *****************************************************************************/
-void e1000_write_reg_io(struct e1000_hw *hw, uint32_t offset, uint32_t value){
-       uint32_t io_addr = hw->io_base;
-       uint32_t io_data = hw->io_base + 4;
-       e1000_io_write(hw, io_addr, offset);
-       e1000_io_write(hw, io_data, value);
+static inline void e1000_write_reg_io(struct e1000_hw *hw, uint32_t offset,
+                                     uint32_t value){
+       e1000_io_write(hw, hw->io_base, offset);
+       e1000_io_write(hw, hw->io_base + 4, value);
 }
 
 /******************************************************************************
@@ -3362,7 +3364,7 @@ static void fill_rx (void)
        rd = rx_base + rx_tail;
        rx_tail = (rx_tail + 1) % 8;
        memset (rd, 0, 16);
-       rd->buffer_addr = virt_to_bus(&packet);
+       rd->buffer_addr = virt_to_bus(&e1000_bufs.packet);
        E1000_WRITE_REG (&hw, RDT, rx_tail);
 }
 
@@ -3371,7 +3373,7 @@ static void init_descriptor (void)
        unsigned long ptr;
        unsigned long tctl;
 
-       ptr = virt_to_phys(tx_pool);
+       ptr = virt_to_phys(e1000_bufs.tx_pool);
        if (ptr & 0xf)
                ptr = (ptr + 0x10) & (~0xf);
 
@@ -3409,7 +3411,7 @@ static void init_descriptor (void)
        rx_tail = 0;
        /* disable receive */
        E1000_WRITE_REG (&hw, RCTL, 0);
-       ptr = virt_to_phys(rx_pool);
+       ptr = virt_to_phys(e1000_bufs.rx_pool);
        if (ptr & 0xf)
                ptr = (ptr + 0x10) & (~0xf);
        rx_base = phys_to_virt(ptr);
@@ -3454,7 +3456,7 @@ e1000_poll (struct nic *nic, int retrieve)
        if ( ! retrieve ) return 1;
 
        //      printf("recv: packet %! -> %! len=%d \n", packet+6, packet,rd->Length);
-       memcpy (nic->packet, packet, rd->length);
+       memcpy (nic->packet, e1000_bufs.packet, rd->length);
        nic->packetlen = rd->length;
        fill_rx ();
 
index 37987ad..590b37c 100644 (file)
@@ -262,7 +262,10 @@ static struct nic_operations eepro100_operations;
 static struct pci_driver eepro100_driver;
 
 #define RXFD_COUNT 4
-static struct RxFD rxfds[RXFD_COUNT];
+struct {
+       struct RxFD rxfds[RXFD_COUNT];
+} eepro100_bufs __shared;
+#define rxfds eepro100_bufs.rxfds
 static unsigned int rxfd = 0;
 
 static int congenb = 0;         /* Enable congestion control in the DP83840. */
index cbbb7ac..574f094 100644 (file)
@@ -86,12 +86,18 @@ static unsigned int cur_rx, cur_tx;         /* The next free ring entry */
 static unsigned short  eeprom[64];
 #endif
 static signed char     phys[4];                /* MII device addresses. */
-static struct epic_rx_desc     rx_ring[RX_RING_SIZE]
+struct {
+       struct epic_rx_desc     rx_ring[RX_RING_SIZE]
        __attribute__ ((aligned(4)));
-static struct epic_tx_desc     tx_ring[TX_RING_SIZE]
+       struct epic_tx_desc     tx_ring[TX_RING_SIZE]
        __attribute__ ((aligned(4)));
-static unsigned char           rx_packet[PKT_BUF_SZ * RX_RING_SIZE];
-static unsigned char           tx_packet[PKT_BUF_SZ * TX_RING_SIZE];
+       unsigned char           rx_packet[PKT_BUF_SZ * RX_RING_SIZE];
+       unsigned char           tx_packet[PKT_BUF_SZ * TX_RING_SIZE];
+} epic100_bufs __shared;
+#define rx_ring epic100_bufs.rx_ring
+#define tx_ring epic100_bufs.tx_ring
+#define rx_packet epic100_bufs.rx_packet
+#define tx_packet epic100_bufs.tx_packet
 
 /***********************************************************************/
 /*                    Externally visible functions                     */
index a3204cb..3297eff 100644 (file)
@@ -71,7 +71,7 @@ typedef signed int s32;
 #define virt_to_le32desc(addr)  cpu_to_le32(virt_to_bus(addr))
 #define le32desc_to_virt(addr)  bus_to_virt(le32_to_cpu(addr))
 
-unsigned long BASE;
+static unsigned long BASE;
 /* NIC specific static variables go here */
 
 
@@ -290,24 +290,20 @@ struct ring_desc {
 };
 
 
-/* Define the TX Descriptor */
-static struct ring_desc tx_ring[TX_RING];
-
-/* Create a static buffer of size RX_BUF_SZ for each
-TX Descriptor.  All descriptors point to a
-part of this buffer */
-static unsigned char txb[TX_RING * RX_NIC_BUFSIZE];
-
-/* Define the TX Descriptor */
-static struct ring_desc rx_ring[RX_RING];
-
-/* Create a static buffer of size RX_BUF_SZ for each
-RX Descriptor   All descriptors point to a
-part of this buffer */
-static unsigned char rxb[RX_RING * RX_NIC_BUFSIZE];
+/* Define the TX and RX Descriptor and Buffers */
+struct {
+       struct ring_desc tx_ring[TX_RING];
+       unsigned char txb[TX_RING * RX_NIC_BUFSIZE];
+       struct ring_desc rx_ring[RX_RING];
+       unsigned char rxb[RX_RING * RX_NIC_BUFSIZE];
+} forcedeth_bufs __shared;
+#define tx_ring forcedeth_bufs.tx_ring
+#define rx_ring forcedeth_bufs.rx_ring
+#define txb forcedeth_bufs.txb
+#define rxb forcedeth_bufs.rxb
 
 /* Private Storage for the NIC */
-struct forcedeth_private {
+static struct forcedeth_private {
        /* General data:
         * Locking: spin_lock(&np->lock); */
        int in_shutdown;
@@ -322,19 +318,13 @@ struct forcedeth_private {
        /* rx specific fields.
         * Locking: Within irq hander or disable_irq+spin_lock(&np->lock);
         */
-       struct ring_desc *rx_ring;
        unsigned int cur_rx, refill_rx;
-       struct sk_buff *rx_skbuff[RX_RING];
-       u32 rx_dma[RX_RING];
        unsigned int rx_buf_sz;
 
        /*
         * tx specific fields.
         */
-       struct ring_desc *tx_ring;
        unsigned int next_tx, nic_tx;
-       struct sk_buff *tx_skbuff[TX_RING];
-       u32 tx_dma[TX_RING];
        u16 tx_flags;
 } npx;
 
index 72e4662..3d974ab 100644 (file)
@@ -368,16 +368,14 @@ enum tx_desc_control_bits {
 #define LinkIsUp2 0x00040000
 
 /* Create a static buffer of size PKT_BUF_SZ for each
-TX Descriptor.  All descriptors point to a
+RX and TX Descriptor.  All descriptors point to a
 part of this buffer */
-static u8 txb[PKT_BUF_SZ * TX_RING_SIZE]
-__attribute__ ((aligned(8)));
-
-/* Create a static buffer of size PKT_BUF_SZ for each
-RX Descriptor   All descriptors point to a
-part of this buffer */
-static u8 rxb[PKT_BUF_SZ * RX_RING_SIZE]
-__attribute__ ((aligned(8)));
+struct {
+       u8 txb[PKT_BUF_SZ * TX_RING_SIZE] __attribute__ ((aligned(8)));
+       u8 rxb[PKT_BUF_SZ * RX_RING_SIZE] __attribute__ ((aligned(8)));
+} mtd80x_bufs __shared;
+#define txb mtd80x_bufs.txb
+#define rxb mtd80x_bufs.rxb
 
 /* The Tulip Rx and Tx buffer descriptors. */
 struct mtd_desc
index 7966b85..003b979 100644 (file)
@@ -205,11 +205,16 @@ static unsigned int tx_config;
    longword aligned 
 */
 
-static BufferDesc txd              __attribute__ ((aligned(4)));
-static BufferDesc rxd[NUM_RX_DESC] __attribute__ ((aligned(4)));
-
-static unsigned char txb[TX_BUF_SIZE] __attribute__ ((aligned(4)));
-static unsigned char rxb[NUM_RX_DESC * RX_BUF_SIZE] __attribute__ ((aligned(4)));
+struct {
+    BufferDesc txd              __attribute__ ((aligned(4)));
+    BufferDesc rxd[NUM_RX_DESC] __attribute__ ((aligned(4)));
+    unsigned char txb[TX_BUF_SIZE] __attribute__ ((aligned(4)));
+    unsigned char rxb[NUM_RX_DESC * RX_BUF_SIZE] __attribute__ ((aligned(4)));
+} natsemi_bufs __shared;
+#define txd natsemi_bufs.txd
+#define rxd natsemi_bufs.rxd
+#define txb natsemi_bufs.txb
+#define rxb natsemi_bufs.rxb
 
 /* Function Prototypes */
 
index c29684c..d4fafb6 100755 (executable)
@@ -393,24 +393,18 @@ struct ns83820_private {
 } nsx;
 static struct ns83820_private *ns;
 
-/* Define the TX Descriptor */
-static struct ring_desc tx_ring[NR_TX_DESC]
-    __attribute__ ((aligned(8)));
-
-/* Create a static buffer of size REAL_RX_BUF_SIZE for each
-TX Descriptor.  All descriptors point to a
-part of this buffer */
-static unsigned char txb[NR_TX_DESC * REAL_RX_BUF_SIZE];
-
-/* Define the TX Descriptor */
-static struct ring_desc rx_ring[NR_RX_DESC]
-    __attribute__ ((aligned(8)));
-
-/* Create a static buffer of size REAL_RX_BUF_SIZE for each
-RX Descriptor   All descriptors point to a
-part of this buffer */
-static unsigned char rxb[NR_RX_DESC * REAL_RX_BUF_SIZE]
-    __attribute__ ((aligned(8)));
+/* Define the TX and RX Descriptor and Buffers */
+struct {
+       struct ring_desc tx_ring[NR_TX_DESC] __attribute__ ((aligned(8)));
+       unsigned char txb[NR_TX_DESC * REAL_RX_BUF_SIZE];
+       struct ring_desc rx_ring[NR_RX_DESC] __attribute__ ((aligned(8)));
+       unsigned char rxb[NR_RX_DESC * REAL_RX_BUF_SIZE]
+       __attribute__ ((aligned(8)));
+} ns83820_bufs __shared;
+#define tx_ring ns83820_bufs.tx_ring
+#define rx_ring ns83820_bufs.rx_ring
+#define txb ns83820_bufs.txb
+#define rxb ns83820_bufs.rxb
 
 static void phy_intr(struct nic *nic __unused)
 {
index 10a7193..5a0bb14 100644 (file)
@@ -182,20 +182,6 @@ static int full_duplex[MAX_UNITS];
 
 #define PCNET32_TOTAL_SIZE     0x20
 
-/* Buffers for the tx and Rx */
-
-/* Create a static buffer of size PKT_BUF_SZ for each
-TX Descriptor.  All descriptors point to a
-part of this buffer */
-static unsigned char txb[PKT_BUF_SZ * TX_RING_SIZE];
-//    __attribute__ ((aligned(16)));
-
-/* Create a static buffer of size PKT_BUF_SZ for each
-RX Descriptor   All descriptors point to a
-part of this buffer */
-static unsigned char rxb[RX_RING_SIZE * PKT_BUF_SZ];
-//    __attribute__ ((aligned(16)));
-
 /* The PCNET32 Rx and Tx ring descriptors. */
 struct pcnet32_rx_head {
        u32 base;
@@ -235,14 +221,15 @@ struct pcnet32_access {
        void (*reset) (unsigned long);
 };
 
-/* Define the TX Descriptor */
-static struct pcnet32_tx_head tx_ring[TX_RING_SIZE]
-    __attribute__ ((aligned(16)));
-
-
-/* Define the RX Descriptor */
-static struct pcnet32_rx_head rx_ring[RX_RING_SIZE]
-    __attribute__ ((aligned(16)));
+/* Define the TX and RX Descriptors and Rings */
+struct {
+       struct pcnet32_tx_head tx_ring[TX_RING_SIZE]
+       __attribute__ ((aligned(16)));
+       struct pcnet32_rx_head rx_ring[RX_RING_SIZE]
+       __attribute__ ((aligned(16)));
+       unsigned char txb[PKT_BUF_SZ * TX_RING_SIZE];
+       unsigned char rxb[RX_RING_SIZE * PKT_BUF_SZ];
+} pcnet32_bufs __shared;
 
 /* May need to be moved to mii.h */
 struct mii_if_info {
@@ -411,16 +398,17 @@ static int pcnet32_init_ring(struct nic *nic)
        lp->cur_rx = lp->cur_tx = 0;
 
        for (i = 0; i < RX_RING_SIZE; i++) {
-               rx_ring[i].base = (u32) virt_to_le32desc(&rxb[i]);
-               rx_ring[i].buf_length = le16_to_cpu(-PKT_BUF_SZ);
-               rx_ring[i].status = le16_to_cpu(0x8000);
+               pcnet32_bufs.rx_ring[i].base =
+                       virt_to_le32desc(&pcnet32_bufs.rxb[i]);
+               pcnet32_bufs.rx_ring[i].buf_length = le16_to_cpu(-PKT_BUF_SZ);
+               pcnet32_bufs.rx_ring[i].status = le16_to_cpu(0x8000);
        }
 
        /* The Tx buffer address is filled in as needed, but we do need to clear
           the upper ownership bit. */
        for (i = 0; i < TX_RING_SIZE; i++) {
-               tx_ring[i].base = 0;
-               tx_ring[i].status = 0;
+               pcnet32_bufs.tx_ring[i].base = 0;
+               pcnet32_bufs.tx_ring[i].status = 0;
        }
 
 
@@ -428,8 +416,8 @@ static int pcnet32_init_ring(struct nic *nic)
            le16_to_cpu(TX_RING_LEN_BITS | RX_RING_LEN_BITS);
        for (i = 0; i < 6; i++)
                lp->init_block.phys_addr[i] = nic->node_addr[i];
-       lp->init_block.rx_ring = (u32) virt_to_le32desc(&rx_ring[0]);
-       lp->init_block.tx_ring = (u32) virt_to_le32desc(&tx_ring[0]);
+       lp->init_block.rx_ring = virt_to_le32desc(&pcnet32_bufs.rx_ring[0]);
+       lp->init_block.tx_ring = virt_to_le32desc(&pcnet32_bufs.tx_ring[0]);
        return 0;
 }
 
@@ -547,11 +535,11 @@ static int pcnet32_poll(struct nic *nic __unused, int retrieve)
        /* nic->packet should contain data on return */
        /* nic->packetlen should contain length of data */
 
-       int status;
+       signed char status;
        int entry;
 
        entry = lp->cur_rx & RX_RING_MOD_MASK;
-       status = ((short) le16_to_cpu(rx_ring[entry].status) >> 8);
+       status = (le16_to_cpu(pcnet32_bufs.rx_ring[entry].status) >> 8);
 
        if (status < 0)
                return 0;
@@ -560,13 +548,16 @@ static int pcnet32_poll(struct nic *nic __unused, int retrieve)
 
        if (status == 0x03) {
                nic->packetlen =
-                   (le32_to_cpu(rx_ring[entry].msg_length) & 0xfff) - 4;
-               memcpy(nic->packet, &rxb[entry], nic->packetlen);
+                       (le32_to_cpu(pcnet32_bufs.rx_ring[entry].msg_length)
+                        & 0xfff) - 4;
+               memcpy(nic->packet, &pcnet32_bufs.rxb[entry], nic->packetlen);
 
                /* Andrew Boyd of QNX reports that some revs of the 79C765
                 * clear the buffer length */
-               rx_ring[entry].buf_length = le16_to_cpu(-PKT_BUF_SZ);
-               rx_ring[entry].status |= le16_to_cpu(0x8000);   /* prime for next receive */
+               pcnet32_bufs.rx_ring[entry].buf_length
+                       = le16_to_cpu(-PKT_BUF_SZ);
+               /* prime for next receive */
+               pcnet32_bufs.rx_ring[entry].status |= le16_to_cpu(0x8000);
                /* Switch to the next Rx ring buffer */
                lp->cur_rx++;
 
@@ -594,7 +585,7 @@ static void pcnet32_transmit(struct nic *nic __unused, const char *d,       /* Destina
 
        status = 0x8300;
        /* point to the current txb incase multiple tx_rings are used */
-       ptxb = txb + (lp->cur_tx * PKT_BUF_SZ);
+       ptxb = pcnet32_bufs.txb + (lp->cur_tx * PKT_BUF_SZ);
 
        /* copy the packet to ring buffer */
        memcpy(ptxb, d, ETH_ALEN);      /* dst */
@@ -607,12 +598,12 @@ static void pcnet32_transmit(struct nic *nic __unused, const char *d,     /* Destina
        while (s < ETH_ZLEN)    /* pad to min length */
                ptxb[s++] = '\0';
 
-       tx_ring[entry].length = le16_to_cpu(-s);
-       tx_ring[entry].misc = 0x00000000;
-       tx_ring[entry].base = (u32) virt_to_le32desc(ptxb);
+       pcnet32_bufs.tx_ring[entry].length = le16_to_cpu(-s);
+       pcnet32_bufs.tx_ring[entry].misc = 0x00000000;
+       pcnet32_bufs.tx_ring[entry].base = (u32) virt_to_le32desc(ptxb);
 
        /* we set the top byte as the very last thing */
-       tx_ring[entry].status = le16_to_cpu(status);
+       pcnet32_bufs.tx_ring[entry].status = le16_to_cpu(status);
 
 
        /* Trigger an immediate send poll */
@@ -622,14 +613,14 @@ static void pcnet32_transmit(struct nic *nic __unused, const char *d,     /* Destina
        lp->cur_tx = 0;         /* (lp->cur_tx + 1); */
        time = currticks() + TICKS_PER_SEC;     /* wait one second */
        while (currticks() < time &&
-              ((short) le16_to_cpu(tx_ring[entry].status) < 0));
+              ((short) le16_to_cpu(pcnet32_bufs.tx_ring[entry].status) < 0));
 
-       if ((short) le16_to_cpu(tx_ring[entry].status) < 0)
+       if ((short) le16_to_cpu(pcnet32_bufs.tx_ring[entry].status) < 0)
                printf("PCNET32 timed out on transmit\n");
 
        /* Stop pointing at the current txb
         * otherwise the card continues to send the packet */
-       tx_ring[entry].base = 0;
+       pcnet32_bufs.tx_ring[entry].base = 0;
 
 }
 
@@ -882,8 +873,8 @@ static int pcnet32_probe ( struct nic *nic, struct pci_device *pci ) {
                lp->init_block.phys_addr[i] = nic->node_addr[i];
        lp->init_block.filter[0] = 0xffffffff;
        lp->init_block.filter[1] = 0xffffffff;
-       lp->init_block.rx_ring = virt_to_bus(&rx_ring);
-       lp->init_block.tx_ring = virt_to_bus(&tx_ring);
+       lp->init_block.rx_ring = virt_to_bus(&pcnet32_bufs.rx_ring);
+       lp->init_block.tx_ring = virt_to_bus(&pcnet32_bufs.tx_ring);
 
        /* switch pcnet32 to 32bit mode */
        a->write_bcr(ioaddr, 20, 2);
index da5a765..10ca136 100644 (file)
@@ -169,8 +169,12 @@ enum rx_mode_bits {
 static unsigned int cur_rx,cur_tx;
 
 /* The RTL8139 can only transmit from a contiguous, aligned memory block.  */
-static unsigned char tx_buffer[TX_BUF_SIZE] __attribute__((aligned(4)));
-static unsigned char rx_ring[RX_BUF_LEN+16] __attribute__((aligned(4)));
+struct {
+       unsigned char tx_buffer[TX_BUF_SIZE] __attribute__((aligned(4)));
+       unsigned char rx_ring[RX_BUF_LEN+16] __attribute__((aligned(4)));
+} rtl8139_bufs __shared;
+#define tx_buffer rtl8139_bufs.tx_buffer
+#define rx_ring rtl8139_bufs.rx_ring
 
 static int rtl8139_probe(struct nic *nic,struct pci_device *pci);
 static int read_eeprom(struct nic *nic, int location, int addr_len);
index eb80a52..b5ba3f0 100644 (file)
@@ -64,10 +64,16 @@ static unsigned int cur_phy;
 
 static unsigned int cur_rx;
 
-static BufferDesc txd;
-static BufferDesc rxd[NUM_RX_DESC];
-static unsigned char txb[TX_BUF_SIZE];
-static unsigned char rxb[NUM_RX_DESC * RX_BUF_SIZE];
+struct {
+    BufferDesc txd;
+    BufferDesc rxd[NUM_RX_DESC];
+    unsigned char txb[TX_BUF_SIZE];
+    unsigned char rxb[NUM_RX_DESC * RX_BUF_SIZE];
+} sis900_bufs __shared;
+#define txd sis900_bufs.txd
+#define rxd sis900_bufs.rxd
+#define txb sis900_bufs.txb
+#define rxb sis900_bufs.rxb
 
 #if 0
 static struct mac_chip_info {
index 0f7ef19..4ae6f96 100644 (file)
@@ -100,7 +100,7 @@ static void TLan_MiiSync(u16);
 static void TLan_MiiWriteReg(struct nic *nic __unused, u16, u16, u16);
 
 
-const char *media[] = {
+static const char *media[] = {
        "10BaseT-HD ", "10BaseT-FD ", "100baseTx-HD ",
        "100baseTx-FD", "100baseT4", 0
 };
@@ -187,21 +187,26 @@ struct TLanList {
        } buffer[TLAN_BUFFERS_PER_LIST];
 };
 
-struct TLanList tx_ring[TLAN_NUM_TX_LISTS];
-static unsigned char txb[TLAN_MAX_FRAME_SIZE * TLAN_NUM_TX_LISTS];
-
-struct TLanList rx_ring[TLAN_NUM_RX_LISTS];
-static unsigned char rxb[TLAN_MAX_FRAME_SIZE * TLAN_NUM_RX_LISTS];
+struct {
+       struct TLanList tx_ring[TLAN_NUM_TX_LISTS];
+       unsigned char txb[TLAN_MAX_FRAME_SIZE * TLAN_NUM_TX_LISTS];
+       struct TLanList rx_ring[TLAN_NUM_RX_LISTS];
+       unsigned char rxb[TLAN_MAX_FRAME_SIZE * TLAN_NUM_RX_LISTS];
+} tlan_buffers __shared;
+#define tx_ring tlan_buffers.tx_ring
+#define txb tlan_buffers.txb
+#define rx_ring tlan_buffers.rx_ring
+#define rxb tlan_buffers.rxb
 
 typedef u8 TLanBuffer[TLAN_MAX_FRAME_SIZE];
 
-int chip_idx;
+static int chip_idx;
 
 /*****************************************************************
 * TLAN Private Information Structure
 *
 ****************************************************************/
-struct tlan_private {
+static struct tlan_private {
        unsigned short vendor_id;       /* PCI Vendor code */
        unsigned short dev_id;  /* PCI Device code */
        const char *nic_name;
@@ -226,7 +231,7 @@ struct tlan_private {
 
 static struct tlan_private *priv;
 
-u32 BASE;
+static u32 BASE;
 
 /***************************************************************
 *      TLan_ResetLists
@@ -242,7 +247,7 @@ u32 BASE;
 *
 **************************************************************/
 
-void TLan_ResetLists(struct nic *nic __unused)
+static void TLan_ResetLists(struct nic *nic __unused)
 {
 
        int i;
index 35753e6..e0379a7 100644 (file)
@@ -393,7 +393,7 @@ typedef struct tlan_adapter_entry {
 
 /* Routines to access internal registers. */
 
-inline u8 TLan_DioRead8(u16 base_addr, u16 internal_addr)
+static inline u8 TLan_DioRead8(u16 base_addr, u16 internal_addr)
 {
        outw(internal_addr, base_addr + TLAN_DIO_ADR);
        return (inb((base_addr + TLAN_DIO_DATA) + (internal_addr & 0x3)));
@@ -403,7 +403,7 @@ inline u8 TLan_DioRead8(u16 base_addr, u16 internal_addr)
 
 
 
-inline u16 TLan_DioRead16(u16 base_addr, u16 internal_addr)
+static inline u16 TLan_DioRead16(u16 base_addr, u16 internal_addr)
 {
        outw(internal_addr, base_addr + TLAN_DIO_ADR);
        return (inw((base_addr + TLAN_DIO_DATA) + (internal_addr & 0x2)));
@@ -413,7 +413,7 @@ inline u16 TLan_DioRead16(u16 base_addr, u16 internal_addr)
 
 
 
-inline u32 TLan_DioRead32(u16 base_addr, u16 internal_addr)
+static inline u32 TLan_DioRead32(u16 base_addr, u16 internal_addr)
 {
        outw(internal_addr, base_addr + TLAN_DIO_ADR);
        return (inl(base_addr + TLAN_DIO_DATA));
@@ -423,7 +423,7 @@ inline u32 TLan_DioRead32(u16 base_addr, u16 internal_addr)
 
 
 
-inline void TLan_DioWrite8(u16 base_addr, u16 internal_addr, u8 data)
+static inline void TLan_DioWrite8(u16 base_addr, u16 internal_addr, u8 data)
 {
        outw(internal_addr, base_addr + TLAN_DIO_ADR);
        outb(data, base_addr + TLAN_DIO_DATA + (internal_addr & 0x3));
@@ -433,7 +433,7 @@ inline void TLan_DioWrite8(u16 base_addr, u16 internal_addr, u8 data)
 
 
 
-inline void TLan_DioWrite16(u16 base_addr, u16 internal_addr, u16 data)
+static inline void TLan_DioWrite16(u16 base_addr, u16 internal_addr, u16 data)
 {
        outw(internal_addr, base_addr + TLAN_DIO_ADR);
        outw(data, base_addr + TLAN_DIO_DATA + (internal_addr & 0x2));
@@ -443,7 +443,7 @@ inline void TLan_DioWrite16(u16 base_addr, u16 internal_addr, u16 data)
 
 
 
-inline void TLan_DioWrite32(u16 base_addr, u16 internal_addr, u32 data)
+static inline void TLan_DioWrite32(u16 base_addr, u16 internal_addr, u32 data)
 {
        outw(internal_addr, base_addr + TLAN_DIO_ADR);
        outl(data, base_addr + TLAN_DIO_DATA + (internal_addr & 0x2));
@@ -453,7 +453,7 @@ inline void TLan_DioWrite32(u16 base_addr, u16 internal_addr, u32 data)
 
 
 #if 0
-inline void TLan_ClearBit(u8 bit, u16 port)
+static inline void TLan_ClearBit(u8 bit, u16 port)
 {
        outb_p(inb_p(port) & ~bit, port);
 }
@@ -461,7 +461,7 @@ inline void TLan_ClearBit(u8 bit, u16 port)
 
 
 
-inline int TLan_GetBit(u8 bit, u16 port)
+static inline int TLan_GetBit(u8 bit, u16 port)
 {
        return ((int) (inb_p(port) & bit));
 }
@@ -469,7 +469,7 @@ inline int TLan_GetBit(u8 bit, u16 port)
 
 
 
-inline void TLan_SetBit(u8 bit, u16 port)
+static inline void TLan_SetBit(u8 bit, u16 port)
 {
        outb_p(inb_p(port) | bit, port);
 }
@@ -482,7 +482,7 @@ inline void TLan_SetBit(u8 bit, u16 port)
 #ifdef I_LIKE_A_FAST_HASH_FUNCTION
 /* given 6 bytes, view them as 8 6-bit numbers and return the XOR of those */
 /* the code below is about seven times as fast as the original code */
-inline u32 TLan_HashFunc(u8 * a)
+static inline u32 TLan_HashFunc(u8 * a)
 {
        u8 hash;
 
@@ -498,7 +498,7 @@ inline u32 TLan_HashFunc(u8 * a)
 
 #else                          /* original code */
 
-inline u32 xor(u32 a, u32 b)
+static inline u32 xor(u32 a, u32 b)
 {
        return ((a && !b) || (!a && b));
 }
@@ -506,7 +506,7 @@ inline u32 xor(u32 a, u32 b)
 #define XOR8( a, b, c, d, e, f, g, h ) xor( a, xor( b, xor( c, xor( d, xor( e, xor( f, xor( g, h ) ) ) ) ) ) )
 #define DA( a, bit )                                   ( ( (u8) a[bit/8] ) & ( (u8) ( 1 << bit%8 ) ) )
 
-inline u32 TLan_HashFunc(u8 * a)
+static inline u32 TLan_HashFunc(u8 * a)
 {
        u32 hash;
 
index 30df987..ad07502 100644 (file)
@@ -400,12 +400,17 @@ static u32 ioaddr;
    longword divisable */
 
 #define TX_RING_SIZE   2
-static struct tulip_tx_desc tx_ring[TX_RING_SIZE] __attribute__ ((aligned(4)));
-static unsigned char txb[BUFLEN] __attribute__ ((aligned(4)));
-
 #define RX_RING_SIZE   4
-static struct tulip_rx_desc rx_ring[RX_RING_SIZE] __attribute__ ((aligned(4)));
-static unsigned char rxb[RX_RING_SIZE * BUFLEN] __attribute__ ((aligned(4)));
+struct {
+    struct tulip_tx_desc tx_ring[TX_RING_SIZE];
+    unsigned char txb[BUFLEN];
+    struct tulip_rx_desc rx_ring[RX_RING_SIZE];
+    unsigned char rxb[RX_RING_SIZE * BUFLEN];
+} tulip_buffers __shared __attribute__ ((aligned(4)));
+#define tx_ring tulip_buffers.tx_ring
+#define txb tulip_buffers.txb
+#define rx_ring tulip_buffers.rx_ring
+#define rxb tulip_buffers.rxb
 
 static struct tulip_private {
     int cur_rx;