/****************************************************************************
 *******                                                              *******
 *******               H O S T   M E M O R Y  M A P
 *******                                                              *******
 ****************************************************************************

 Author  : Ian Nandhra / Jeremy Rolls
 Date    :

 *
 *  (C) 1990 - 2000 Specialix International Ltd., Byfleet, Surrey, UK.
 *
 *      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; either version 2 of the License, or
 *      (at your option) any later version.
 *
 *      This program is distributed in the hope that it will be useful,
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *      GNU General Public License for more details.
 *
 *      You should have received a copy of the GNU General Public License
 *      along with this program; if not, write to the Free Software
 *      Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

 Version : 0.01


                            Mods
 ----------------------------------------------------------------------------
  Date     By                Description
 ----------------------------------------------------------------------------
6/4/1991   jonb		     Made changes to accommodate Mips R3230 bus
 ***************************************************************************/

#ifndef _parmap_h
#define _parmap_h


#ifdef SCCS_LABELS
#ifndef lint
/* static char *_rio_parmmap_h_sccs = "@(#)parmmap.h	1.4"; */
#endif
#endif

typedef struct PARM_MAP PARM_MAP;

struct PARM_MAP {
	PHB_ptr phb_ptr;	/* Pointer to the PHB array */
	WORD_ptr phb_num_ptr;	/* Ptr to Number of PHB's */
	FREE_LIST_ptr free_list;	/* Free List pointer */
	FREE_LIST_ptr free_list_end;	/* Free List End pointer */
	Q_BUF_ptr_ptr q_free_list_ptr;	/* Ptr to Q_BUF variable */
	BYTE_ptr unit_id_ptr;	/* Unit Id */
	LPB_ptr link_str_ptr;	/* Link Structure Array */
	BYTE_ptr bootloader_1;	/* 1st Stage Boot Loader */
	BYTE_ptr bootloader_2;	/* 2nd Stage Boot Loader */
	WORD_ptr port_route_map_ptr;	/* Port Route Map */
	ROUTE_STR_ptr route_ptr;	/* Unit Route Map */
	NUMBER_ptr map_present;	/* Route Map present */
	NUMBER pkt_num;		/* Total number of packets */
	NUMBER q_num;		/* Total number of Q packets */
	WORD buffers_per_port;	/* Number of buffers per port */
	WORD heap_size;		/* Initial size of heap */
	WORD heap_left;		/* Current Heap left */
	WORD error;		/* Error code */
	WORD tx_max;		/* Max number of tx pkts per phb */
	WORD rx_max;		/* Max number of rx pkts per phb */
	WORD rx_limit;		/* For high / low watermarks */
	NUMBER links;		/* Links to use */
	NUMBER timer;		/* Interrupts per second */
	RUP_ptr rups;		/* Pointer to the RUPs */
	WORD max_phb;		/* Mostly for debugging */
	WORD living;		/* Just increments!! */
	WORD init_done;		/* Initialisation over */
	WORD booting_link;
	WORD idle_count;	/* Idle time counter */
	WORD busy_count;	/* Busy counter */
	WORD idle_control;	/* Control Idle Process */
	WORD tx_intr;		/* TX interrupt pending */
	WORD rx_intr;		/* RX interrupt pending */
	WORD rup_intr;		/* RUP interrupt pending */
};

#endif

/*********** end of file ***********/
