Added support for register display with bit field definitions decoded
This commit is contained in:
parent
b18e1312df
commit
29cf2a45a8
3 changed files with 174 additions and 87 deletions
|
@ -114,6 +114,21 @@ extern int32 int_req[IPL_HLVL];
|
||||||
#define CSR_GETTL(x) (((x) >> CSR_V_TLINE) & DZ_LNOMASK)
|
#define CSR_GETTL(x) (((x) >> CSR_V_TLINE) & DZ_LNOMASK)
|
||||||
#define CSR_PUTTL(x,y) x = ((x) & ~CSR_TLINE) | (((y) & DZ_LNOMASK) << CSR_V_TLINE)
|
#define CSR_PUTTL(x,y) x = ((x) & ~CSR_TLINE) | (((y) & DZ_LNOMASK) << CSR_V_TLINE)
|
||||||
|
|
||||||
|
BITFIELD dz_csr_bits[] = {
|
||||||
|
BITNCF(3), /* not used */
|
||||||
|
BIT(MAINT), /* Maint */
|
||||||
|
BIT(MSE), /* naster scan enable */
|
||||||
|
BIT(RIE), /* receive interrupt enable */
|
||||||
|
BIT(RDONE), /* receive done */
|
||||||
|
BITF(TLINE,3), /* transmit line */
|
||||||
|
BITNCF(1), /* not used */
|
||||||
|
BIT(SAE), /* silo alarm enable */
|
||||||
|
BIT(SA), /* silo alarm */
|
||||||
|
BIT(TIE), /* transmit interrupt enable */
|
||||||
|
BIT(TRDY), /* transmit ready */
|
||||||
|
ENDBITS
|
||||||
|
};
|
||||||
|
|
||||||
/* DZRBUF - 160102 - receive buffer, read only */
|
/* DZRBUF - 160102 - receive buffer, read only */
|
||||||
|
|
||||||
#define RBUF_CHAR 0000377 /* rcv char */
|
#define RBUF_CHAR 0000377 /* rcv char */
|
||||||
|
@ -124,6 +139,17 @@ extern int32 int_req[IPL_HLVL];
|
||||||
#define RBUF_VALID 0100000 /* rcv valid */
|
#define RBUF_VALID 0100000 /* rcv valid */
|
||||||
#define RBUF_MBZ 0004000
|
#define RBUF_MBZ 0004000
|
||||||
|
|
||||||
|
BITFIELD dz_rbuf_bits[] = {
|
||||||
|
BITFFMT(RBUF,8,"%02X"), /* Received Character */
|
||||||
|
BITF(RLINE,3), /* receive line */
|
||||||
|
BITNCF(1), /* not used */
|
||||||
|
BIT(PARE), /* parity error */
|
||||||
|
BIT(FRME), /* frame error */
|
||||||
|
BIT(OVRE), /* overrun error */
|
||||||
|
BIT(VALID), /* receive valid */
|
||||||
|
ENDBITS
|
||||||
|
};
|
||||||
|
|
||||||
char *dz_charsizes[] = {"5", "6", "7", "8"};
|
char *dz_charsizes[] = {"5", "6", "7", "8"};
|
||||||
char *dz_baudrates[] = {"50", "75", "110", "134.5", "150", "300", "600", "1200",
|
char *dz_baudrates[] = {"50", "75", "110", "134.5", "150", "300", "600", "1200",
|
||||||
"1800", "2000", "2400", "3600", "4800", "7200", "9600", "19200"};
|
"1800", "2000", "2400", "3600", "4800", "7200", "9600", "19200"};
|
||||||
|
@ -148,21 +174,51 @@ char *dz_stopbits[] = {"1", "2", "1", "1.5"};
|
||||||
#define LPR_RCVE 0010000 /* receive enb */
|
#define LPR_RCVE 0010000 /* receive enb */
|
||||||
#define LPR_GETLN(x) (((x) >> LPR_V_LINE) & DZ_LNOMASK)
|
#define LPR_GETLN(x) (((x) >> LPR_V_LINE) & DZ_LNOMASK)
|
||||||
|
|
||||||
|
BITFIELD dz_lpr_bits[] = {
|
||||||
|
BITF(LINE,3), /* line */
|
||||||
|
BITFNAM(CHARSIZE,2,dz_charsizes), /* character size */
|
||||||
|
BIT(STOPBITS), /* stop bits code */
|
||||||
|
BIT(PARENB), /* parity error */
|
||||||
|
BIT(PARODD), /* frame error */
|
||||||
|
BITFNAM(SPEED,4,dz_baudrates), /* speed code */
|
||||||
|
BITNCF(1), /* not used */
|
||||||
|
BIT(RCVE), /* receive enable */
|
||||||
|
ENDBITS
|
||||||
|
};
|
||||||
|
|
||||||
/* DZTCR - 160104 - transmission control register */
|
/* DZTCR - 160104 - transmission control register */
|
||||||
|
|
||||||
#define TCR_V_XMTE 0 /* xmit enables */
|
#define TCR_V_XMTE 0 /* xmit enables */
|
||||||
#define TCR_V_DTR 8 /* DTRs */
|
#define TCR_V_DTR 8 /* DTRs */
|
||||||
|
|
||||||
|
BITFIELD dz_tcr_bits[] = {
|
||||||
|
BITFFMT(XMTE,8,%02X), /* Transmit enable */
|
||||||
|
BITFFMT(DTR, 8,%02X), /* Data Terminal Ready */
|
||||||
|
ENDBITS
|
||||||
|
};
|
||||||
|
|
||||||
/* DZMSR - 160106 - modem status register, read only */
|
/* DZMSR - 160106 - modem status register, read only */
|
||||||
|
|
||||||
#define MSR_V_RI 0 /* ring indicators */
|
#define MSR_V_RI 0 /* ring indicators */
|
||||||
#define MSR_V_CD 8 /* carrier detect */
|
#define MSR_V_CD 8 /* carrier detect */
|
||||||
|
|
||||||
|
BITFIELD dz_msr_bits[] = {
|
||||||
|
BITFFMT(RI,8,%02X), /* ring indicators */
|
||||||
|
BITFFMT(CD,8,%02X), /* carrier detects */
|
||||||
|
ENDBITS
|
||||||
|
};
|
||||||
|
|
||||||
/* DZTDR - 160106 - transmit data, write only */
|
/* DZTDR - 160106 - transmit data, write only */
|
||||||
|
|
||||||
#define TDR_CHAR 0000377 /* xmit char */
|
#define TDR_CHAR 0000377 /* xmit char */
|
||||||
#define TDR_V_TBR 8 /* xmit break - NI */
|
#define TDR_V_TBR 8 /* xmit break - NI */
|
||||||
|
|
||||||
|
BITFIELD dz_tdr_bits[] = {
|
||||||
|
BITFFMT(CHAR,8,%02X), /* ring indicators */
|
||||||
|
BITFFMT(TBR, 8,%02X), /* carrier detects */
|
||||||
|
ENDBITS
|
||||||
|
};
|
||||||
|
|
||||||
extern int32 IREQ (HLVL);
|
extern int32 IREQ (HLVL);
|
||||||
extern int32 tmxr_poll; /* calibrated delay */
|
extern int32 tmxr_poll; /* calibrated delay */
|
||||||
|
|
||||||
|
@ -239,12 +295,12 @@ DIB dz_dib = {
|
||||||
UNIT dz_unit = { UDATA (&dz_svc, UNIT_IDLE|UNIT_ATTABLE|DZ_8B_DFLT, 0) };
|
UNIT dz_unit = { UDATA (&dz_svc, UNIT_IDLE|UNIT_ATTABLE|DZ_8B_DFLT, 0) };
|
||||||
|
|
||||||
REG dz_reg[] = {
|
REG dz_reg[] = {
|
||||||
{ BRDATAD (CSR, dz_csr, DEV_RDX, 16, MAX_DZ_MUXES, "control/status register") },
|
{ BRDATADF (CSR, dz_csr, DEV_RDX, 16, MAX_DZ_MUXES, "control/status register", dz_csr_bits) },
|
||||||
{ BRDATAD (RBUF, dz_rbuf, DEV_RDX, 16, MAX_DZ_MUXES, "receive buffer") },
|
{ BRDATADF (RBUF, dz_rbuf, DEV_RDX, 16, MAX_DZ_MUXES, "receive buffer", dz_rbuf_bits) },
|
||||||
{ BRDATAD (LPR, dz_lpr, DEV_RDX, 16, MAX_DZ_MUXES, "line parameter register") },
|
{ BRDATADF (LPR, dz_lpr, DEV_RDX, 16, MAX_DZ_MUXES, "line parameter register", dz_lpr_bits) },
|
||||||
{ BRDATAD (TCR, dz_tcr, DEV_RDX, 16, MAX_DZ_MUXES, "transmission control register") },
|
{ BRDATADF (TCR, dz_tcr, DEV_RDX, 16, MAX_DZ_MUXES, "transmission control register", dz_tcr_bits) },
|
||||||
{ BRDATAD (MSR, dz_msr, DEV_RDX, 16, MAX_DZ_MUXES, "modem status register") },
|
{ BRDATADF (MSR, dz_msr, DEV_RDX, 16, MAX_DZ_MUXES, "modem status register", dz_msr_bits) },
|
||||||
{ BRDATAD (TDR, dz_tdr, DEV_RDX, 16, MAX_DZ_MUXES, "transmit data register") },
|
{ BRDATADF (TDR, dz_tdr, DEV_RDX, 16, MAX_DZ_MUXES, "transmit data register", dz_tdr_bits) },
|
||||||
{ BRDATAD (SAENB, dz_sae, DEV_RDX, 1, MAX_DZ_MUXES, "silo alarm enabled") },
|
{ BRDATAD (SAENB, dz_sae, DEV_RDX, 1, MAX_DZ_MUXES, "silo alarm enabled") },
|
||||||
{ GRDATAD (RXINT, dz_rxi, DEV_RDX, MAX_DZ_MUXES, 0, "receive interrupts") },
|
{ GRDATAD (RXINT, dz_rxi, DEV_RDX, MAX_DZ_MUXES, 0, "receive interrupts") },
|
||||||
{ GRDATAD (TXINT, dz_txi, DEV_RDX, MAX_DZ_MUXES, 0, "transmit interrupts") },
|
{ GRDATAD (TXINT, dz_txi, DEV_RDX, MAX_DZ_MUXES, 0, "transmit interrupts") },
|
||||||
|
|
88
scp.c
88
scp.c
|
@ -429,6 +429,7 @@ t_stat exdep_addr_loop (FILE *ofile, SCHTAB *schptr, int32 flag, char *cptr,
|
||||||
t_stat ex_addr (FILE *ofile, int32 flag, t_addr addr, DEVICE *dptr, UNIT *uptr);
|
t_stat ex_addr (FILE *ofile, int32 flag, t_addr addr, DEVICE *dptr, UNIT *uptr);
|
||||||
t_stat dep_addr (int32 flag, char *cptr, t_addr addr, DEVICE *dptr,
|
t_stat dep_addr (int32 flag, char *cptr, t_addr addr, DEVICE *dptr,
|
||||||
UNIT *uptr, int32 dfltinc);
|
UNIT *uptr, int32 dfltinc);
|
||||||
|
void fprint_fields (FILE *stream, t_value before, t_value after, BITFIELD* bitdefs);
|
||||||
t_stat step_svc (UNIT *ptr);
|
t_stat step_svc (UNIT *ptr);
|
||||||
void sub_args (char *instr, size_t instr_size, char *do_arg[]);
|
void sub_args (char *instr, size_t instr_size, char *do_arg[]);
|
||||||
t_stat shift_args (char *do_arg[], size_t arg_count);
|
t_stat shift_args (char *do_arg[], size_t arg_count);
|
||||||
|
@ -4141,6 +4142,8 @@ return;
|
||||||
addr[:addr|-addr] address range
|
addr[:addr|-addr] address range
|
||||||
ALL all addresses
|
ALL all addresses
|
||||||
register[:register|-register] register range
|
register[:register|-register] register range
|
||||||
|
register[index] register array element
|
||||||
|
register[start:end] register array range
|
||||||
STATE all registers
|
STATE all registers
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -4359,8 +4362,13 @@ GET_RADIX (rdx, rptr->radix);
|
||||||
if ((rptr->flags & REG_VMAD) && sim_vm_fprint_addr)
|
if ((rptr->flags & REG_VMAD) && sim_vm_fprint_addr)
|
||||||
sim_vm_fprint_addr (ofile, sim_dflt_dev, (t_addr) val);
|
sim_vm_fprint_addr (ofile, sim_dflt_dev, (t_addr) val);
|
||||||
else if (!(rptr->flags & REG_VMIO) ||
|
else if (!(rptr->flags & REG_VMIO) ||
|
||||||
(fprint_sym (ofile, rdx, &val, NULL, sim_switches | SIM_SW_REG) > 0))
|
(fprint_sym (ofile, rdx, &val, NULL, sim_switches | SIM_SW_REG) > 0)) {
|
||||||
fprint_val (ofile, val, rdx, rptr->width, rptr->flags & REG_FMT);
|
fprint_val (ofile, val, rdx, rptr->width, rptr->flags & REG_FMT);
|
||||||
|
if (rptr->fields) {
|
||||||
|
fprintf (ofile, "\t");
|
||||||
|
fprint_fields (ofile, val, val, rptr->fields);
|
||||||
|
}
|
||||||
|
}
|
||||||
if (flag & EX_I)
|
if (flag & EX_I)
|
||||||
fprintf (ofile, "\t");
|
fprintf (ofile, "\t");
|
||||||
else fprintf (ofile, "\n");
|
else fprintf (ofile, "\n");
|
||||||
|
@ -6272,6 +6280,47 @@ if (!debug_unterm) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void fprint_fields (FILE *stream, t_value before, t_value after, BITFIELD* bitdefs)
|
||||||
|
{
|
||||||
|
int32 i, fields, offset;
|
||||||
|
uint32 value, beforevalue, mask;
|
||||||
|
|
||||||
|
for (fields=offset=0; bitdefs[fields].name; ++fields) {
|
||||||
|
if (bitdefs[fields].offset == 0xffffffff) /* fixup uninitialized offsets */
|
||||||
|
bitdefs[fields].offset = offset;
|
||||||
|
offset += bitdefs[fields].width;
|
||||||
|
}
|
||||||
|
for (i = fields-1; i >= 0; i--) { /* print xlation, transition */
|
||||||
|
if (bitdefs[i].name[0] == '\0')
|
||||||
|
continue;
|
||||||
|
if ((bitdefs[i].width == 1) && (bitdefs[i].valuenames == NULL)) {
|
||||||
|
int off = ((after >> bitdefs[i].offset) & 1) + (((before ^ after) >> bitdefs[i].offset) & 1) * 2;
|
||||||
|
fprintf(stream, "%s%c ", bitdefs[i].name, debug_bstates[off]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
char *delta = "";
|
||||||
|
|
||||||
|
mask = 0xFFFFFFFF >> (32-bitdefs[i].width);
|
||||||
|
value = (uint32)((after >> bitdefs[i].offset) & mask);
|
||||||
|
beforevalue = (uint32)((before >> bitdefs[i].offset) & mask);
|
||||||
|
if (value < beforevalue)
|
||||||
|
delta = "_";
|
||||||
|
if (value > beforevalue)
|
||||||
|
delta = "^";
|
||||||
|
if (bitdefs[i].valuenames)
|
||||||
|
fprintf(stream, "%s=%s%s ", bitdefs[i].name, delta, bitdefs[i].valuenames[value]);
|
||||||
|
else
|
||||||
|
if (bitdefs[i].format) {
|
||||||
|
fprintf(stream, "%s=%s", bitdefs[i].name, delta);
|
||||||
|
fprintf(stream, bitdefs[i].format, value);
|
||||||
|
fprintf(stream, " ");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
fprintf(stream, "%s=%s0x%X ", bitdefs[i].name, delta, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Prints state of a register: bit translation + state (0,1,_,^)
|
/* Prints state of a register: bit translation + state (0,1,_,^)
|
||||||
indicating the state and transition of the bit and bitfields. States:
|
indicating the state and transition of the bit and bitfields. States:
|
||||||
0=steady(0->0), 1=steady(1->1), _=falling(1->0), ^=rising(0->1) */
|
0=steady(0->0), 1=steady(1->1), _=falling(1->0), ^=rising(0->1) */
|
||||||
|
@ -6280,43 +6329,8 @@ void sim_debug_bits(uint32 dbits, DEVICE* dptr, BITFIELD* bitdefs,
|
||||||
uint32 before, uint32 after, int terminate)
|
uint32 before, uint32 after, int terminate)
|
||||||
{
|
{
|
||||||
if (sim_deb && (dptr->dctrl & dbits)) {
|
if (sim_deb && (dptr->dctrl & dbits)) {
|
||||||
int32 i, fields, offset;
|
|
||||||
uint32 value, beforevalue, mask;
|
|
||||||
|
|
||||||
for (fields=offset=0; bitdefs[fields].name; ++fields) {
|
|
||||||
if (bitdefs[fields].offset == 0xffffffff) /* fixup uninitialized offsets */
|
|
||||||
bitdefs[fields].offset = offset;
|
|
||||||
offset += bitdefs[fields].width;
|
|
||||||
}
|
|
||||||
sim_debug_prefix(dbits, dptr); /* print prefix if required */
|
sim_debug_prefix(dbits, dptr); /* print prefix if required */
|
||||||
for (i = fields-1; i >= 0; i--) { /* print xlation, transition */
|
fprint_fields (sim_deb, (t_value)before, (t_value)after, bitdefs); /* print xlation, transition */
|
||||||
if (bitdefs[i].name[0] == '\0')
|
|
||||||
continue;
|
|
||||||
if ((bitdefs[i].width == 1) && (bitdefs[i].valuenames == NULL)) {
|
|
||||||
int off = ((after >> bitdefs[i].offset) & 1) + (((before ^ after) >> bitdefs[i].offset) & 1) * 2;
|
|
||||||
fprintf(sim_deb, "%s%c ", bitdefs[i].name, debug_bstates[off]);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
char *delta = "";
|
|
||||||
|
|
||||||
mask = 0xFFFFFFFF >> (32-bitdefs[i].width);
|
|
||||||
value = ((after >> bitdefs[i].offset) & mask);
|
|
||||||
beforevalue = ((before >> bitdefs[i].offset) & mask);
|
|
||||||
if (value < beforevalue)
|
|
||||||
delta = "_";
|
|
||||||
if (value > beforevalue)
|
|
||||||
delta = "^";
|
|
||||||
if (bitdefs[i].valuenames)
|
|
||||||
fprintf(sim_deb, "%s=%s%s ", bitdefs[i].name, delta, bitdefs[i].valuenames[value]);
|
|
||||||
else
|
|
||||||
if (bitdefs[i].format) {
|
|
||||||
fprintf(sim_deb, "%s=%s", bitdefs[i].name, delta);
|
|
||||||
fprintf(sim_deb, bitdefs[i].format, value);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
fprintf(sim_deb, "%s=%s0x%X ", bitdefs[i].name, delta, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (terminate)
|
if (terminate)
|
||||||
fprintf(sim_deb, "\r\n");
|
fprintf(sim_deb, "\r\n");
|
||||||
debug_unterm = terminate ? 0 : 1; /* set unterm for next */
|
debug_unterm = terminate ? 0 : 1; /* set unterm for next */
|
||||||
|
|
89
sim_defs.h
89
sim_defs.h
|
@ -447,6 +447,14 @@ struct sim_unit {
|
||||||
#define UNIT_TM_POLL 0000002 /* TMXR Polling unit */
|
#define UNIT_TM_POLL 0000002 /* TMXR Polling unit */
|
||||||
#define UNIT_NO_FIO 0000004 /* fileref is NOT a FILE * */
|
#define UNIT_NO_FIO 0000004 /* fileref is NOT a FILE * */
|
||||||
|
|
||||||
|
struct sim_bitfield {
|
||||||
|
char *name; /* field name */
|
||||||
|
uint32 offset; /* starting bit */
|
||||||
|
uint32 width; /* width */
|
||||||
|
const char **valuenames; /* map of values to strings */
|
||||||
|
const char *format; /* value format string */
|
||||||
|
};
|
||||||
|
|
||||||
/* Register data structure */
|
/* Register data structure */
|
||||||
|
|
||||||
struct sim_reg {
|
struct sim_reg {
|
||||||
|
@ -457,6 +465,7 @@ struct sim_reg {
|
||||||
uint32 offset; /* starting bit */
|
uint32 offset; /* starting bit */
|
||||||
uint32 depth; /* save depth */
|
uint32 depth; /* save depth */
|
||||||
char *desc; /* description */
|
char *desc; /* description */
|
||||||
|
struct sim_bitfield *fields; /* bit fields */
|
||||||
uint32 flags; /* flags */
|
uint32 flags; /* flags */
|
||||||
uint32 qptr; /* circ q ptr */
|
uint32 qptr; /* circ q ptr */
|
||||||
};
|
};
|
||||||
|
@ -558,14 +567,6 @@ struct sim_debtab {
|
||||||
#define SIM_DBG_ACTIVATE 0x20000
|
#define SIM_DBG_ACTIVATE 0x20000
|
||||||
#define SIM_DBG_AIO_QUEUE 0x40000
|
#define SIM_DBG_AIO_QUEUE 0x40000
|
||||||
|
|
||||||
struct sim_bitfield {
|
|
||||||
char *name; /* field name */
|
|
||||||
uint32 offset; /* starting bit */
|
|
||||||
uint32 width; /* width */
|
|
||||||
const char **valuenames; /* map of values to strings */
|
|
||||||
const char *format; /* value format string */
|
|
||||||
};
|
|
||||||
|
|
||||||
/* File Reference */
|
/* File Reference */
|
||||||
struct sim_fileref {
|
struct sim_fileref {
|
||||||
char name[CBUFSIZE]; /* file name */
|
char name[CBUFSIZE]; /* file name */
|
||||||
|
@ -578,22 +579,30 @@ struct sim_fileref {
|
||||||
#define UDATA(act,fl,cap) NULL,act,NULL,NULL,NULL,0,0,(fl),0,(cap),0,NULL,0,0
|
#define UDATA(act,fl,cap) NULL,act,NULL,NULL,NULL,0,0,(fl),0,(cap),0,NULL,0,0
|
||||||
|
|
||||||
#if defined (__STDC__) || defined (_WIN32)
|
#if defined (__STDC__) || defined (_WIN32)
|
||||||
#define ORDATA(nm,loc,wd) #nm, &(loc), 8, (wd), 0, 1, NULL
|
#define ORDATA(nm,loc,wd) #nm, &(loc), 8, (wd), 0, 1, NULL, NULL
|
||||||
#define DRDATA(nm,loc,wd) #nm, &(loc), 10, (wd), 0, 1, NULL
|
#define DRDATA(nm,loc,wd) #nm, &(loc), 10, (wd), 0, 1, NULL, NULL
|
||||||
#define HRDATA(nm,loc,wd) #nm, &(loc), 16, (wd), 0, 1, NULL
|
#define HRDATA(nm,loc,wd) #nm, &(loc), 16, (wd), 0, 1, NULL, NULL
|
||||||
#define FLDATA(nm,loc,pos) #nm, &(loc), 2, 1, (pos), 1, NULL
|
#define FLDATA(nm,loc,pos) #nm, &(loc), 2, 1, (pos), 1, NULL, NULL
|
||||||
#define GRDATA(nm,loc,rdx,wd,pos) #nm, &(loc), (rdx), (wd), (pos), 1, NULL
|
#define GRDATA(nm,loc,rdx,wd,pos) #nm, &(loc), (rdx), (wd), (pos), 1, NULL, NULL
|
||||||
#define BRDATA(nm,loc,rdx,wd,dep) #nm, (loc), (rdx), (wd), 0, (dep), NULL
|
#define BRDATA(nm,loc,rdx,wd,dep) #nm, (loc), (rdx), (wd), 0, (dep), NULL, NULL
|
||||||
#define URDATA(nm,loc,rdx,wd,off,dep,fl) \
|
#define URDATA(nm,loc,rdx,wd,off,dep,fl) \
|
||||||
#nm, &(loc), (rdx), (wd), (off), (dep), NULL, ((fl) | REG_UNIT)
|
#nm, &(loc), (rdx), (wd), (off), (dep), NULL, NULL, ((fl) | REG_UNIT)
|
||||||
#define ORDATAD(nm,loc,wd,desc) #nm, &(loc), 8, (wd), 0, 1, (desc)
|
#define ORDATAD(nm,loc,wd,desc) #nm, &(loc), 8, (wd), 0, 1, (desc), NULL
|
||||||
#define DRDATAD(nm,loc,wd,desc) #nm, &(loc), 10, (wd), 0, 1, (desc)
|
#define DRDATAD(nm,loc,wd,desc) #nm, &(loc), 10, (wd), 0, 1, (desc), NULL
|
||||||
#define HRDATAD(nm,loc,wd,desc) #nm, &(loc), 16, (wd), 0, 1, (desc)
|
#define HRDATAD(nm,loc,wd,desc) #nm, &(loc), 16, (wd), 0, 1, (desc), NULL
|
||||||
#define FLDATAD(nm,loc,pos,desc) #nm, &(loc), 2, 1, (pos), 1, (desc)
|
#define FLDATAD(nm,loc,pos,desc) #nm, &(loc), 2, 1, (pos), 1, (desc), NULL
|
||||||
#define GRDATAD(nm,loc,rdx,wd,pos,desc) #nm, &(loc), (rdx), (wd), (pos), 1, (desc)
|
#define GRDATAD(nm,loc,rdx,wd,pos,desc) #nm, &(loc), (rdx), (wd), (pos), 1, (desc), NULL
|
||||||
#define BRDATAD(nm,loc,rdx,wd,dep,desc) #nm, (loc), (rdx), (wd), 0, (dep), (desc)
|
#define BRDATAD(nm,loc,rdx,wd,dep,desc) #nm, (loc), (rdx), (wd), 0, (dep), (desc), NULL
|
||||||
#define URDATAD(nm,loc,rdx,wd,off,dep,fl,desc) \
|
#define URDATAD(nm,loc,rdx,wd,off,dep,fl,desc) \
|
||||||
#nm, &(loc), (rdx), (wd), (off), (dep), (desc), ((fl) | REG_UNIT)
|
#nm, &(loc), (rdx), (wd), (off), (dep), (desc), NULL, ((fl) | REG_UNIT)
|
||||||
|
#define ORDATADF(nm,loc,wd,desc,flds) #nm, &(loc), 8, (wd), 0, 1, (desc), (flds)
|
||||||
|
#define DRDATADF(nm,loc,wd,desc,flds) #nm, &(loc), 10, (wd), 0, 1, (desc), (flds)
|
||||||
|
#define HRDATADF(nm,loc,wd,desc,flds) #nm, &(loc), 16, (wd), 0, 1, (desc), (flds)
|
||||||
|
#define FLDATADF(nm,loc,pos,desc,flds) #nm, &(loc), 2, 1, (pos), 1, (desc), (flds)
|
||||||
|
#define GRDATADF(nm,loc,rdx,wd,pos,desc,flds) #nm, &(loc), (rdx), (wd), (pos), 1, (desc), (flds)
|
||||||
|
#define BRDATADF(nm,loc,rdx,wd,dep,desc,flds) #nm, (loc), (rdx), (wd), 0, (dep), (desc), (flds)
|
||||||
|
#define URDATADF(nm,loc,rdx,wd,off,dep,fl,desc,flds) \
|
||||||
|
#nm, &(loc), (rdx), (wd), (off), (dep), (desc), (flds), ((fl) | REG_UNIT)
|
||||||
#define BIT(nm) {#nm, 0xffffffff, 1} /* Single Bit definition */
|
#define BIT(nm) {#nm, 0xffffffff, 1} /* Single Bit definition */
|
||||||
#define BITNC {"", 0xffffffff, 1} /* Don't care Bit definition */
|
#define BITNC {"", 0xffffffff, 1} /* Don't care Bit definition */
|
||||||
#define BITF(nm,sz) {#nm, 0xffffffff, sz} /* Bit Field definition */
|
#define BITF(nm,sz) {#nm, 0xffffffff, sz} /* Bit Field definition */
|
||||||
|
@ -601,22 +610,30 @@ struct sim_fileref {
|
||||||
#define BITFFMT(nm,sz,fmt) {#nm, 0xffffffff, sz, NULL, #fmt}/* Bit Field definition with Output format */
|
#define BITFFMT(nm,sz,fmt) {#nm, 0xffffffff, sz, NULL, #fmt}/* Bit Field definition with Output format */
|
||||||
#define BITFNAM(nm,sz,names) {#nm, 0xffffffff, sz, names} /* Bit Field definition with value->name map */
|
#define BITFNAM(nm,sz,names) {#nm, 0xffffffff, sz, names} /* Bit Field definition with value->name map */
|
||||||
#else
|
#else
|
||||||
#define ORDATA(nm,loc,wd) "nm", &(loc), 8, (wd), 0, 1, NULL
|
#define ORDATA(nm,loc,wd) "nm", &(loc), 8, (wd), 0, 1, NULL, NULL
|
||||||
#define DRDATA(nm,loc,wd) "nm", &(loc), 10, (wd), 0, 1, NULL
|
#define DRDATA(nm,loc,wd) "nm", &(loc), 10, (wd), 0, 1, NULL, NULL
|
||||||
#define HRDATA(nm,loc,wd) "nm", &(loc), 16, (wd), 0, 1, NULL
|
#define HRDATA(nm,loc,wd) "nm", &(loc), 16, (wd), 0, 1, NULL, NULL
|
||||||
#define FLDATA(nm,loc,pos) "nm", &(loc), 2, 1, (pos), 1, NULL
|
#define FLDATA(nm,loc,pos) "nm", &(loc), 2, 1, (pos), 1, NULL, NULL
|
||||||
#define GRDATA(nm,loc,rdx,wd,pos) "nm", &(loc), (rdx), (wd), (pos), 1, NULL
|
#define GRDATA(nm,loc,rdx,wd,pos) "nm", &(loc), (rdx), (wd), (pos), 1, NULL, NULL
|
||||||
#define BRDATA(nm,loc,rdx,wd,dep) "nm", (loc), (rdx), (wd), 0, (dep), NULL
|
#define BRDATA(nm,loc,rdx,wd,dep) "nm", (loc), (rdx), (wd), 0, (dep), NULL, NULL
|
||||||
#define URDATA(nm,loc,rdx,wd,off,dep,fl) \
|
#define URDATA(nm,loc,rdx,wd,off,dep,fl) \
|
||||||
"nm", &(loc), (rdx), (wd), (off), (dep), NULL, ((fl) | REG_UNIT)
|
"nm", &(loc), (rdx), (wd), (off), (dep), NULL, NULL, ((fl) | REG_UNIT)
|
||||||
#define ORDATAD(nm,loc,wd,desc) "nm", &(loc), 8, (wd), 0, 1, (desc)
|
#define ORDATAD(nm,loc,wd,desc) "nm", &(loc), 8, (wd), 0, 1, (desc), NULL
|
||||||
#define DRDATAD(nm,loc,wd,desc) "nm", &(loc), 10, (wd), 0, 1, (desc)
|
#define DRDATAD(nm,loc,wd,desc) "nm", &(loc), 10, (wd), 0, 1, (desc), NULL
|
||||||
#define HRDATAD(nm,loc,wd,desc) "nm", &(loc), 16, (wd), 0, 1, (desc)
|
#define HRDATAD(nm,loc,wd,desc) "nm", &(loc), 16, (wd), 0, 1, (desc), NULL
|
||||||
#define FLDATAD(nm,loc,pos,desc) "nm", &(loc), 2, 1, (pos), 1, (desc)
|
#define FLDATAD(nm,loc,pos,desc) "nm", &(loc), 2, 1, (pos), 1, (desc), NULL
|
||||||
#define GRDATAD(nm,loc,rdx,wd,pos,desc) "nm", &(loc), (rdx), (wd), (pos), 1, (desc)
|
#define GRDATAD(nm,loc,rdx,wd,pos,desc) "nm", &(loc), (rdx), (wd), (pos), 1, (desc), NULL
|
||||||
#define BRDATAD(nm,loc,rdx,wd,dep,desc) "nm", (loc), (rdx), (wd), 0, (dep), (desc)
|
#define BRDATAD(nm,loc,rdx,wd,dep,desc) "nm", (loc), (rdx), (wd), 0, (dep), (desc), NULL
|
||||||
#define URDATAD(nm,loc,rdx,wd,off,dep,fl,desc) \
|
#define URDATAD(nm,loc,rdx,wd,off,dep,fl,desc) \
|
||||||
"nm", &(loc), (rdx), (wd), (off), (dep), (desc), ((fl) | REG_UNIT)
|
"nm", &(loc), (rdx), (wd), (off), (dep), (desc), NULL, ((fl) | REG_UNIT)
|
||||||
|
#define ORDATADF(nm,loc,wd,desc,flds) "nm", &(loc), 8, (wd), 0, 1, (desc), (flds)
|
||||||
|
#define DRDATADF(nm,loc,wd,desc,flds) "nm", &(loc), 10, (wd), 0, 1, (desc), (flds)
|
||||||
|
#define HRDATADF(nm,loc,wd,desc,flds) "nm", &(loc), 16, (wd), 0, 1, (desc), (flds)
|
||||||
|
#define FLDATADF(nm,loc,pos,desc,flds) "nm", &(loc), 2, 1, (pos), 1, (desc), (flds)
|
||||||
|
#define GRDATADF(nm,loc,rdx,wd,pos,desc,flds) "nm", &(loc), (rdx), (wd), (pos), 1, (desc), (flds)
|
||||||
|
#define BRDATADF(nm,loc,rdx,wd,dep,desc,flds) "nm", (loc), (rdx), (wd), 0, (dep), (desc), (flds)
|
||||||
|
#define URDATADF(nm,loc,rdx,wd,off,dep,fl,desc,flds) \
|
||||||
|
"nm", &(loc), (rdx), (wd), (off), (dep), (desc), (flds), ((fl) | REG_UNIT)
|
||||||
#define BIT(nm) {"nm", 0xffffffff, 1} /* Single Bit definition */
|
#define BIT(nm) {"nm", 0xffffffff, 1} /* Single Bit definition */
|
||||||
#define BITNC {"", 0xffffffff, 1} /* Don't care Bit definition */
|
#define BITNC {"", 0xffffffff, 1} /* Don't care Bit definition */
|
||||||
#define BITF(nm,sz) {"nm", 0xffffffff, sz} /* Bit Field definition */
|
#define BITF(nm,sz) {"nm", 0xffffffff, sz} /* Bit Field definition */
|
||||||
|
|
Loading…
Add table
Reference in a new issue