99 lines
1.9 KiB
C
Executable file
99 lines
1.9 KiB
C
Executable file
/* Copyright (c) 2011-2012 Tensilica Inc. ALL RIGHTS RESERVED.
|
|
// These coded instructions, statements, and computer programs are the
|
|
// copyrighted works and confidential proprietary information of Tensilica Inc.
|
|
// They may not be modified, copied, reproduced, distributed, or disclosed to
|
|
// third parties in any manner, medium, or form, in whole or in part, without
|
|
// the prior written consent of Tensilica Inc.
|
|
*/
|
|
|
|
#ifndef _JTAG_XTENSA_H_
|
|
#define _JTAG_XTENSA_H_
|
|
|
|
|
|
/* ---------------- JTAG registers ------------------ */
|
|
|
|
/* -- ER and later JTAG registers */
|
|
typedef enum {
|
|
regIR,
|
|
regBypass,
|
|
regNAR,
|
|
regNDR,
|
|
regIdcode,
|
|
regPWRCTL,
|
|
regPWRSTAT,
|
|
regJtagMAX,
|
|
} xtensaJtagReg;
|
|
|
|
/* -- pre-ER JTAG registers */
|
|
typedef enum {
|
|
regOldIR,
|
|
regOldBypass,
|
|
regOldDIRW,
|
|
regOldDIR,
|
|
regOldDDR,
|
|
regOldDOSR,
|
|
regOldESR,
|
|
regOldDCR,
|
|
regOldTraxNDR,
|
|
regOldTraxNAR,
|
|
regOldMAX
|
|
} xtensaOldJtagReg;
|
|
|
|
|
|
/* ---------------- JTAG Instructions ------------------ */
|
|
|
|
/* -- pre-ER JTAG instructions */
|
|
typedef enum {
|
|
ji_EnableOCD = 0x11,
|
|
ji_DebugInt,
|
|
ji_RetDebugInt, // TBD: remove
|
|
ji_DisRetOCD, // TBD: remove
|
|
ji_ExecuteDI,
|
|
ji_LoadDI,
|
|
ji_ScanDDR,
|
|
ji_ReadDOSR,
|
|
ji_ScanDCR,
|
|
ji_LoadWDI,
|
|
ji_TRAX = 0x1c,
|
|
ji_BYPASS = 0x1f,
|
|
} xtensaJtagInstruction;
|
|
|
|
typedef enum {
|
|
OCDNormalMode,
|
|
OCDRunMode,
|
|
OCDHaltMode,
|
|
OCDStepMode
|
|
} xtensaMode;
|
|
|
|
typedef struct {
|
|
xtensaMode mode;
|
|
int DRsel;
|
|
XTMP_core core;
|
|
XTMP_tap tap;
|
|
int core_num;
|
|
jtagReg_t *jtagRegs;
|
|
void *dap; // used for ARM DAP only
|
|
bool isBig;
|
|
int dir_array_option; // used by pre-ER devices only
|
|
// for testing, below - FIXME - delete later
|
|
int ocdReg;
|
|
unsigned int wr_data;
|
|
XTMP_event start_OCD_trans;
|
|
bool data_cycle;
|
|
bool data_pending;
|
|
} coreSlaveData_t;
|
|
|
|
|
|
enum OCD_ACCESS_TYPE{
|
|
NEXUS_ACCESS,
|
|
CS_ACCESS,
|
|
};
|
|
|
|
// pre-ER Xtensa initializiation
|
|
EXTERN XTMP_deviceStatus
|
|
XTMP_jtagCoreSlaveEX(XTMP_component component, XTMP_jtagSlave slave, void* mydata);
|
|
|
|
extern char *OCDrd;
|
|
extern char *OCDwr;
|
|
|
|
#endif
|