text: 
  /******************************************************************************/
  /*                                                                            */
  /* Broadcom BCM5700 Linux Network Driver, Copyright (c) 2000 Broadcom         */
  /* Corporation.                                                               */
  /* All rights reserved.                                                       */
  /*                                                                            */
  /* This program is free software; you can redistribute it and/or modify       */
  /* it under the terms of the GNU General Public License as published by       */
  /* the Free Software Foundation, located in the file LICENSE.                 */
  /*                                                                            */
  /******************************************************************************/
  
  #ifndef MM_H
  #define MM_H
  
  #define __raw_readl readl
  #define __raw_writel writel
  
  #define BIG_ENDIAN_HOST 1
  #define readl(addr) (*(volatile unsigned int*)(addr))
  #define writel(b,addr) ((*(volatile unsigned int *) (addr)) = (b))
  
  /* Define memory barrier function here if needed */
  #define wmb()
  #define membar()
  #include <common.h>
  #include <asm/types.h>
  #include "bcm570x_lm.h"
  #include "bcm570x_queue.h"
  #include "tigon3.h"
  #include <pci.h>
  
  #define FALSE 0
  #define TRUE  1
  #define ERROR -1
  
  #if DBG
  #define STATIC
  #else
  #define STATIC static
  #endif
  
  extern int MM_Packet_Desc_Size;
  
  #define MM_PACKET_DESC_SIZE MM_Packet_Desc_Size
  
  DECLARE_QUEUE_TYPE(UM_RX_PACKET_Q, MAX_RX_PACKET_DESC_COUNT+1);
  
  #define MAX_MEM 16
  
  /* Synch */
  typedef int mutex_t;
  typedef int spinlock_t;
  
  /* Embedded device control */
  typedef struct _UM_DEVICE_BLOCK {
  	LM_DEVICE_BLOCK lm_dev;
  	pci_dev_t pdev;
  	char *name;
  	void *mem_list[MAX_MEM];
  	dma_addr_t dma_list[MAX_MEM];
  	int mem_size_list[MAX_MEM];
  	int mem_list_num;
  	int mtu;
  	int index;
  	int opened;
  	int delayed_link_ind; /* Delay link status during initial load */
  	int adapter_just_inited; /* the first few seconds after init. */
  	int spurious_int;            /* new -- unsupported */
  	int timer_interval;
  	int adaptive_expiry;
  	int crc_counter_expiry;         /* new -- unsupported */
  	int poll_tib_expiry;         /* new -- unsupported */
  	int tx_full;
  	int tx_queued;
  	int line_speed;		/* in Mbps, 0 if link is down */
  	UM_RX_PACKET_Q rx_out_of_buf_q;
  	int rx_out_of_buf;
  	int rx_low_buf_thresh; /* changed to rx_buf_repl_thresh */
  	int rx_buf_repl_panic_thresh;
  	int rx_buf_align;            /* new -- unsupported */
  	int do_global_lock;
  	mutex_t global_lock;
  	mutex_t undi_lock;
  	long undi_flags;
  	volatile int interrupt;
  	int tasklet_pending;
  	int tasklet_busy;	     /* new -- unsupported */
  	int rx_pkt;
  	int tx_pkt;
  #ifdef NICE_SUPPORT   /* unsupported, this is a linux ioctl */
  	void (*nice_rx)(void*, void* );
  	void* nice_ctx;
  #endif /* NICE_SUPPORT */
  	int rx_adaptive_coalesce;
  	unsigned int rx_last_cnt;
  	unsigned int tx_last_cnt;
  	unsigned int rx_curr_coalesce_frames;
  	unsigned int rx_curr_coalesce_ticks;
  	unsigned int tx_curr_coalesce_frames;  /* new -- unsupported */
  #if TIGON3_DEBUG          /* new -- unsupported */
  	uint tx_zc_count;
  	uint tx_chksum_count;
  	uint tx_himem_count;
  	uint rx_good_chksum_count;
  #endif
  	unsigned int rx_bad_chksum_count;   /* new -- unsupported */
  	unsigned int rx_misc_errors;        /* new -- unsupported */
  } UM_DEVICE_BLOCK, *PUM_DEVICE_BLOCK;
  
  
  /* Physical/PCI DMA address */
  typedef union {
  	dma_addr_t dma_map;
  } dma_map_t;
  
  /* Packet */
  typedef struct
  _UM_PACKET {
      LM_PACKET lm_packet;
      void* skbuff;      /* Address of packet buffer */
  } UM_PACKET, *PUM_PACKET;
  
  #define MM_ACQUIRE_UNDI_LOCK(_pDevice)
  #define MM_RELEASE_UNDI_LOCK(_pDevice)
  #define MM_ACQUIRE_INT_LOCK(_pDevice)
  #define MM_RELEASE_INT_LOCK(_pDevice)
  #define MM_UINT_PTR(_ptr)   ((unsigned long) (_ptr))
  
  /* Macro for setting 64bit address struct */
  #define set_64bit_addr(paddr, low, high) \
  	(paddr)->Low = low;             \
  	(paddr)->High = high;
  
  /* Assume that PCI controller's view of host memory is same as host */
  
  #define MEM_TO_PCI_PHYS(addr) (addr)
  
  extern void MM_SetAddr (LM_PHYSICAL_ADDRESS *paddr, dma_addr_t addr);
  extern void MM_SetT3Addr(T3_64BIT_HOST_ADDR *paddr, dma_addr_t addr);
  extern void MM_MapTxDma (PLM_DEVICE_BLOCK pDevice,
  			 struct _LM_PACKET *pPacket, T3_64BIT_HOST_ADDR *paddr,
  			 LM_UINT32 *len, int frag);
  extern void MM_MapRxDma ( PLM_DEVICE_BLOCK pDevice,
  			  struct _LM_PACKET *pPacket,
  			  T3_64BIT_HOST_ADDR *paddr);
  
  
  /* BSP needs to provide sysUsecDelay and sysSerialPrintString */
  extern void sysSerialPrintString (char *s);
  #define MM_Wait(usec) udelay(usec)
  
  /* Define memory barrier function here if needed */
  #define wmb()
  
  #if 0
  #define cpu_to_le32(val) LONGSWAP(val)
  #endif
  #endif /* MM_H */
  