/* * 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; };