blob: 90503a4775c843629f8b1de469beed1703c6d907 [file] [log] [blame]
/********************************************************************************
* Marvell GPL License Option
*
* If you received this File from Marvell, you may opt to use, redistribute and/or
* modify this File in accordance with the terms and conditions of the General
* Public License Version 2, June 1991 (the "GPL License"), a copy of which is
* available along with the File in the license.txt file or by writing to the Free
* Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 or
* on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
*
* THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
* WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
* DISCLAIMED. The GPL License provides additional details about this warranty
* disclaimer.
******************************************************************************/
//////
/// don't edit! auto-generated by docc: FigoReg.h
////////////////////////////////////////////////////////////
#ifndef FigoReg_h
#define FigoReg_h (){}
#include "ctypes.h"
#pragma pack(1)
#ifdef __cplusplus
extern "C" {
#endif
#ifndef _DOCC_H_BITOPS_
#define _DOCC_H_BITOPS_ (){}
#define _bSETMASK_(b) ((b)<32 ? (1<<((b)&31)) : 0)
#define _NSETMASK_(msb,lsb) (_bSETMASK_((msb)+1)-_bSETMASK_(lsb))
#define _bCLRMASK_(b) (~_bSETMASK_(b))
#define _NCLRMASK_(msb,lsb) (~_NSETMASK_(msb,lsb))
#define _BFGET_(r,msb,lsb) (_NSETMASK_((msb)-(lsb),0)&((r)>>(lsb)))
#define _BFSET_(r,msb,lsb,v) do{ (r)&=_NCLRMASK_(msb,lsb); (r)|=_NSETMASK_(msb,lsb)&((v)<<(lsb)); }while(0)
#endif
//////
///
/// $INTERFACE FigoTraceBuf biu (4,4)
/// # # ----------------------------------------------------------
/// @ 0x00000 entry (RW-)
/// %unsigned 32 val
/// ###
/// * Register window for the trace buffer
/// ###
/// # # ----------------------------------------------------------
/// $ENDOFINTERFACE # size: 4B, bits: 32b, padding: 0B
////////////////////////////////////////////////////////////
#ifndef h_FigoTraceBuf
#define h_FigoTraceBuf (){}
#define RA_FigoTraceBuf_entry 0x0000
#define BA_FigoTraceBuf_entry_val 0x0000
#define B16FigoTraceBuf_entry_val 0x0000
#define LSb32FigoTraceBuf_entry_val 0
#define LSb16FigoTraceBuf_entry_val 0
#define bFigoTraceBuf_entry_val 32
#define MSK32FigoTraceBuf_entry_val 0xFFFFFFFF
///////////////////////////////////////////////////////////
typedef struct SIE_FigoTraceBuf {
///////////////////////////////////////////////////////////
#define GET32FigoTraceBuf_entry_val(r32) _BFGET_(r32,31, 0)
#define SET32FigoTraceBuf_entry_val(r32,v) _BFSET_(r32,31, 0,v)
#define w32FigoTraceBuf_entry {\
UNSG32 uentry_val : 32;\
}
union { UNSG32 u32FigoTraceBuf_entry;
struct w32FigoTraceBuf_entry;
};
///////////////////////////////////////////////////////////
} SIE_FigoTraceBuf;
typedef union T32FigoTraceBuf_entry
{ UNSG32 u32;
struct w32FigoTraceBuf_entry;
} T32FigoTraceBuf_entry;
///////////////////////////////////////////////////////////
typedef union TFigoTraceBuf_entry
{ UNSG32 u32[1];
struct {
struct w32FigoTraceBuf_entry;
};
} TFigoTraceBuf_entry;
///////////////////////////////////////////////////////////
SIGN32 FigoTraceBuf_drvrd(SIE_FigoTraceBuf *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
SIGN32 FigoTraceBuf_drvwr(SIE_FigoTraceBuf *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
void FigoTraceBuf_reset(SIE_FigoTraceBuf *p);
SIGN32 FigoTraceBuf_cmp (SIE_FigoTraceBuf *p, SIE_FigoTraceBuf *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
#define FigoTraceBuf_check(p,pie,pfx,hLOG) FigoTraceBuf_cmp(p,pie,pfx,(void*)(hLOG),0,0)
#define FigoTraceBuf_print(p, pfx,hLOG) FigoTraceBuf_cmp(p,0, pfx,(void*)(hLOG),0,0)
#endif
//////
/// ENDOFINTERFACE: FigoTraceBuf
////////////////////////////////////////////////////////////
//////
///
/// $INTERFACE FigoReg biu (4,4)
/// # # ----------------------------------------------------------
/// @ 0x00000 figoCtrl (P)
/// %unsigned 16 pcStartLoc 0x0
/// %unsigned 1 tBufMode 0x0
/// : freeRun 0x0
/// ###
/// * Trace buffer operating as ring buffer
/// ###
/// : fifoMode 0x1
/// ###
/// * Trace buffer operating as FIFO; FIGO stalls when full
/// ###
/// %% 15 # Stuffing bits...
/// @ 0x00004 figoID (P)
/// ###
/// * Processor ID, unique for each FIGO
/// ###
/// %unsigned 16 ID 0x0
/// %% 16 # Stuffing bits...
/// @ 0x00008 figoMaxAdr (P)
/// ###
/// * Max address for ITCM and DTCM, used to detect addr out-of-bound
/// ###
/// %unsigned 16 itcm 0xFFFF
/// %unsigned 16 dtcm 0xFFFF
/// @ 0x0000C figoFlags (WOC-)
/// ###
/// * Exception flags; Figo halt when it happens; write one to clear
/// ###
/// %unsigned 1 itcmAdrOOB 0x0
/// %unsigned 1 dtcmAdrOOB 0x0
/// %unsigned 1 divideBy0 0x0
/// %unsigned 1 traceBufFull 0x0
/// %unsigned 1 illegalIns 0x0
/// %unsigned 1 ALU64Overflow 0x0
/// %% 26 # Stuffing bits...
/// @ 0x00010 figoLastPC (R-)
/// ###
/// * Last PC value before exception occurred
/// ###
/// %unsigned 16 val 0x0
/// %% 16 # Stuffing bits...
/// @ 0x00014 figoTraceBuf (RW-)
/// # 0x00014 tbuf
/// $FigoTraceBuf tbuf MEM
/// ###
/// * Register window for the trace buffer
/// ###
/// @ 0x00018 figoIntr (RW-)
/// ###
/// * Special register for FIGO to raise interrupt to CPU via vPro semaphore
/// ###
/// %unsigned 1 up 0x0
/// %% 31 # Stuffing bits...
/// # # ----------------------------------------------------------
/// $ENDOFINTERFACE # size: 28B, bits: 120b, padding: 0B
////////////////////////////////////////////////////////////
#ifndef h_FigoReg
#define h_FigoReg (){}
#define RA_FigoReg_figoCtrl 0x0000
#define BA_FigoReg_figoCtrl_pcStartLoc 0x0000
#define B16FigoReg_figoCtrl_pcStartLoc 0x0000
#define LSb32FigoReg_figoCtrl_pcStartLoc 0
#define LSb16FigoReg_figoCtrl_pcStartLoc 0
#define bFigoReg_figoCtrl_pcStartLoc 16
#define MSK32FigoReg_figoCtrl_pcStartLoc 0x0000FFFF
#define BA_FigoReg_figoCtrl_tBufMode 0x0002
#define B16FigoReg_figoCtrl_tBufMode 0x0002
#define LSb32FigoReg_figoCtrl_tBufMode 16
#define LSb16FigoReg_figoCtrl_tBufMode 0
#define bFigoReg_figoCtrl_tBufMode 1
#define MSK32FigoReg_figoCtrl_tBufMode 0x00010000
#define FigoReg_figoCtrl_tBufMode_freeRun 0x0
#define FigoReg_figoCtrl_tBufMode_fifoMode 0x1
///////////////////////////////////////////////////////////
#define RA_FigoReg_figoID 0x0004
#define BA_FigoReg_figoID_ID 0x0004
#define B16FigoReg_figoID_ID 0x0004
#define LSb32FigoReg_figoID_ID 0
#define LSb16FigoReg_figoID_ID 0
#define bFigoReg_figoID_ID 16
#define MSK32FigoReg_figoID_ID 0x0000FFFF
///////////////////////////////////////////////////////////
#define RA_FigoReg_figoMaxAdr 0x0008
#define BA_FigoReg_figoMaxAdr_itcm 0x0008
#define B16FigoReg_figoMaxAdr_itcm 0x0008
#define LSb32FigoReg_figoMaxAdr_itcm 0
#define LSb16FigoReg_figoMaxAdr_itcm 0
#define bFigoReg_figoMaxAdr_itcm 16
#define MSK32FigoReg_figoMaxAdr_itcm 0x0000FFFF
#define BA_FigoReg_figoMaxAdr_dtcm 0x000A
#define B16FigoReg_figoMaxAdr_dtcm 0x000A
#define LSb32FigoReg_figoMaxAdr_dtcm 16
#define LSb16FigoReg_figoMaxAdr_dtcm 0
#define bFigoReg_figoMaxAdr_dtcm 16
#define MSK32FigoReg_figoMaxAdr_dtcm 0xFFFF0000
///////////////////////////////////////////////////////////
#define RA_FigoReg_figoFlags 0x000C
#define BA_FigoReg_figoFlags_itcmAdrOOB 0x000C
#define B16FigoReg_figoFlags_itcmAdrOOB 0x000C
#define LSb32FigoReg_figoFlags_itcmAdrOOB 0
#define LSb16FigoReg_figoFlags_itcmAdrOOB 0
#define bFigoReg_figoFlags_itcmAdrOOB 1
#define MSK32FigoReg_figoFlags_itcmAdrOOB 0x00000001
#define BA_FigoReg_figoFlags_dtcmAdrOOB 0x000C
#define B16FigoReg_figoFlags_dtcmAdrOOB 0x000C
#define LSb32FigoReg_figoFlags_dtcmAdrOOB 1
#define LSb16FigoReg_figoFlags_dtcmAdrOOB 1
#define bFigoReg_figoFlags_dtcmAdrOOB 1
#define MSK32FigoReg_figoFlags_dtcmAdrOOB 0x00000002
#define BA_FigoReg_figoFlags_divideBy0 0x000C
#define B16FigoReg_figoFlags_divideBy0 0x000C
#define LSb32FigoReg_figoFlags_divideBy0 2
#define LSb16FigoReg_figoFlags_divideBy0 2
#define bFigoReg_figoFlags_divideBy0 1
#define MSK32FigoReg_figoFlags_divideBy0 0x00000004
#define BA_FigoReg_figoFlags_traceBufFull 0x000C
#define B16FigoReg_figoFlags_traceBufFull 0x000C
#define LSb32FigoReg_figoFlags_traceBufFull 3
#define LSb16FigoReg_figoFlags_traceBufFull 3
#define bFigoReg_figoFlags_traceBufFull 1
#define MSK32FigoReg_figoFlags_traceBufFull 0x00000008
#define BA_FigoReg_figoFlags_illegalIns 0x000C
#define B16FigoReg_figoFlags_illegalIns 0x000C
#define LSb32FigoReg_figoFlags_illegalIns 4
#define LSb16FigoReg_figoFlags_illegalIns 4
#define bFigoReg_figoFlags_illegalIns 1
#define MSK32FigoReg_figoFlags_illegalIns 0x00000010
#define BA_FigoReg_figoFlags_ALU64Overflow 0x000C
#define B16FigoReg_figoFlags_ALU64Overflow 0x000C
#define LSb32FigoReg_figoFlags_ALU64Overflow 5
#define LSb16FigoReg_figoFlags_ALU64Overflow 5
#define bFigoReg_figoFlags_ALU64Overflow 1
#define MSK32FigoReg_figoFlags_ALU64Overflow 0x00000020
///////////////////////////////////////////////////////////
#define RA_FigoReg_figoLastPC 0x0010
#define BA_FigoReg_figoLastPC_val 0x0010
#define B16FigoReg_figoLastPC_val 0x0010
#define LSb32FigoReg_figoLastPC_val 0
#define LSb16FigoReg_figoLastPC_val 0
#define bFigoReg_figoLastPC_val 16
#define MSK32FigoReg_figoLastPC_val 0x0000FFFF
///////////////////////////////////////////////////////////
#define RA_FigoReg_figoTraceBuf 0x0014
#define RA_FigoReg_tbuf 0x0014
///////////////////////////////////////////////////////////
#define RA_FigoReg_figoIntr 0x0018
#define BA_FigoReg_figoIntr_up 0x0018
#define B16FigoReg_figoIntr_up 0x0018
#define LSb32FigoReg_figoIntr_up 0
#define LSb16FigoReg_figoIntr_up 0
#define bFigoReg_figoIntr_up 1
#define MSK32FigoReg_figoIntr_up 0x00000001
///////////////////////////////////////////////////////////
typedef struct SIE_FigoReg {
///////////////////////////////////////////////////////////
#define GET32FigoReg_figoCtrl_pcStartLoc(r32) _BFGET_(r32,15, 0)
#define SET32FigoReg_figoCtrl_pcStartLoc(r32,v) _BFSET_(r32,15, 0,v)
#define GET16FigoReg_figoCtrl_pcStartLoc(r16) _BFGET_(r16,15, 0)
#define SET16FigoReg_figoCtrl_pcStartLoc(r16,v) _BFSET_(r16,15, 0,v)
#define GET32FigoReg_figoCtrl_tBufMode(r32) _BFGET_(r32,16,16)
#define SET32FigoReg_figoCtrl_tBufMode(r32,v) _BFSET_(r32,16,16,v)
#define GET16FigoReg_figoCtrl_tBufMode(r16) _BFGET_(r16, 0, 0)
#define SET16FigoReg_figoCtrl_tBufMode(r16,v) _BFSET_(r16, 0, 0,v)
#define w32FigoReg_figoCtrl {\
UNSG32 ufigoCtrl_pcStartLoc : 16;\
UNSG32 ufigoCtrl_tBufMode : 1;\
UNSG32 RSVDx0_b17 : 15;\
}
union { UNSG32 u32FigoReg_figoCtrl;
struct w32FigoReg_figoCtrl;
};
///////////////////////////////////////////////////////////
#define GET32FigoReg_figoID_ID(r32) _BFGET_(r32,15, 0)
#define SET32FigoReg_figoID_ID(r32,v) _BFSET_(r32,15, 0,v)
#define GET16FigoReg_figoID_ID(r16) _BFGET_(r16,15, 0)
#define SET16FigoReg_figoID_ID(r16,v) _BFSET_(r16,15, 0,v)
#define w32FigoReg_figoID {\
UNSG32 ufigoID_ID : 16;\
UNSG32 RSVDx4_b16 : 16;\
}
union { UNSG32 u32FigoReg_figoID;
struct w32FigoReg_figoID;
};
///////////////////////////////////////////////////////////
#define GET32FigoReg_figoMaxAdr_itcm(r32) _BFGET_(r32,15, 0)
#define SET32FigoReg_figoMaxAdr_itcm(r32,v) _BFSET_(r32,15, 0,v)
#define GET16FigoReg_figoMaxAdr_itcm(r16) _BFGET_(r16,15, 0)
#define SET16FigoReg_figoMaxAdr_itcm(r16,v) _BFSET_(r16,15, 0,v)
#define GET32FigoReg_figoMaxAdr_dtcm(r32) _BFGET_(r32,31,16)
#define SET32FigoReg_figoMaxAdr_dtcm(r32,v) _BFSET_(r32,31,16,v)
#define GET16FigoReg_figoMaxAdr_dtcm(r16) _BFGET_(r16,15, 0)
#define SET16FigoReg_figoMaxAdr_dtcm(r16,v) _BFSET_(r16,15, 0,v)
#define w32FigoReg_figoMaxAdr {\
UNSG32 ufigoMaxAdr_itcm : 16;\
UNSG32 ufigoMaxAdr_dtcm : 16;\
}
union { UNSG32 u32FigoReg_figoMaxAdr;
struct w32FigoReg_figoMaxAdr;
};
///////////////////////////////////////////////////////////
#define GET32FigoReg_figoFlags_itcmAdrOOB(r32) _BFGET_(r32, 0, 0)
#define SET32FigoReg_figoFlags_itcmAdrOOB(r32,v) _BFSET_(r32, 0, 0,v)
#define GET16FigoReg_figoFlags_itcmAdrOOB(r16) _BFGET_(r16, 0, 0)
#define SET16FigoReg_figoFlags_itcmAdrOOB(r16,v) _BFSET_(r16, 0, 0,v)
#define GET32FigoReg_figoFlags_dtcmAdrOOB(r32) _BFGET_(r32, 1, 1)
#define SET32FigoReg_figoFlags_dtcmAdrOOB(r32,v) _BFSET_(r32, 1, 1,v)
#define GET16FigoReg_figoFlags_dtcmAdrOOB(r16) _BFGET_(r16, 1, 1)
#define SET16FigoReg_figoFlags_dtcmAdrOOB(r16,v) _BFSET_(r16, 1, 1,v)
#define GET32FigoReg_figoFlags_divideBy0(r32) _BFGET_(r32, 2, 2)
#define SET32FigoReg_figoFlags_divideBy0(r32,v) _BFSET_(r32, 2, 2,v)
#define GET16FigoReg_figoFlags_divideBy0(r16) _BFGET_(r16, 2, 2)
#define SET16FigoReg_figoFlags_divideBy0(r16,v) _BFSET_(r16, 2, 2,v)
#define GET32FigoReg_figoFlags_traceBufFull(r32) _BFGET_(r32, 3, 3)
#define SET32FigoReg_figoFlags_traceBufFull(r32,v) _BFSET_(r32, 3, 3,v)
#define GET16FigoReg_figoFlags_traceBufFull(r16) _BFGET_(r16, 3, 3)
#define SET16FigoReg_figoFlags_traceBufFull(r16,v) _BFSET_(r16, 3, 3,v)
#define GET32FigoReg_figoFlags_illegalIns(r32) _BFGET_(r32, 4, 4)
#define SET32FigoReg_figoFlags_illegalIns(r32,v) _BFSET_(r32, 4, 4,v)
#define GET16FigoReg_figoFlags_illegalIns(r16) _BFGET_(r16, 4, 4)
#define SET16FigoReg_figoFlags_illegalIns(r16,v) _BFSET_(r16, 4, 4,v)
#define GET32FigoReg_figoFlags_ALU64Overflow(r32) _BFGET_(r32, 5, 5)
#define SET32FigoReg_figoFlags_ALU64Overflow(r32,v) _BFSET_(r32, 5, 5,v)
#define GET16FigoReg_figoFlags_ALU64Overflow(r16) _BFGET_(r16, 5, 5)
#define SET16FigoReg_figoFlags_ALU64Overflow(r16,v) _BFSET_(r16, 5, 5,v)
#define w32FigoReg_figoFlags {\
UNSG32 ufigoFlags_itcmAdrOOB : 1;\
UNSG32 ufigoFlags_dtcmAdrOOB : 1;\
UNSG32 ufigoFlags_divideBy0 : 1;\
UNSG32 ufigoFlags_traceBufFull : 1;\
UNSG32 ufigoFlags_illegalIns : 1;\
UNSG32 ufigoFlags_ALU64Overflow : 1;\
UNSG32 RSVDxC_b6 : 26;\
}
union { UNSG32 u32FigoReg_figoFlags;
struct w32FigoReg_figoFlags;
};
///////////////////////////////////////////////////////////
#define GET32FigoReg_figoLastPC_val(r32) _BFGET_(r32,15, 0)
#define SET32FigoReg_figoLastPC_val(r32,v) _BFSET_(r32,15, 0,v)
#define GET16FigoReg_figoLastPC_val(r16) _BFGET_(r16,15, 0)
#define SET16FigoReg_figoLastPC_val(r16,v) _BFSET_(r16,15, 0,v)
#define w32FigoReg_figoLastPC {\
UNSG32 ufigoLastPC_val : 16;\
UNSG32 RSVDx10_b16 : 16;\
}
union { UNSG32 u32FigoReg_figoLastPC;
struct w32FigoReg_figoLastPC;
};
///////////////////////////////////////////////////////////
SIE_FigoTraceBuf ie_tbuf;
///////////////////////////////////////////////////////////
#define GET32FigoReg_figoIntr_up(r32) _BFGET_(r32, 0, 0)
#define SET32FigoReg_figoIntr_up(r32,v) _BFSET_(r32, 0, 0,v)
#define GET16FigoReg_figoIntr_up(r16) _BFGET_(r16, 0, 0)
#define SET16FigoReg_figoIntr_up(r16,v) _BFSET_(r16, 0, 0,v)
#define w32FigoReg_figoIntr {\
UNSG32 ufigoIntr_up : 1;\
UNSG32 RSVDx18_b1 : 31;\
}
union { UNSG32 u32FigoReg_figoIntr;
struct w32FigoReg_figoIntr;
};
///////////////////////////////////////////////////////////
} SIE_FigoReg;
typedef union T32FigoReg_figoCtrl
{ UNSG32 u32;
struct w32FigoReg_figoCtrl;
} T32FigoReg_figoCtrl;
typedef union T32FigoReg_figoID
{ UNSG32 u32;
struct w32FigoReg_figoID;
} T32FigoReg_figoID;
typedef union T32FigoReg_figoMaxAdr
{ UNSG32 u32;
struct w32FigoReg_figoMaxAdr;
} T32FigoReg_figoMaxAdr;
typedef union T32FigoReg_figoFlags
{ UNSG32 u32;
struct w32FigoReg_figoFlags;
} T32FigoReg_figoFlags;
typedef union T32FigoReg_figoLastPC
{ UNSG32 u32;
struct w32FigoReg_figoLastPC;
} T32FigoReg_figoLastPC;
typedef union T32FigoReg_figoIntr
{ UNSG32 u32;
struct w32FigoReg_figoIntr;
} T32FigoReg_figoIntr;
///////////////////////////////////////////////////////////
typedef union TFigoReg_figoCtrl
{ UNSG32 u32[1];
struct {
struct w32FigoReg_figoCtrl;
};
} TFigoReg_figoCtrl;
typedef union TFigoReg_figoID
{ UNSG32 u32[1];
struct {
struct w32FigoReg_figoID;
};
} TFigoReg_figoID;
typedef union TFigoReg_figoMaxAdr
{ UNSG32 u32[1];
struct {
struct w32FigoReg_figoMaxAdr;
};
} TFigoReg_figoMaxAdr;
typedef union TFigoReg_figoFlags
{ UNSG32 u32[1];
struct {
struct w32FigoReg_figoFlags;
};
} TFigoReg_figoFlags;
typedef union TFigoReg_figoLastPC
{ UNSG32 u32[1];
struct {
struct w32FigoReg_figoLastPC;
};
} TFigoReg_figoLastPC;
typedef union TFigoReg_figoIntr
{ UNSG32 u32[1];
struct {
struct w32FigoReg_figoIntr;
};
} TFigoReg_figoIntr;
///////////////////////////////////////////////////////////
SIGN32 FigoReg_drvrd(SIE_FigoReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst);
SIGN32 FigoReg_drvwr(SIE_FigoReg *p, UNSG32 base, SIGN32 mem, SIGN32 tst, UNSG32 *pcmd);
void FigoReg_reset(SIE_FigoReg *p);
SIGN32 FigoReg_cmp (SIE_FigoReg *p, SIE_FigoReg *pie, char *pfx, void *hLOG, SIGN32 mem, SIGN32 tst);
#define FigoReg_check(p,pie,pfx,hLOG) FigoReg_cmp(p,pie,pfx,(void*)(hLOG),0,0)
#define FigoReg_print(p, pfx,hLOG) FigoReg_cmp(p,0, pfx,(void*)(hLOG),0,0)
#endif
//////
/// ENDOFINTERFACE: FigoReg
////////////////////////////////////////////////////////////
#ifdef __cplusplus
}
#endif
#pragma pack()
#endif
//////
/// ENDOFFILE: FigoReg.h
////////////////////////////////////////////////////////////