Line 64... |
Line 64... |
ULONGEST (*to_read_reg) PARAMS ((unsigned int regno));
|
ULONGEST (*to_read_reg) PARAMS ((unsigned int regno));
|
/* Write register.
|
/* Write register.
|
Does not fail, places error no. in err instead or call error(), if fatal. */
|
Does not fail, places error no. in err instead or call error(), if fatal. */
|
void (*to_write_reg) PARAMS ((unsigned int regno, ULONGEST value));
|
void (*to_write_reg) PARAMS ((unsigned int regno, ULONGEST value));
|
|
|
|
/* Read a block...possibly more efficient than several isolated
|
|
call to read_reg...worst case the same efficiency. Returns 0
|
|
on success or errno if a failure occurred. */
|
|
int (*to_read_block) PARAMS ((unsigned int regno, void* block, int nRegisters));
|
|
|
|
/* Write a block...possibly more efficient than several isolated
|
|
call to write_reg...worst case the same efficiency. Returns 0
|
|
on success or errno if a failure occurred. */
|
|
int (*to_write_block) PARAMS ((unsigned int regno, void* block, int nRegisters));
|
|
|
/* Selects scan chain. All register accesses are related to current scan chain.
|
/* Selects scan chain. All register accesses are related to current scan chain.
|
Does not fail, places error no. in err instead or call error(), if fatal.
|
Does not fail, places error no. in err instead or call error(), if fatal.
|
See jtag_chains enum. */
|
See jtag_chains enum. */
|
void (*to_set_chain) PARAMS ((int chain));
|
void (*to_set_chain) PARAMS ((int chain));
|
|
|
Line 598... |
Line 608... |
{
|
{
|
/* Codes > 0 are for system errors */
|
/* Codes > 0 are for system errors */
|
|
|
ERR_NONE = 0,
|
ERR_NONE = 0,
|
ERR_CRC = -1,
|
ERR_CRC = -1,
|
JTAG_PROXY_INVALID_COMMAND = -2,
|
ERR_MEM = -2,
|
JTAG_PROXY_SERVER_TERMINATED = -3,
|
JTAG_PROXY_INVALID_COMMAND = -3,
|
JTAG_PROXY_NO_CONNECTION = -4,
|
JTAG_PROXY_SERVER_TERMINATED = -4,
|
JTAG_PROXY_PROTOCOL_ERROR = -5,
|
JTAG_PROXY_NO_CONNECTION = -5,
|
JTAG_PROXY_COMMAND_NOT_IMPLEMENTED = -6,
|
JTAG_PROXY_PROTOCOL_ERROR = -6,
|
JTAG_PROXY_INVALID_CHAIN = -7,
|
JTAG_PROXY_COMMAND_NOT_IMPLEMENTED = -7,
|
JTAG_PROXY_INVALID_ADDRESS = -8,
|
JTAG_PROXY_INVALID_CHAIN = -8,
|
|
JTAG_PROXY_INVALID_ADDRESS = -9,
|
|
JTAG_PROXY_ACCESS_EXCEPTION = -10, /* Write to ROM */
|
|
JTAG_PROXY_INVALID_LENGTH = -11,
|
|
JTAG_PROXY_OUT_OF_MEMORY = -12,
|
};
|
};
|
|
|
/* All JTAG chains. */
|
/* All JTAG chains. */
|
enum jtag_chains
|
enum jtag_chains
|
{
|
{
|
Line 684... |
Line 698... |
|
|
/* Added by Chris Ziomkowski <chris@asics.ws> 24/05/01 */
|
/* Added by Chris Ziomkowski <chris@asics.ws> 24/05/01 */
|
typedef enum {
|
typedef enum {
|
JTAG_COMMAND_READ = 1,
|
JTAG_COMMAND_READ = 1,
|
JTAG_COMMAND_WRITE = 2,
|
JTAG_COMMAND_WRITE = 2,
|
JTAG_COMMAND_CHAIN = 3,
|
JTAG_COMMAND_BLOCK_READ = 3,
|
|
JTAG_COMMAND_BLOCK_WRITE = 4,
|
|
JTAG_COMMAND_CHAIN = 5,
|
} JTAG_proxy_protocol_commands;
|
} JTAG_proxy_protocol_commands;
|
|
|
/* Each transmit structure must begin with an integer
|
/* Each transmit structure must begin with an integer
|
which specifies the type of command. Information
|
which specifies the type of command. Information
|
after this is variable. Make sure to have all information
|
after this is variable. Make sure to have all information
|
Line 713... |
Line 729... |
} JTAGProxyReadMessage;
|
} JTAGProxyReadMessage;
|
|
|
typedef struct {
|
typedef struct {
|
uint32_t command;
|
uint32_t command;
|
uint32_t length;
|
uint32_t length;
|
|
uint32_t address;
|
|
int32_t nRegisters;
|
|
uint32_t data[1];
|
|
} JTAGProxyBlockWriteMessage;
|
|
|
|
typedef struct {
|
|
uint32_t command;
|
|
uint32_t length;
|
|
uint32_t address;
|
|
int32_t nRegisters;
|
|
} JTAGProxyBlockReadMessage;
|
|
|
|
typedef struct {
|
|
uint32_t command;
|
|
uint32_t length;
|
uint32_t chain;
|
uint32_t chain;
|
} JTAGProxyChainMessage;
|
} JTAGProxyChainMessage;
|
|
|
/* The responses are messages specific, however convention
|
/* The responses are messages specific, however convention
|
states the first word should be an error code. Again,
|
states the first word should be an error code. Again,
|
Line 733... |
Line 764... |
uint32_t data_L;
|
uint32_t data_L;
|
} JTAGProxyReadResponse;
|
} JTAGProxyReadResponse;
|
|
|
typedef struct {
|
typedef struct {
|
int32_t status;
|
int32_t status;
|
|
} JTAGProxyBlockWriteResponse;
|
|
|
|
typedef struct {
|
|
int32_t status;
|
|
int32_t nRegisters;
|
|
uint32_t data[1];
|
|
/* uint32_t data[nRegisters-1] still unread */
|
|
} JTAGProxyBlockReadResponse;
|
|
|
|
typedef struct {
|
|
int32_t status;
|
} JTAGProxyChainResponse;
|
} JTAGProxyChainResponse;
|
|
|
|
|
#endif /* TM_OR1K_H */
|
#endif /* TM_OR1K_H */
|
|
|
No newline at end of file
|
No newline at end of file
|