📄 mcf532x_hi.c
字号:
/*
* File: MCF_hi.c
* Purpose: Register display/modify routines for MCF modules.
*
* Notes:
*
*/
#include "src/include/dbug.h"
#include "src/uif/cpu.h"
/********************************************************************/
/*
* CPU name string and source code version for display at boot-up.
*/
const char CPU_STR[] = "ColdFire MCF532x";
const int CPU_VER_MAJOR = 1;
const char CPU_VER_MINOR = 'a';
/********************************************************************/
static const char FORMAT8[] = "%15s : %02X\n";
static const char FORMAT16[] = "%15s : %04X\n";
static const char FORMAT32[] = "%15s : %08X\n";
static const char INVMOD[] = "Error: Invalid Module: %s\n";
#define IRMD(MOD,REG,SIZE) \
if (regread) \
{ \
if (( reg == NULL ) || display_all || (strcasecmp(#REG,reg) == 0)) \
{ \
rdata = MCF_ ## MOD ## _ ## REG; \
printf(FORMAT ## SIZE, #REG, rdata); \
\
pause(&displayed); \
\
if (!display_all) return; \
} \
} \
else \
{ \
if (strcasecmp(#REG,reg) == 0) \
{ \
MCF_ ## MOD ## _ ## REG = (uint ## SIZE) value; \
return; \
} \
}
static int display_all;
static int displayed;
static uint32 rdata;
/********************************************************************/
static void
irmd_scm (char *reg, int regread, uint32 value)
{
IRMD(SCM, MPR0, 32);
IRMD(SCM, MPR1, 32);
IRMD(SCM, BMT0, 32);
IRMD(SCM, BMT1, 32);
IRMD(SCM, PACRA, 32);
IRMD(SCM, PACRB, 32);
IRMD(SCM, PACRC, 32);
IRMD(SCM, PACRD, 32);
IRMD(SCM, PACRE, 32);
IRMD(SCM, PACRF, 32);
IRMD(SCM, PACRG, 32);
IRMD(SCM, PACRH, 32);
IRMD(SCM, CWCR, 32);
IRMD(SCM, CWSR, 32);
IRMD(SCM, CWIR, 32);
IRMD(SCM, BCR, 32);
IRMD(SCM, CFADR, 32);
IRMD(SCM, CFIER, 32);
IRMD(SCM, CFLOC, 32);
IRMD(SCM, CFATR, 32);
IRMD(SCM, CFDTRH, 32);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_fbcs (char *reg, int regread, uint32 value)
{
IRMD(FBCS, CSAR(0), 32);
IRMD(FBCS, CSMR(0), 32);
IRMD(FBCS, CSCR(0), 32);
IRMD(FBCS, CSAR(1), 32);
IRMD(FBCS, CSMR(1), 32);
IRMD(FBCS, CSCR(1), 32);
IRMD(FBCS, CSAR(2), 32);
IRMD(FBCS, CSMR(2), 32);
IRMD(FBCS, CSCR(2), 32);
IRMD(FBCS, CSAR(3), 32);
IRMD(FBCS, CSMR(3), 32);
IRMD(FBCS, CSCR(3), 32);
IRMD(FBCS, CSAR(4), 32);
IRMD(FBCS, CSMR(4), 32);
IRMD(FBCS, CSCR(4), 32);
IRMD(FBCS, CSAR(5), 32);
IRMD(FBCS, CSMR(5), 32);
IRMD(FBCS, CSCR(5), 32);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_fec (char *reg, int regread, uint32 value)
{
IRMD(FEC, EIR, 32);
IRMD(FEC, EIMR, 32);
IRMD(FEC, RDAR, 32);
IRMD(FEC, TDAR, 32);
IRMD(FEC, ECR, 32);
IRMD(FEC, MMFR, 32);
IRMD(FEC, MSCR, 32);
IRMD(FEC, MIBC, 32);
IRMD(FEC, RCR, 32);
IRMD(FEC, TCR, 32);
IRMD(FEC, PALR, 32);
IRMD(FEC, PAUR, 32);
IRMD(FEC, OPD, 32);
IRMD(FEC, IAUR, 32);
IRMD(FEC, IALR, 32);
IRMD(FEC, GAUR, 32);
IRMD(FEC, GALR, 32);
IRMD(FEC, TFWR, 32);
IRMD(FEC, FRBR, 32);
IRMD(FEC, FRSR, 32);
IRMD(FEC, ERDSR, 32);
IRMD(FEC, ETDSR, 32);
IRMD(FEC, EMRBR, 32);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_edma (char *reg, int regread, uint32 value)
{
IRMD(EDMA, CR, 32);
IRMD(EDMA, ES, 32);
IRMD(EDMA, ERQ, 16);
IRMD(EDMA, EEI, 16);
IRMD(EDMA, SERQ, 8);
IRMD(EDMA, CERQ, 8);
IRMD(EDMA, SEEI, 8);
IRMD(EDMA, CEEI, 8);
IRMD(EDMA, CINT, 8);
IRMD(EDMA, CERR, 8);
IRMD(EDMA, SSRT, 8);
IRMD(EDMA, CDNE, 8);
IRMD(EDMA, INT, 16);
IRMD(EDMA, ERR, 16);
IRMD(EDMA, DCHPRI0,8);
IRMD(EDMA, DCHPRI1,8);
IRMD(EDMA, DCHPRI2,8);
IRMD(EDMA, DCHPRI3,8);
IRMD(EDMA, DCHPRI4,8);
IRMD(EDMA, DCHPRI5,8);
IRMD(EDMA, DCHPRI6,8);
IRMD(EDMA, DCHPRI7,8);
IRMD(EDMA, DCHPRI8,8);
IRMD(EDMA, DCHPRI9,8);
IRMD(EDMA, DCHPRI10,8);
IRMD(EDMA, DCHPRI11,8);
IRMD(EDMA, DCHPRI12,8);
IRMD(EDMA, DCHPRI13,8);
IRMD(EDMA, DCHPRI14,8);
IRMD(EDMA, DCHPRI15,8);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_edma_tcd0 (char *reg, int regread, uint32 value)
{
IRMD(EDMA, TCD0_SADDR, 32);
IRMD(EDMA, TCD0_ATTR, 16);
IRMD(EDMA, TCD0_SOFF, 16);
IRMD(EDMA, TCD0_NBYTES, 32);
IRMD(EDMA, TCD0_SLAST, 32);
IRMD(EDMA, TCD0_DADDR, 32);
IRMD(EDMA, TCD0_CITER, 16);
IRMD(EDMA, TCD0_DOFF, 16);
IRMD(EDMA, TCD0_DLAST_SGA, 32);
IRMD(EDMA, TCD0_BITER, 16);
IRMD(EDMA, TCD0_CSR, 16);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_edma_tcd1 (char *reg, int regread, uint32 value)
{
IRMD(EDMA, TCD1_SADDR, 32);
IRMD(EDMA, TCD1_ATTR, 16);
IRMD(EDMA, TCD1_SOFF, 16);
IRMD(EDMA, TCD1_NBYTES, 32);
IRMD(EDMA, TCD1_SLAST, 32);
IRMD(EDMA, TCD1_DADDR, 32);
IRMD(EDMA, TCD1_CITER, 16);
IRMD(EDMA, TCD1_DOFF, 16);
IRMD(EDMA, TCD1_DLAST_SGA, 32);
IRMD(EDMA, TCD1_BITER, 16);
IRMD(EDMA, TCD1_CSR, 16);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_edma_tcd2 (char *reg, int regread, uint32 value)
{
IRMD(EDMA, TCD2_SADDR, 32);
IRMD(EDMA, TCD2_ATTR, 16);
IRMD(EDMA, TCD2_SOFF, 16);
IRMD(EDMA, TCD2_NBYTES, 32);
IRMD(EDMA, TCD2_SLAST, 32);
IRMD(EDMA, TCD2_DADDR, 32);
IRMD(EDMA, TCD2_CITER, 16);
IRMD(EDMA, TCD2_DOFF, 16);
IRMD(EDMA, TCD2_DLAST_SGA, 32);
IRMD(EDMA, TCD2_BITER, 16);
IRMD(EDMA, TCD2_CSR, 16);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_edma_tcd3 (char *reg, int regread, uint32 value)
{
IRMD(EDMA, TCD3_SADDR, 32);
IRMD(EDMA, TCD3_ATTR, 16);
IRMD(EDMA, TCD3_SOFF, 16);
IRMD(EDMA, TCD3_NBYTES, 32);
IRMD(EDMA, TCD3_SLAST, 32);
IRMD(EDMA, TCD3_DADDR, 32);
IRMD(EDMA, TCD3_CITER, 16);
IRMD(EDMA, TCD3_DOFF, 16);
IRMD(EDMA, TCD3_DLAST_SGA, 32);
IRMD(EDMA, TCD3_BITER, 16);
IRMD(EDMA, TCD3_CSR, 16);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_edma_tcd4 (char *reg, int regread, uint32 value)
{
IRMD(EDMA, TCD4_SADDR, 32);
IRMD(EDMA, TCD4_ATTR, 16);
IRMD(EDMA, TCD4_SOFF, 16);
IRMD(EDMA, TCD4_NBYTES, 32);
IRMD(EDMA, TCD4_SLAST, 32);
IRMD(EDMA, TCD4_DADDR, 32);
IRMD(EDMA, TCD4_CITER, 16);
IRMD(EDMA, TCD4_DOFF, 16);
IRMD(EDMA, TCD4_DLAST_SGA, 32);
IRMD(EDMA, TCD4_BITER, 16);
IRMD(EDMA, TCD4_CSR, 16);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_edma_tcd5 (char *reg, int regread, uint32 value)
{
IRMD(EDMA, TCD5_SADDR, 32);
IRMD(EDMA, TCD5_ATTR, 16);
IRMD(EDMA, TCD5_SOFF, 16);
IRMD(EDMA, TCD5_NBYTES, 32);
IRMD(EDMA, TCD5_SLAST, 32);
IRMD(EDMA, TCD5_DADDR, 32);
IRMD(EDMA, TCD5_CITER, 16);
IRMD(EDMA, TCD5_DOFF, 16);
IRMD(EDMA, TCD5_DLAST_SGA, 32);
IRMD(EDMA, TCD5_BITER, 16);
IRMD(EDMA, TCD5_CSR, 16);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_edma_tcd6 (char *reg, int regread, uint32 value)
{
IRMD(EDMA, TCD6_SADDR, 32);
IRMD(EDMA, TCD6_ATTR, 16);
IRMD(EDMA, TCD6_SOFF, 16);
IRMD(EDMA, TCD6_NBYTES, 32);
IRMD(EDMA, TCD6_SLAST, 32);
IRMD(EDMA, TCD6_DADDR, 32);
IRMD(EDMA, TCD6_CITER, 16);
IRMD(EDMA, TCD6_DOFF, 16);
IRMD(EDMA, TCD6_DLAST_SGA, 32);
IRMD(EDMA, TCD6_BITER, 16);
IRMD(EDMA, TCD6_CSR, 16);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_edma_tcd7 (char *reg, int regread, uint32 value)
{
IRMD(EDMA, TCD7_SADDR, 32);
IRMD(EDMA, TCD7_ATTR, 16);
IRMD(EDMA, TCD7_SOFF, 16);
IRMD(EDMA, TCD7_NBYTES, 32);
IRMD(EDMA, TCD7_SLAST, 32);
IRMD(EDMA, TCD7_DADDR, 32);
IRMD(EDMA, TCD7_CITER, 16);
IRMD(EDMA, TCD7_DOFF, 16);
IRMD(EDMA, TCD7_DLAST_SGA, 32);
IRMD(EDMA, TCD7_BITER, 16);
IRMD(EDMA, TCD7_CSR, 16);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_edma_tcd8 (char *reg, int regread, uint32 value)
{
IRMD(EDMA, TCD8_SADDR, 32);
IRMD(EDMA, TCD8_ATTR, 16);
IRMD(EDMA, TCD8_SOFF, 16);
IRMD(EDMA, TCD8_NBYTES, 32);
IRMD(EDMA, TCD8_SLAST, 32);
IRMD(EDMA, TCD8_DADDR, 32);
IRMD(EDMA, TCD8_CITER, 16);
IRMD(EDMA, TCD8_DOFF, 16);
IRMD(EDMA, TCD8_DLAST_SGA, 32);
IRMD(EDMA, TCD8_BITER, 16);
IRMD(EDMA, TCD8_CSR, 16);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_edma_tcd9 (char *reg, int regread, uint32 value)
{
IRMD(EDMA, TCD9_SADDR, 32);
IRMD(EDMA, TCD9_ATTR, 16);
IRMD(EDMA, TCD9_SOFF, 16);
IRMD(EDMA, TCD9_NBYTES, 32);
IRMD(EDMA, TCD9_SLAST, 32);
IRMD(EDMA, TCD9_DADDR, 32);
IRMD(EDMA, TCD9_CITER, 16);
IRMD(EDMA, TCD9_DOFF, 16);
IRMD(EDMA, TCD9_DLAST_SGA, 32);
IRMD(EDMA, TCD9_BITER, 16);
IRMD(EDMA, TCD9_CSR, 16);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_edma_tcd10 (char *reg, int regread, uint32 value)
{
IRMD(EDMA, TCD10_SADDR, 32);
IRMD(EDMA, TCD10_ATTR, 16);
IRMD(EDMA, TCD10_SOFF, 16);
IRMD(EDMA, TCD10_NBYTES, 32);
IRMD(EDMA, TCD10_SLAST, 32);
IRMD(EDMA, TCD10_DADDR, 32);
IRMD(EDMA, TCD10_CITER, 16);
IRMD(EDMA, TCD10_DOFF, 16);
IRMD(EDMA, TCD10_DLAST_SGA, 32);
IRMD(EDMA, TCD10_BITER, 16);
IRMD(EDMA, TCD10_CSR, 16);
if (!display_all)
printf(INVREG,reg);
}
/********************************************************************/
static void
irmd_edma_tcd11 (char *reg, int regread, uint32 value)
{
IRMD(EDMA, TCD11_SADDR, 32);
IRMD(EDMA, TCD11_ATTR, 16);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -