Vhex-kernel/src/kernel/util/disasm/peripherals.c

505 lines
29 KiB
C

#include <kernel/util/disasm.h>
const char *disasm_check_peripheral(uint32_t address)
{
for (int i = 0 ; sh7305_peripherals[i].name != NULL ;++i) {
if (sh7305_peripherals[i].address == address)
return (sh7305_peripherals[i].name);
}
return (NULL);
}
// Thank's Simon Lothar
const struct addrpername_s sh7305_peripherals[] = {
// Other registers
{.address = 0xff000020, .name = "TRA (Trap event)"},
{.address = 0xff000024, .name = "EXPEVT (Excetpion event)"},
{.address = 0xff2f0004, .name = "EXPMASK (Nonsupport exception event)"},
{.address = 0xff2f0000, .name = "CPUOPM (CPU Operation)"},
{.address = 0xff000030, .name = "PVR (Processor version)"},
{.address = 0xff000040, .name = "CVR (Cache version)"},
{.address = 0xff000044, .name = "PRR (Product version)"},
// PFC (Port function control)"},
{.address = 0xA4050100, .name = "PACR (Port A Control)"},
{.address = 0xA4050102, .name = "PBCR (Port B Control)"},
{.address = 0xA4050104, .name = "PCCR (Port C Control)"},
{.address = 0xA4050106, .name = "PDCR (Port D Control)"},
{.address = 0xA4050108, .name = "PECR (Port E Control)"},
{.address = 0xA405010A, .name = "PFCR (Port F Control)"},
{.address = 0xA405010C, .name = "PGCR (Port G Control)"},
{.address = 0xA405010E, .name = "PHCR (Port H Control)"},
{.address = 0xA4050110, .name = "PJCR (Port J Control)"},
{.address = 0xA4050112, .name = "PKCR (Port K Control)"},
{.address = 0xA4050114, .name = "PLCR (Port L Control)"},
{.address = 0xA4050116, .name = "PMCR (Port M Control)"},
{.address = 0xA4050118, .name = "PNCR (Port N Control)"},
{.address = 0xA405014C, .name = "PPCR (Port P Control)"},
{.address = 0xA405011A, .name = "PQCR (Port Q Control)"},
{.address = 0xA405011C, .name = "PRCR (Port R Control)"},
{.address = 0xA405011E, .name = "PSCR (Port S Control)"},
{.address = 0xA4050140, .name = "PTCR (Port T Control)"},
{.address = 0xA4050142, .name = "PUCR (Port U Control)"},
{.address = 0xA4050144, .name = "PVCR (Port V Control)"},
{.address = 0xA405014E, .name = "PSELA (Pin group A select)"},
{.address = 0xA4050150, .name = "PSELB (Pin group B select)"},
{.address = 0xA4050152, .name = "PSELC (Pin group C select)"},
{.address = 0xA4050154, .name = "PSELD (Pin group D select)"},
{.address = 0xA4050156, .name = "PSELE (Pin group E select)"},
{.address = 0xA405015E, .name = "PSELF (Pin group F select)"},
{.address = 0xA40501C8, .name = "PSELG (Pin group G select)"},
{.address = 0xA40501D6, .name = "PSELH (Pin group H select)"},
{.address = 0xA4050158, .name = "HIZCRA (Data pin Hi-Z control A)"},
{.address = 0xA405015A, .name = "HIZCRB (Data pin Hi-Z control B)"},
{.address = 0xA405015C, .name = "HIZCRC (Data pin Hi-Z control C)"},
{.address = 0xA4050180, .name = "MSELCRA (Module function select A)"},
{.address = 0xA4050182, .name = "MSELCRB (Module function select B)"},
{.address = 0xA4050186, .name = "DRVCRA (Buffer drive control A)"},
{.address = 0xA4050188, .name = "DRVCRB (Buffer drive control B)"},
{.address = 0xA405018A, .name = "DRVCRC (Buffer drive control C)"},
{.address = 0xA4050184, .name = "DRVCRD (Buffer drive control D)"},
{.address = 0xA40501C3, .name = "PULCRBSC (BSC pull-up/down control)"},
{.address = 0xA40501C5, .name = "PULCRTRST (TRST pull-up/down select)"},
{.address = 0xA4050190, .name = "PULCRA (Port A pull-up/down control)"},
{.address = 0xA4050191, .name = "PULCRB (Port B pull-up/down control)"},
{.address = 0xA4050192, .name = "PULCRC (Port C pull-up/down control)"},
{.address = 0xA4050193, .name = "PULCRD (Port D pull-up/down control)"},
{.address = 0xA4050194, .name = "PULCRE (Port E pull-up/down control)"},
{.address = 0xA4050195, .name = "PULCRF (Port F pull-up/down control)"},
{.address = 0xA4050196, .name = "PULCRG (Port G pull-up/down control)"},
{.address = 0xA4050197, .name = "PULCRH (Port H pull-up/down control)"},
{.address = 0xA4050198, .name = "PULCRJ (Port J pull-up/down control)"},
{.address = 0xA4050199, .name = "PULCRK (Port K pull-up/down control)"},
{.address = 0xA405019A, .name = "PULCRL (Port L pull-up/down control)"},
{.address = 0xA405019B, .name = "PULCRM (Port M pull-up/down control)"},
{.address = 0xA405019C, .name = "PULCRN (Port N pull-up/down control)"},
{.address = 0xA40501C6, .name = "PULCRP (Port P pull-up/down control)"},
{.address = 0xA405019D, .name = "PULCRQ (Port Q pull-up/down control)"},
{.address = 0xA405019E, .name = "PULCRR (Port R pull-up/down control)"},
{.address = 0xA405019F, .name = "PULCRS (Port S pull-up/down control)"},
{.address = 0xA40501C0, .name = "PULCRT (Port T pull-up/down control)"},
{.address = 0xA40501C1, .name = "PULCRU (Port U pull-up/down control)"},
{.address = 0xA40501C2, .name = "PULCRV (Port V pull-up/down control)"},
//IO (Port I/O)"},
{.address = 0xA4050128, .name = "PEDR (Port E data)"},
{.address = 0xA405012A, .name = "PFDR (Port F data)"},
{.address = 0xA405012C, .name = "PGDR (Port G data)"},
{.address = 0xA405012E, .name = "PHDR (Port H data)"},
{.address = 0xA4050130, .name = "PJDR (Port J data)"},
{.address = 0xA4050132, .name = "PKDR (Port K data)"},
{.address = 0xA4050134, .name = "PLDR (Port L data)"},
{.address = 0xA4050136, .name = "PMDR (Port M data)"},
{.address = 0xA4050138, .name = "PNDR (Port N data)"},
{.address = 0xA405016A, .name = "PPDR (Port P data)"},
{.address = 0xA405013A, .name = "PQDR (Port Q data)"},
{.address = 0xA405013C, .name = "PRDR (Port R data)"},
{.address = 0xA405013E, .name = "PSDR (Port S data)"},
{.address = 0xA4050160, .name = "PTDR (Port T data)"},
{.address = 0xA4050162, .name = "PUDR (Port U data)"},
{.address = 0xA4050164, .name = "PVDR (Port V data)"},
//INT (Interrupt)"},
{.address = 0xA4080000, .name = "IPRA (Interrupt priority A)"},
{.address = 0xA4080004, .name = "IPRB (Interrupt priority B)"},
{.address = 0xA4080008, .name = "IPRC (Interrupt priority C)"},
{.address = 0xA408000C, .name = "IPRD (Interrupt priority D)"},
{.address = 0xA4080010, .name = "IPRE (Interrupt priority E)"},
{.address = 0xA4080014, .name = "IPRF (Interrupt priority F)"},
{.address = 0xA4080018, .name = "IPRG (Interrupt priority G)"},
{.address = 0xA408001C, .name = "IPRH (Interrupt priority H)"},
{.address = 0xA4080020, .name = "IPRI (Interrupt priority I)"},
{.address = 0xA4080024, .name = "IPRJ (Interrupt priority J)"},
{.address = 0xA4080028, .name = "IPRK (Interrupt priority K)"},
{.address = 0xA408002C, .name = "IPRL (Interrupt priority L)"},
{.address = 0xA4140000, .name = "ICR0 (Interrupt control 0)"},
{.address = 0xA414001C, .name = "ICR1 (Interrupt control 1)"},
{.address = 0xA4140010, .name = "INTPRI00 (Interrupt priority for IRQ)"},
{.address = 0xA4140024, .name = "INTREQ00 (Interrupt request for IRQ)"},
{.address = 0xA4140044, .name = "INTMSK00 (Interrupt mask for IRQ)"},
{.address = 0xA4140064, .name = "INTMSKCLR00 (Interrupt mask clear for IRQ)"},
{.address = 0xA41400C0, .name = "NMIFCR (Interrupt control for NMI)"},
{.address = 0xA4700000, .name = "USERIMASK (User interrupt mask)"},
{.address = 0xFF000028, .name = "INTEVT (Interrupt event)"},
{.address = 0xA40501DC, .name = "PINTCRA (PINT control A)"},
{.address = 0xA40501DE, .name = "PINTCRB (PINT control B)"},
{.address = 0xA40501EA, .name = "PINTSRA (PINT status A)"},
{.address = 0xA40501EC, .name = "PINTSRB (PINT status B)"},
{.address = 0xA40501EE, .name = "PINTSRC (PINT status C)"},
{.address = 0xA40501FA, .name = "PINTSRD (PINT status D)"},
{.address = 0xA4080080, .name = "IMR0 (Interrupt mask 0)"},
{.address = 0xA40800C0, .name = "IMCR0 (Interrupt mask clear 0)"},
{.address = 0xA4080084, .name = "IMR1 (Interrupt mask 1)"},
{.address = 0xA40800C4, .name = "IMCR1 (Interrupt mask clear 1)"},
{.address = 0xA4080088, .name = "IMR2 (Interrupt mask 2)"},
{.address = 0xA40800C8, .name = "IMCR2 (Interrupt mask clear 2)"},
{.address = 0xA408008C, .name = "IMR3 (Interrupt mask 3)"},
{.address = 0xA40800CC, .name = "IMCR3 (Interrupt mask clear 3)"},
{.address = 0xA4080090, .name = "IMR4 (Interrupt mask 4)"},
{.address = 0xA40800D0, .name = "IMCR4 (Interrupt mask clear 4)"},
{.address = 0xA4080094, .name = "IMR5 (Interrupt mask 5)"},
{.address = 0xA40800D4, .name = "IMCR5 (Interrupt mask clear 5)"},
{.address = 0xA4080098, .name = "IMR6 (Interrupt mask 6)"},
{.address = 0xA40800D8, .name = "IMCR6 (Interrupt mask clear 6)"},
{.address = 0xA408009C, .name = "IMR7 (Interrupt mask 7)"},
{.address = 0xA40800DC, .name = "IMCR7 (Interrupt mask clear 7)"},
{.address = 0xA40800A0, .name = "IMR8 (Interrupt mask 8)"},
{.address = 0xA40800E0, .name = "IMCR8 (Interrupt mask clear 8)"},
{.address = 0xA40800A4, .name = "IMR9 (Interrupt mask 9)"},
{.address = 0xA40800E4, .name = "IMCR9 (Interrupt mask clear 9)"},
{.address = 0xA40800A8, .name = "IMR10 (Interrupt mask 10)"},
{.address = 0xA40800E8, .name = "IMCR10 (Interrupt mask clear 10)"},
{.address = 0xA40800AC, .name = "IMR11 (Interrupt mask 11)"},
{.address = 0xA40800EC, .name = "IMCR11 (Interrupt mask clear 11)"},
{.address = 0xA40800B0, .name = "IMR12 (Interrupt mask 12)"},
{.address = 0xA40800F0, .name = "IMCR12 (Interrupt mask clear 12)"},
//DMA (DMA Controller)"},
{.address = 0xFE008020, .name = "SAR0 (DMA0 Source address)"},
{.address = 0xFE008024, .name = "DAR0 (DMA0 Dest address)"},
{.address = 0xFE008028, .name = "TCR0 (DMA0 Count)"},
{.address = 0xFE00802C, .name = "CHCR0 (DMA0 Control)"},
{.address = 0xFE008030, .name = "SAR1 (DMA1 Source address)"},
{.address = 0xFE008034, .name = "DAR1 (DMA1 Dest address)"},
{.address = 0xFE008038, .name = "TCR1 (DMA1 Count)"},
{.address = 0xFE00803C, .name = "CHCR1 (DMA1 Control)"},
{.address = 0xFE008040, .name = "SAR2 (DMA2 Source address)"},
{.address = 0xFE008044, .name = "DAR2 (DMA2 Dest address)"},
{.address = 0xFE008048, .name = "TCR2 (DMA2 Count)"},
{.address = 0xFE00804C, .name = "CHCR2 (DMA2 Control)"},
{.address = 0xFE008050, .name = "SAR3 (DMA3 Source address)"},
{.address = 0xFE008054, .name = "DAR3 (DMA3 Dest address)"},
{.address = 0xFE008058, .name = "TCR3 (DMA3 Count)"},
{.address = 0xFE00805C, .name = "CHCR3 (DMA3 Control)"},
{.address = 0xFE008060, .name = "DMAOR (DMA Operation)"},
{.address = 0xFE008070, .name = "SAR4 (DMA4 Source address)"},
{.address = 0xFE008074, .name = "DAR4 (DMA4 Dest address)"},
{.address = 0xFE008078, .name = "TCR4 (DMA4 Count)"},
{.address = 0xFE00807C, .name = "CHCR4 (DMA4 Control)"},
{.address = 0xFE008080, .name = "SAR5 (DMA5 Source address)"},
{.address = 0xFE008084, .name = "DAR5 (DMA5 Dest address)"},
{.address = 0xFE008088, .name = "TCR5 (DMA5 Count)"},
{.address = 0xFE00808C, .name = "CHCR5 (DMA5 Control)"},
{.address = 0xFE008120, .name = "SARB0 (DMA0 Source address B)"},
{.address = 0xFE008124, .name = "DARB0 (DMA0 Dest address B)"},
{.address = 0xFE008128, .name = "TCRB0 (DMA0 Count B)"},
{.address = 0xFE008130, .name = "SARB1 (DMA1 Source address B)"},
{.address = 0xFE008134, .name = "DARB1 (DMA1 Dest address B)"},
{.address = 0xFE008138, .name = "TCRB1 (DMA1 Count B)"},
{.address = 0xFE008140, .name = "SARB2 (DMA2 Source address B)"},
{.address = 0xFE008144, .name = "DARB2 (DMA2 Dest address B)"},
{.address = 0xFE008148, .name = "TCRB2 (DMA2 Count B)"},
{.address = 0xFE008150, .name = "SARB3 (DMA3 Source address B)"},
{.address = 0xFE008154, .name = "DARB3 (DMA3 Dest address B)"},
{.address = 0xFE008158, .name = "TCRB3 (DMA3 Count B)"},
{.address = 0xFE009000, .name = "DMARS0 (DMA resource select 0)"},
{.address = 0xFE009004, .name = "DMARS1 (DMA resource select 1)"},
{.address = 0xFE009008, .name = "DMARS2 (DMA resource select 2)"},
// MMU (Memory Manager)"},
{.address = 0xFF000010, .name = "MMUCR (MMU Control)"},
{.address = 0xFF000000, .name = "PTEH (MMU Page table entry high)"},
{.address = 0xFF000004, .name = "PTEL (MMU Page table entry low)"},
{.address = 0xFF000034, .name = "PTEA (MMU Page table entry assistance)"},
{.address = 0xFF000008, .name = "TTB (MMU Translation table base)"},
{.address = 0xFF00000C, .name = "TEA (MMU TLB Exception address)"},
{.address = 0xFF000070, .name = "PASCR (Physical address control)"},
{.address = 0xFF000078, .name = "IRMCR (Instruction refetch inhibit control)"},
{.address = 0xF2000000, .name = "ITLBADDRA (ITLB Address Array)"},
{.address = 0xF3000000, .name = "ITLBDATAA1 (ITLB Data Array 1)"},
{.address = 0xF3800000, .name = "ITLBDATAA2 (ITLB Data Array 2)"},
{.address = 0xF6000000, .name = "00100000 dd UTLBADDRA (UTLB Address Array)"},
{.address = 0xF7000000, .name = "UTLBDATAA1 (UTLB Data Array 1)"},
{.address = 0xF7800000, .name = " 00100000 dd UTLBDATAA2 (UTLB Data Array 2)"},
{.address = 0xF6100000, .name = "PMBADDRA (PMB Address Array)"},
{.address = 0xF7100000, .name = "PMBDATAA (PMB Data Array)"},
//Cache (Cache control)"},
{.address = 0xFF00001C, .name = "CCR (Cache control)"},
{.address = 0xF0000000, .name = "ICADDRA (Instruction Cache Address Array)"},
{.address = 0xF1000000, .name = "ICDATAA (Instruction Cache Data Array)"},
{.address = 0xF4000000, .name = "OCADDRA (Operand Cache Address Array)"},
{.address = 0xF5000000, .name = "OCDATAA (Operand Cache Data Array)"},
//BSC (Bus control)"},
{.address = 0xFEC10048, .name = "RTCSR (Refresh timer control)"},
{.address = 0xFEC1004C, .name = "RTCNT (Refresh counter)"},
{.address = 0xFEC10050, .name = "RTCOR (Refresh constant)"},
{.address = 0xFEC10000, .name = "CMNCR (Bus Common control)"},
{.address = 0xFEC10004, .name = "CS0BCR (Bus control for CS0)"},
{.address = 0xFEC10008, .name = "CS2BCR (Bus control for CS2)"},
{.address = 0xFEC1000C, .name = "CS3BCR (Bus control for CS3)"},
{.address = 0xFEC10010, .name = "CS4BCR (Bus control for CS4)"},
{.address = 0xFEC10014, .name = "CS5ABCR (Bus control for CS5A)"},
{.address = 0xFEC10018, .name = "CS5BBCR (Bus control for CS5B)"},
{.address = 0xFEC1001C, .name = "CS6ABCR (Bus control for CS6A)"},
{.address = 0xFEC10020, .name = "CS6BBCR (Bus control for CS6B)"},
{.address = 0xFEC10024, .name = "CS0WCR (Wait control for CS0)"},
{.address = 0xFEC10028, .name = "CS2WCR (Wait control for CS2)"},
{.address = 0xFEC1002C, .name = "CS3WCR (Wait control for CS3)"},
{.address = 0xFEC10030, .name = "CS4WCR (Wait control for CS4)"},
{.address = 0xFEC10034, .name = "CS5AWCR (Wait control for CS5A)"},
{.address = 0xFEC10038, .name = "CS5BWCR (Wait control for CS5B)"},
{.address = 0xFEC1003C, .name = "CS6AWCR (Wait control for CS6A)"},
{.address = 0xFEC10040, .name = "CS6BWCR (Wait control for CS6B)"},
{.address = 0xFEC10044, .name = "SDCR (SDRAM control)"},
{.address = 0xFEC14000, .name = "SDMR2 (SDRAM mode for CS2)"},
{.address = 0xFEC15000, .name = "SDMR3 (SDRAM mode for CS3)"},
// Clock (Clock generation)"},
{.address = 0xA4150000, .name = "FRQCR (Frequency control)"},
{.address = 0xA4150008, .name = "FSICLKCR (FSI Clock control)"},
{.address = 0xA415003C, .name = "SPUCLKCR (SPU Clock control)"},
{.address = 0xA4150010, .name = "DDCLKCR (DD Clock control)"},
{.address = 0xA4150014, .name = "USBCLKCR (USB Clock control)"},
{.address = 0xA4150024, .name = "PLLCR (PLL1 control)"},
{.address = 0xA4150028, .name = "PLL2CR (PLL2 control)"},
{.address = 0xA4150050, .name = "FLLFRQ (FLL Multiplication control)"},
{.address = 0xA4150060, .name = "LSTATUS (Frequency change status)"},
{.address = 0xA4150044, .name = "SSCGCR (Spread spectrum control)"},
// RTC (Real-time clock)"},
{.address = 0xA413FEC0, .name = "R64CNT (64-Hz counter)"},
{.address = 0xA413FEC2, .name = "RSECCNT (Seconds counter)"},
{.address = 0xA413FEC4, .name = "RMINCNT (Minutes counter)"},
{.address = 0xA413FEC6, .name = "RHRCNT (Hours counter)"},
{.address = 0xA413FEC8, .name = "RWKCNT (Weekday counter)"},
{.address = 0xA413FECA, .name = "RDAYCNT (Date counter)"},
{.address = 0xA413FECC, .name = "RMONCNT (Months counter)"},
{.address = 0xA413FECE, .name = "RYRCNT (Years counter)"},
{.address = 0xA413FED0, .name = "RSECAR (Seconds alarm)"},
{.address = 0xA413FED2, .name = "RMINAR (Minutes alarm)"},
{.address = 0xA413FED4, .name = "RHRAR (Hours alarm)"},
{.address = 0xA413FED6, .name = "RWKAR (Weekday alarm)"},
{.address = 0xA413FED8, .name = "RDAYAR (Date alarm)"},
{.address = 0xA413FEDA, .name = "RMONAR (Months alarm)"},
{.address = 0xA413FEE0, .name = "RYRAR (Years alarm)"},
{.address = 0xA413FEDC, .name = "RCR1 (RTC control 1)"},
{.address = 0xA413FEDE, .name = "RCR2 (RTC control 2)"},
{.address = 0xA413FEE4, .name = "RCR3 (RTC control 3)"},
// WDT (Watchdog timer)"},
{.address = 0xA4520000, .name = "RWTCNT (Watchdog timer counter)"},
{.address = 0xA4520004, .name = "RWTCSR (Watchdog control)"},
// Power (Power-down modes)"},
{.address = 0xA4150020, .name = "STBCR (Standby control)"},
{.address = 0xA4150030, .name = "MSTPCR0 (Module stop 0)"},
{.address = 0xA4150038, .name = "MSTPCR2 (Module stop 2)"},
{.address = 0xA4150040, .name = "BAR (Boot address)"},
// TMU0 (Timer unit 0)"},
{.address = 0xA4490004, .name = "TSTR (Timer start)"},
{.address = 0xA4490008, .name = "TCOR0 (Timer 0 constant)"},
{.address = 0xA449000C, .name = "TCNT0 (Timer 0 counter)"},
{.address = 0xA4490010, .name = "TCR0 (Timer 0 control)"},
// TMU1 (Timer unit 1)"},
{.address = 0xA4490014, .name = "TCOR1 (Timer 1 constant)"},
{.address = 0xA4490018, .name = "TCNT1 (Timer 1 counter)"},
{.address = 0xA449001C, .name = "TCR1 (Timer 1 control)"},
// TMU2 (Timer unit 2)"},
{.address = 0xA4490020, .name = "TCOR2 (Timer 2 constant)"},
{.address = 0xA4490024, .name = "TCNT2 (Timer 2 counter)"},
{.address = 0xA4490028, .name = "TCR2 (Timer 2 control)"},
// CMT (Compare match timer)"},
{.address = 0xA44A0000, .name = "CMSTR (Compare match timer start)"},
{.address = 0xA44A0060, .name = "CMCSR (Compare match timer control)"},
{.address = 0xA44A0064, .name = "CMCNT (Compare match timer counter)"},
{.address = 0xA44A0068, .name = "CMCOR (Compare match timer constant)"},
// SCIF (Serial communication)"},
{.address = 0xA4410000, .name = "SCSMR (Serial Mode)"},
{.address = 0xA4410004, .name = "SCBRR (Serial Bit rate)"},
{.address = 0xA4410008, .name = "SCSCR (Serial Control)"},
{.address = 0xA441000C, .name = "SCFTDR (Serial Transmit data)"},
{.address = 0xA4410010, .name = "SCFSR (Serial Status)"},
{.address = 0xA4410014, .name = "SCFRDR (Serial Receive data)"},
{.address = 0xA4410018, .name = "SCFCR (Serial FIFO control)"},
{.address = 0xA441001C, .name = "SCFDR (Serial FIFO count)"},
{.address = 0xA4410024, .name = "SCLSR (Serial Line status)"},
// IIC (I2C communication)"},
{.address = 0xA4470000, .name = "ICDR (I2C bus data)"},
{.address = 0xA4470004, .name = "ICCR (I2C bus control)"},
{.address = 0xA4470008, .name = "ICSR (I2C bus status)"},
{.address = 0xA447000C, .name = "ICIC (I2C interrupt control)"},
{.address = 0xA4470010, .name = "ICCL (I2C clock control low)"},
{.address = 0xA4470014, .name = "ICCH (I2C clock control high)"},
// USB (USB 2 control)"},
{.address = 0xA4D80000, .name = "SYSCFG (System configuration control)"},
{.address = 0xA4D80002, .name = "BUSWAIT (CPU bus wait setting)"},
{.address = 0xA4D80004, .name = "SYSSTS (System configuration status)"},
{.address = 0xA4D80008, .name = "DVSTCTR (Device status control)"},
{.address = 0xA4D8000C, .name = "TESTMODE (Test mode)"},
{.address = 0xA4D80014, .name = "CFIFO (CFIFO port)"},
{.address = 0xA4D80018, .name = "D0FIFO (D0FIFO port)"},
{.address = 0xA4D8001C, .name = "D1FIFO (D1FIFO port)"},
{.address = 0xA4D80020, .name = "CFIFOSEL (CFIFO port select)"},
{.address = 0xA4D80022, .name = "CFIFOCTR (CFIFO port control)"},
{.address = 0xA4D80028, .name = "D0FIFOSEL (D0FIFO port select)"},
{.address = 0xA4D8002A, .name = "D0FIFOCTR (D0FIFO port control)"},
{.address = 0xA4D8002C, .name = "D1FIFOSEL (D1FIFO port select)"},
{.address = 0xA4D8002E, .name = "D1FIFOCTR (D1FIFO port control)"},
{.address = 0xA4D80030, .name = "INTENB0 (Interrupt enable 0)"},
{.address = 0xA4D80036, .name = "BRDYENB (BRDY interrupt enable)"},
{.address = 0xA4D80038, .name = "NRDYENB (NRDY interrupt enable)"},
{.address = 0xA4D8003A, .name = "BEMPENB (BEMP interrupt enable)"},
{.address = 0xA4D8003C, .name = "SOFCFG (SOF pin configuration)"},
{.address = 0xA4D80040, .name = "INTSTS0 (Interrupt status 0)"},
{.address = 0xA4D80046, .name = "BRDYSTS (BRDY interrupt status)"},
{.address = 0xA4D80048, .name = "NRDYSTS (NRDY interrupt status)"},
{.address = 0xA4D8004A, .name = "BEMPSTS (BEMP interrupt status)"},
{.address = 0xA4D8004C, .name = "FRMNUM (Frame number)"},
{.address = 0xA4D8004E, .name = "UFRMNUM (mFrame number)"},
{.address = 0xA4D80050, .name = "USBADDR (USB address)"},
{.address = 0xA4D80054, .name = "USBREQ (USB request type)"},
{.address = 0xA4D80056, .name = "USBVAL (USB request value)"},
{.address = 0xA4D80058, .name = "USBINDX (USB request index)"},
{.address = 0xA4D8005A, .name = "USBLENG (USB request length)"},
{.address = 0xA4D8005C, .name = "DCPCFG (DCP configuration)"},
{.address = 0xA4D8005E, .name = "DCPMAXP (DCP max packet size)"},
{.address = 0xA4D80060, .name = "DCPCTR (DCP control)"},
{.address = 0xA4D80064, .name = "PIPESEL (Pipe window select)"},
{.address = 0xA4D80068, .name = "PIPECFG (Pipe configuration)"},
{.address = 0xA4D8006A, .name = "PIPEBUF (Pipe buffer setting)"},
{.address = 0xA4D8006C, .name = "PIPEMAXP (Pipe max packet size)"},
{.address = 0xA4D8006E, .name = "PIPEPERI (Pipe cycle control)"},
{.address = 0xA4D80070, .name = "PIPE1CTR (Pipe 1 control)"},
{.address = 0xA4D80072, .name = "PIPE2CTR (Pipe 2 control)"},
{.address = 0xA4D80074, .name = "PIPE3CTR (Pipe 3 control)"},
{.address = 0xA4D80076, .name = "PIPE4CTR (Pipe 4 control)"},
{.address = 0xA4D80078, .name = "PIPE5CTR (Pipe 5 control)"},
{.address = 0xA4D8007A, .name = "PIPE6CTR (Pipe 6 control)"},
{.address = 0xA4D8007C, .name = "PIPE7CTR (Pipe 7 control)"},
{.address = 0xA4D8007E, .name = "PIPE8CTR (Pipe 8 control)"},
{.address = 0xA4D80080, .name = "PIPE9CTR (Pipe 9 control)"},
{.address = 0xA4D80090, .name = "PIPE1TRE (Pipe 1 transaction counter enable)"},
{.address = 0xA4D80092, .name = "PIPE1TRN (Pipe 1 transaction counter)"},
{.address = 0xA4D80094, .name = "PIPE2TRE (Pipe 2 transaction counter enable)"},
{.address = 0xA4D80096, .name = "PIPE2TRN (Pipe 2 transaction counter)"},
{.address = 0xA4D80098, .name = "PIPE3TRE (Pipe 3 transaction counter enable)"},
{.address = 0xA4D8009A, .name = "PIPE3TRN (Pipe 3 transaction counter)"},
{.address = 0xA4D8009C, .name = "PIPE4TRE (Pipe 4 transaction counter enable)"},
{.address = 0xA4D8009E, .name = "PIPE4TRN (Pipe 4 transaction counter)"},
{.address = 0xA4D800A0, .name = "PIPE5TRE (Pipe 5 transaction counter enable)"},
{.address = 0xA4D800A2, .name = "PIPE5TRN (Pipe 5 transaction counter)"},
{.address = 0xA40501D4, .name = "UPONCR (USB power control)"},
// FSI (FIFO serial interface)"},
{.address = 0xFE3C0000, .name = "A_DO_FMT (A output serial format)"},
{.address = 0xFE3C0004, .name = "A_DOFF_CTL (A output FIFO control)"},
{.address = 0xFE3C0008, .name = "A_DOFF_ST (A output FIFO status)"},
{.address = 0xFE3C000C, .name = "A_DI_FMT (A input serial format)"},
{.address = 0xFE3C0010, .name = "A_DIFF_CTL (A input FIFO control)"},
{.address = 0xFE3C0014, .name = "A_DIFF_ST (A input FIFO status)"},
{.address = 0xFE3C0018, .name = "A_CKG1 (A clock set 1)"},
{.address = 0xFE3C001C, .name = "A_CKG2 (A clock set 2)"},
{.address = 0xFE3C0020, .name = "A_DIDT (A read data)"},
{.address = 0xFE3C0024, .name = "A_DODT (A write data)"},
{.address = 0xFE3C0028, .name = "A_MUTE_ST (A mute state)"},
{.address = 0xFE3C0040, .name = "B_DO_FMT (B output serial format)"},
{.address = 0xFE3C0044, .name = "B_DOFF_CTL (B output FIFO control)"},
{.address = 0xFE3C0048, .name = "B_DOFF_ST (B output FIFO status)"},
{.address = 0xFE3C004C, .name = "B_DI_FMT (B input serial format)"},
{.address = 0xFE3C0050, .name = "B_DIFF_CTL (B input FIFO control)"},
{.address = 0xFE3C0054, .name = "B_DIFF_ST (B input FIFO status)"},
{.address = 0xFE3C0058, .name = "B_CKG1 (B clock set 1)"},
{.address = 0xFE3C005C, .name = "B_CKG2 (B clock set 2)"},
{.address = 0xFE3C0060, .name = "B_DIDT (B read data)"},
{.address = 0xFE3C0064, .name = "B_DODT (B write data)"},
{.address = 0xFE3C0068, .name = "B_MUTE_ST (B mute state)"},
{.address = 0xFE3C0200, .name = "INT_ST (Interrupt state)"},
{.address = 0xFE3C0204, .name = "IEMSK (Interrupt source mask)"},
{.address = 0xFE3C0208, .name = "IMSK (Interrupt signal mask)"},
{.address = 0xFE3C020C, .name = "MUTE (Mute set)"},
{.address = 0xFE3C0210, .name = "CLK_RST (Clock reset)"},
{.address = 0xFE3C0214, .name = "SOFT_RST (Software reset)"},
{.address = 0xFE3C0218, .name = "FIFO_SZ (FIFO size)"},
// KEY (Key interface unit)"},
{.address = 0xA44B0000, .name = "KIUDATA0 (Key input data 0)"},
{.address = 0xA44B0002, .name = "KIUDATA1 (Key input data 1)"},
{.address = 0xA44B0004, .name = "KIUDATA2 (Key input data 2)"},
{.address = 0xA44B0006, .name = "KIUDATA3 (Key input data 3)"},
{.address = 0xA44B0008, .name = "KIUDATA4 (Key input data 4)"},
{.address = 0xA44B000A, .name = "KIUDATA5 (Key input data 5)"},
{.address = 0xA44B000C, .name = "KIUCNTREG (Scan control)"},
{.address = 0xA44B000E, .name = "KIAUTOFIXREG (Automatic key bounce setting)"},
{.address = 0xA44B0010, .name = "KIUMODEREG (Scan mode setting)"},
{.address = 0xA44B0012, .name = "KIUSTATEREG (Scan state)"},
{.address = 0xA44B0014, .name = "KIUINTREG (Interrupt setting)"},
{.address = 0xA44B0016, .name = "KIUWSETREG (Scan wait time setting)"},
{.address = 0xA44B0018, .name = "KIUINTERVALREG (Scan interval time setting)"},
{.address = 0xA44B001A, .name = "KOUTPINSET (KOUT line function setting)"},
{.address = 0xA44B001C, .name = "KINPINSET (KIN line function setting)"},
// MSIOF0 (Sync serial interface 0)"},
{.address = 0xA4C40000, .name = "SITMDR1 (Transmit mode 1)"},
{.address = 0xA4C40004, .name = "SITMDR2 (Transmit mode 2)"},
{.address = 0xA4C40008, .name = "SITMDR3 (Transmit mode 3)"},
{.address = 0xA4C40020, .name = "SITSCR (Transmit clock select)"},
{.address = 0xA4C40010, .name = "SIRMDR1 (Receive mode 1)"},
{.address = 0xA4C40014, .name = "SIRMDR2 (Receive mode 2)"},
{.address = 0xA4C40018, .name = "SIRMDR3 (Receive mode 3)"},
{.address = 0xA4C40024, .name = "SIRSCR (Receive clock select)"},
{.address = 0xA4C40028, .name = "SICTR (Control)"},
{.address = 0xA4C40030, .name = "SIFCTR (FIFO control)"},
{.address = 0xA4C40040, .name = "SISTR (Status)"},
{.address = 0xA4C40044, .name = "SIIER (Interrupt enable)"},
{.address = 0xA4C40048, .name = "SITDR1 (Transmit control data 1)"},
{.address = 0xA4C4004C, .name = "SITDR2 (Transmit control data 2)"},
{.address = 0xA4C40050, .name = "SITFDR (Transmit FIFO data)"},
{.address = 0xA4C40058, .name = "SIRDR1 (Receive control data 1)"},
{.address = 0xA4C4005C, .name = "SIRDR2 (Receive control data 2)"},
{.address = 0xA4C40060, .name = "SIRFDR (Receive FIFO data)"},
// MSIOF1 (Sync serial interface 1)"},
{.address = 0xA4C50000, .name = "SITMDR1 (Transmit mode 1)"},
{.address = 0xA4C50004, .name = "SITMDR2 (Transmit mode 2)"},
{.address = 0xA4C50008, .name = "SITMDR3 (Transmit mode 3)"},
{.address = 0xA4C50020, .name = "SITSCR (Transmit clock select)"},
{.address = 0xA4C50010, .name = "SIRMDR1 (Receive mode 1)"},
{.address = 0xA4C50014, .name = "SIRMDR2 (Receive mode 2)"},
{.address = 0xA4C50018, .name = "SIRMDR3 (Receive mode 3)"},
{.address = 0xA4C50024, .name = "SIRSCR (Receive clock select)"},
{.address = 0xA4C50028, .name = "SICTR (Control)"},
{.address = 0xA4C50030, .name = "SIFCTR (FIFO control)"},
{.address = 0xA4C50040, .name = "SISTR (Status)"},
{.address = 0xA4C50044, .name = "SIIER (Interrupt enable)"},
{.address = 0xA4C50048, .name = "SITDR1 (Transmit control data 1)"},
{.address = 0xA4C5004C, .name = "SITDR2 (Transmit control data 2)"},
{.address = 0xA4C50050, .name = "SITFDR (Transmit FIFO data)"},
{.address = 0xA4C50058, .name = "SIRDR1 (Receive control data 1)"},
{.address = 0xA4C5005C, .name = "SIRDR2 (Receive control data 2)"},
{.address = 0xA4C50060, .name = "SIRFDR (Receive FIFO data)"},
// ADC (Analog/Digital converter)"},
{.address = 0xA4610080, .name = "ADDRA (A/D A data)"},
{.address = 0xA4610082, .name = "ADDRB (A/D B data)"},
{.address = 0xA4610084, .name = "ADDRC (A/D C data)"},
{.address = 0xA4610086, .name = "ADDRD (A/D D data)"},
{.address = 0xA4610088, .name = "ADCSR (A/D Control/status)"},
{.address = 0xA461008A, .name = "ADCCSR (A/D Custom control)"},
{.address = 0xA461008C, .name = "ADCUST (A/D Control)"},
{.address = 0xA461008E, .name = "ADPCTL (A/D Port control)"},
// SHway (Super Hyway Bus)"},
{.address = 0xFF800018, .name = "PRLCKCR (LCK control)"},
{.address = 0xFF800020, .name = "PRPRICR0 (PRI control 0)"},
{.address = 0xFF800028, .name = "PRPRICR1 (PRI control 1)"},
{.address = 0xFF800030, .name = "PRPRICR2 (PRI control 2)"},
{.address = 0xFF800038, .name = "PRPRICR3 (PRI control 3)"},
{.address = 0xFF800040, .name = "PRPRICR4 (PRI control 4)"},
{.address = 0xFF800048, .name = "PRPRICR5 (PRI control 5)"},
{.address = 0xA4530000, .name = "SHOCMCR (SHOC master control)"},
{.address = 0xA4530004, .name = "SHOCMSR (SHOC master status)"},
// stop
{.address = 0x00000000, .name = NULL},
};