161 lines
3.5 KiB
C
161 lines
3.5 KiB
C
|
|
/*
|
|
*
|
|
Copyright (c) Eicon Networks, 2002.
|
|
*
|
|
This source file is supplied for the use with
|
|
Eicon Networks range of DIVA Server Adapters.
|
|
*
|
|
Eicon File Revision : 2.1
|
|
*
|
|
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, or (at your option)
|
|
any later version.
|
|
*
|
|
This program is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY OF ANY KIND WHATSOEVER INCLUDING ANY
|
|
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.
|
|
*
|
|
*/
|
|
#ifdef PLATFORM_GT_32BIT
|
|
/* #define POINTER_32BIT byte * __ptr32 */
|
|
#define POINTER_32BIT dword
|
|
#else
|
|
#define POINTER_32BIT byte *
|
|
#endif
|
|
#if !defined(MIPS_SCOM)
|
|
#define BUFFER_SZ 48
|
|
#define MAINT_OFFS 0x380
|
|
#else
|
|
#define BUFFER_SZ 128
|
|
#if defined(PRI)
|
|
#define MAINT_OFFS 0xef00
|
|
#else
|
|
#define MAINT_OFFS 0xff00
|
|
#endif
|
|
#endif
|
|
#define MIPS_BUFFER_SZ 128
|
|
#if defined(PRI)
|
|
#define MIPS_MAINT_OFFS 0xef00
|
|
#else
|
|
#define MIPS_MAINT_OFFS 0xff00
|
|
#endif
|
|
#define LOG 1
|
|
#define MEMR 2
|
|
#define MEMW 3
|
|
#define IOR 4
|
|
#define IOW 5
|
|
#define B1TEST 6
|
|
#define B2TEST 7
|
|
#define BTESTOFF 8
|
|
#define DSIG_STATS 9
|
|
#define B_CH_STATS 10
|
|
#define D_CH_STATS 11
|
|
#define BL1_STATS 12
|
|
#define BL1_STATS_C 13
|
|
#define GET_VERSION 14
|
|
#define OS_STATS 15
|
|
#define XLOG_SET_MASK 16
|
|
#define XLOG_GET_MASK 17
|
|
#define DSP_READ 20
|
|
#define DSP_WRITE 21
|
|
#define OK 0xff
|
|
#define MORE_EVENTS 0xfe
|
|
#define NO_EVENT 1
|
|
struct DSigStruc
|
|
{
|
|
byte Id;
|
|
byte u;
|
|
byte listen;
|
|
byte active;
|
|
byte sin[3];
|
|
byte bc[6];
|
|
byte llc[6];
|
|
byte hlc[6];
|
|
byte oad[20];
|
|
};
|
|
struct BL1Struc {
|
|
dword cx_b1;
|
|
dword cx_b2;
|
|
dword cr_b1;
|
|
dword cr_b2;
|
|
dword px_b1;
|
|
dword px_b2;
|
|
dword pr_b1;
|
|
dword pr_b2;
|
|
word er_b1;
|
|
word er_b2;
|
|
};
|
|
struct L2Struc {
|
|
dword XTotal;
|
|
dword RTotal;
|
|
word XError;
|
|
word RError;
|
|
};
|
|
struct OSStruc {
|
|
dword free_n;
|
|
};
|
|
typedef union
|
|
{
|
|
struct DSigStruc DSigStats;
|
|
struct BL1Struc BL1Stats;
|
|
struct L2Struc L2Stats;
|
|
struct OSStruc OSStats;
|
|
byte b[BUFFER_SZ];
|
|
word w[BUFFER_SZ >> 1];
|
|
word l[BUFFER_SZ >> 2]; /* word is wrong, do not use! Use 'd' instead. */
|
|
dword d[BUFFER_SZ >> 2];
|
|
} BUFFER;
|
|
typedef union
|
|
{
|
|
struct DSigStruc DSigStats;
|
|
struct BL1Struc BL1Stats;
|
|
struct L2Struc L2Stats;
|
|
struct OSStruc OSStats;
|
|
byte b[MIPS_BUFFER_SZ];
|
|
word w[MIPS_BUFFER_SZ >> 1];
|
|
word l[BUFFER_SZ >> 2]; /* word is wrong, do not use! Use 'd' instead. */
|
|
dword d[MIPS_BUFFER_SZ >> 2];
|
|
} MIPS_BUFFER;
|
|
#if !defined(MIPS_SCOM)
|
|
struct pc_maint
|
|
{
|
|
byte req;
|
|
byte rc;
|
|
POINTER_32BIT mem;
|
|
short length;
|
|
word port;
|
|
byte fill[6];
|
|
BUFFER data;
|
|
};
|
|
#else
|
|
struct pc_maint
|
|
{
|
|
byte req;
|
|
byte rc;
|
|
byte reserved[2]; /* R3000 alignment ... */
|
|
POINTER_32BIT mem;
|
|
short length;
|
|
word port;
|
|
byte fill[4]; /* data at offset 16 */
|
|
BUFFER data;
|
|
};
|
|
#endif
|
|
struct mi_pc_maint
|
|
{
|
|
byte req;
|
|
byte rc;
|
|
byte reserved[2]; /* R3000 alignment ... */
|
|
POINTER_32BIT mem;
|
|
short length;
|
|
word port;
|
|
byte fill[4]; /* data at offset 16 */
|
|
MIPS_BUFFER data;
|
|
};
|