text: /*********************************************************************************************
  * File:	    44B.H
  * Author:	embest
  * Desc:	    Samsung 44B0X CPU register define
  * History:
  *********************************************************************************************/
  
  #ifndef __44B0X_H__
  #define __44B0X_H__
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  #include "option.h"
  
  /* System */
  #define rSYSCFG		(*(volatile unsigned *)0x1c00000)
  
  /* Cache */
  #define rNCACHBE0	(*(volatile unsigned *)0x1c00004)
  #define rNCACHBE1	(*(volatile unsigned *)0x1c00008)
  
  /* Bus control */
  #define rSBUSCON	(*(volatile unsigned *)0x1c40000)
  
  /* Memory control */
  #define rBWSCON		(*(volatile unsigned *)0x1c80000)
  #define rBANKCON0	(*(volatile unsigned *)0x1c80004)
  #define rBANKCON1	(*(volatile unsigned *)0x1c80008)
  #define rBANKCON2	(*(volatile unsigned *)0x1c8000c)
  #define rBANKCON3	(*(volatile unsigned *)0x1c80010)
  #define rBANKCON4	(*(volatile unsigned *)0x1c80014)
  #define rBANKCON5	(*(volatile unsigned *)0x1c80018)
  #define rBANKCON6	(*(volatile unsigned *)0x1c8001c)
  #define rBANKCON7	(*(volatile unsigned *)0x1c80020)
  #define rREFRESH	(*(volatile unsigned *)0x1c80024)
  #define rBANKSIZE	(*(volatile unsigned *)0x1c80028)
  #define rMRSRB6		(*(volatile unsigned *)0x1c8002c)
  #define rMRSRB7		(*(volatile unsigned *)0x1c80030)
  
  /* UART */
  #define rULCON0		(*(volatile unsigned *)0x1d00000)
  #define rULCON1		(*(volatile unsigned *)0x1d04000)
  #define rUCON0		(*(volatile unsigned *)0x1d00004)
  #define rUCON1		(*(volatile unsigned *)0x1d04004)
  #define rUFCON0		(*(volatile unsigned *)0x1d00008)
  #define rUFCON1		(*(volatile unsigned *)0x1d04008)
  #define rUMCON0		(*(volatile unsigned *)0x1d0000c)
  #define rUMCON1		(*(volatile unsigned *)0x1d0400c)
  #define rUTRSTAT0	(*(volatile unsigned *)0x1d00010)
  #define rUTRSTAT1	(*(volatile unsigned *)0x1d04010)
  #define rUERSTAT0	(*(volatile unsigned *)0x1d00014)
  #define rUERSTAT1	(*(volatile unsigned *)0x1d04014)
  #define rUFSTAT0	(*(volatile unsigned *)0x1d00018)
  #define rUFSTAT1	(*(volatile unsigned *)0x1d04018)
  #define rUMSTAT0	(*(volatile unsigned *)0x1d0001c)
  #define rUMSTAT1	(*(volatile unsigned *)0x1d0401c)
  #define rUBRDIV0	(*(volatile unsigned *)0x1d00028)
  #define rUBRDIV1	(*(volatile unsigned *)0x1d04028)
  
  #ifdef __BIG_ENDIAN
  #define rUTXH0		(*(volatile unsigned char *)0x1d00023)
  #define rUTXH1		(*(volatile unsigned char *)0x1d04023)
  #define rURXH0		(*(volatile unsigned char *)0x1d00027)
  #define rURXH1		(*(volatile unsigned char *)0x1d04027)
  #define WrUTXH0(ch)	(*(volatile unsigned char *)(0x1d00023))=(unsigned char)(ch)
  #define WrUTXH1(ch)	(*(volatile unsigned char *)(0x1d04023))=(unsigned char)(ch)
  #define RdURXH0()	(*(volatile unsigned char *)(0x1d00027))
  #define RdURXH1()	(*(volatile unsigned char *)(0x1d04027))
  #define UTXH0		(0x1d00020+3)  //byte_access address by BDMA
  #define UTXH1		(0x1d04020+3)
  #define URXH0		(0x1d00024+3)
  #define URXH1		(0x1d04024+3)
  
  #else //Little Endian
  #define rUTXH0		(*(volatile unsigned char *)0x1d00020)
  #define rUTXH1		(*(volatile unsigned char *)0x1d04020)
  #define rURXH0		(*(volatile unsigned char *)0x1d00024)
  #define rURXH1		(*(volatile unsigned char *)0x1d04024)
  #define WrUTXH0(ch)	(*(volatile unsigned char *)0x1d00020)=(unsigned char)(ch)
  #define WrUTXH1(ch)	(*(volatile unsigned char *)0x1d04020)=(unsigned char)(ch)
  #define RdURXH0()	(*(volatile unsigned char *)0x1d00024)
  #define RdURXH1()	(*(volatile unsigned char *)0x1d04024)
  #define UTXH0		(0x1d00020)    //byte_access address by BDMA
  #define UTXH1		(0x1d04020)
  #define URXH0		(0x1d00024)
  #define URXH1		(0x1d04024)
  #endif
  
  /* SIO */
  #define rSIOCON		(*(volatile unsigned *)0x1d14000)
  #define rSIODAT		(*(volatile unsigned *)0x1d14004)
  #define rSBRDR		(*(volatile unsigned *)0x1d14008)
  #define rIVTCNT		(*(volatile unsigned *)0x1d1400c)
  #define rDCNTZ		(*(volatile unsigned *)0x1d14010)
  
  /* IIS */
  #define rIISCON		(*(volatile unsigned *)0x1d18000)
  #define rIISMOD		(*(volatile unsigned *)0x1d18004)
  #define rIISPSR		(*(volatile unsigned *)0x1d18008)
  #define rIISFCON	(*(volatile unsigned *)0x1d1800c)
  
  #ifdef __BIG_ENDIAN
  #define IISFIF		((volatile unsigned short *)0x1d18012)
  
  #else //Little Endian
  #define IISFIF		((volatile unsigned short *)0x1d18010)
  #endif
  
  /* I/O PORT */
  #define rPCONA		(*(volatile unsigned *)0x1d20000)
  #define rPDATA		(*(volatile unsigned *)0x1d20004)
  
  #define rPCONB		(*(volatile unsigned *)0x1d20008)
  #define rPDATB		(*(volatile unsigned *)0x1d2000c)
  
  #define rPCONC		(*(volatile unsigned *)0x1d20010)
  #define rPDATC		(*(volatile unsigned *)0x1d20014)
  #define rPUPC		(*(volatile unsigned *)0x1d20018)
  
  #define rPCOND		(*(volatile unsigned *)0x1d2001c)
  #define rPDATD		(*(volatile unsigned *)0x1d20020)
  #define rPUPD		(*(volatile unsigned *)0x1d20024)
  
  #define rPCONE		(*(volatile unsigned *)0x1d20028)
  #define rPDATE		(*(volatile unsigned *)0x1d2002c)
  #define rPUPE		(*(volatile unsigned *)0x1d20030)
  
  #define rPCONF		(*(volatile unsigned *)0x1d20034)
  #define rPDATF		(*(volatile unsigned *)0x1d20038)
  #define rPUPF		(*(volatile unsigned *)0x1d2003c)
  
  #define rPCONG		(*(volatile unsigned *)0x1d20040)
  #define rPDATG		(*(volatile unsigned *)0x1d20044)
  #define rPUPG		(*(volatile unsigned *)0x1d20048)
  
  #define rSPUCR		(*(volatile unsigned *)0x1d2004c)
  #define rEXTINT		(*(volatile unsigned *)0x1d20050)
  #define rEXTINTPND	(*(volatile unsigned *)0x1d20054)
  
  /* WATCHDOG */
  #define rWTCON		(*(volatile unsigned *)0x1d30000)
  #define rWTDAT		(*(volatile unsigned *)0x1d30004)
  #define rWTCNT		(*(volatile unsigned *)0x1d30008)
  
  /* ADC */
  #define rADCCON		(*(volatile unsigned *)0x1d40000)
  #define rADCPSR		(*(volatile unsigned *)0x1d40004)
  #define rADCDAT		(*(volatile unsigned *)0x1d40008)
  
  /* Timer */
  #define rTCFG0		(*(volatile unsigned *)0x1d50000)
  #define rTCFG1		(*(volatile unsigned *)0x1d50004)
  #define rTCON		(*(volatile unsigned *)0x1d50008)
  
  #define rTCNTB0		(*(volatile unsigned *)0x1d5000c)
  #define rTCMPB0		(*(volatile unsigned *)0x1d50010)
  #define rTCNTO0		(*(volatile unsigned *)0x1d50014)
  
  #define rTCNTB1		(*(volatile unsigned *)0x1d50018)
  #define rTCMPB1		(*(volatile unsigned *)0x1d5001c)
  #define rTCNTO1		(*(volatile unsigned *)0x1d50020)
  
  #define rTCNTB2		(*(volatile unsigned *)0x1d50024)
  #define rTCMPB2		(*(volatile unsigned *)0x1d50028)
  #define rTCNTO2		(*(volatile unsigned *)0x1d5002c)
  
  #define rTCNTB3		(*(volatile unsigned *)0x1d50030)
  #define rTCMPB3		(*(volatile unsigned *)0x1d50034)
  #define rTCNTO3		(*(volatile unsigned *)0x1d50038)
  
  #define rTCNTB4		(*(volatile unsigned *)0x1d5003c)
  #define rTCMPB4		(*(volatile unsigned *)0x1d50040)
  #define rTCNTO4		(*(volatile unsigned *)0x1d50044)
  
  #define rTCNTB5		(*(volatile unsigned *)0x1d50048)
  #define rTCNTO5		(*(volatile unsigned *)0x1d5004c)
  
  /* SIO */
  #define rSIOCON		(*(volatile unsigned *)0x1d14000)
  #define rSIODAT		(*(volatile unsigned *)0x1d14004)
  #define rSBRDR		(*(volatile unsigned *)0x1d14008)
  #define rIVTCNT		(*(volatile unsigned *)0x1d1400c)
  #define rDCNTZ		(*(volatile unsigned *)0x1d14010)
  
  /* IIS */
  #define rIISCON		(*(volatile unsigned *)0x1d18000)
  #define rIISMOD		(*(volatile unsigned *)0x1d18004)
  #define rIISPSR		(*(volatile unsigned *)0x1d18008)
  #define rIISFCON	(*(volatile unsigned *)0x1d1800c)
  
  #ifdef __BIG_ENDIAN
  #define rIISFIF		((volatile unsigned short *)0x1d18012)
  #else //Little Endian
  #define rIISFIF		((volatile unsigned short *)0x1d18010)
  #endif
  
  /* IIC */
  #define rIICCON     (*(volatile unsigned *)0x1d60000)
  #define rIICSTAT    (*(volatile unsigned *)0x1d60004)
  #define rIICADD     (*(volatile unsigned *)0x1d60008)
  #define rIICDS      (*(volatile unsigned *)0x1d6000c)
  
  /* RTC */
  #ifdef __BIG_ENDIAN
  #define rRTCCON		(*(volatile unsigned char *)0x1d70043)
  #define rRTCALM     (*(volatile unsigned char *)0x1d70053)
  #define rALMSEC     (*(volatile unsigned char *)0x1d70057)
  #define rALMMIN     (*(volatile unsigned char *)0x1d7005b)
  #define rALMHOUR    (*(volatile unsigned char *)0x1d7005f)
  #define rALMDAY     (*(volatile unsigned char *)0x1d70063)
  #define rALMMON     (*(volatile unsigned char *)0x1d70067)
  #define rALMYEAR    (*(volatile unsigned char *)0x1d7006b)
  #define rRTCRST     (*(volatile unsigned char *)0x1d7006f)
  #define rBCDSEC     (*(volatile unsigned char *)0x1d70073)
  #define rBCDMIN     (*(volatile unsigned char *)0x1d70077)
  #define rBCDHOUR    (*(volatile unsigned char *)0x1d7007b)
  #define rBCDDAY     (*(volatile unsigned char *)0x1d7007f)
  #define rBCDDATE    (*(volatile unsigned char *)0x1d70083)
  #define rBCDMON     (*(volatile unsigned char *)0x1d70087)
  #define rBCDYEAR    (*(volatile unsigned char *)0x1d7008b)
  #define rTICINT     (*(volatile unsigned char *)0x1d7008e)
  #else
  #define rRTCCON     (*(volatile unsigned char *)0x1d70040)
  #define rRTCALM     (*(volatile unsigned char *)0x1d70050)
  #define rALMSEC     (*(volatile unsigned char *)0x1d70054)
  #define rALMMIN     (*(volatile unsigned char *)0x1d70058)
  #define rALMHOUR    (*(volatile unsigned char *)0x1d7005c)
  #define rALMDAY     (*(volatile unsigned char *)0x1d70060)
  #define rALMMON     (*(volatile unsigned char *)0x1d70064)
  #define rALMYEAR    (*(volatile unsigned char *)0x1d70068)
  #define rRTCRST     (*(volatile unsigned char *)0x1d7006c)
  #define rBCDSEC     (*(volatile unsigned char *)0x1d70070)
  #define rBCDMIN     (*(volatile unsigned char *)0x1d70074)
  #define rBCDHOUR    (*(volatile unsigned char *)0x1d70078)
  #define rBCDDAY     (*(volatile unsigned char *)0x1d7007c)
  #define rBCDDATE    (*(volatile unsigned char *)0x1d70080)
  #define rBCDMON     (*(volatile unsigned char *)0x1d70084)
  #define rBCDYEAR    (*(volatile unsigned char *)0x1d70088)
  #define rTICINT     (*(volatile unsigned char *)0x1d7008c)
  #endif
  
  /* Clock & Power management */
  #define rPLLCON		(*(volatile unsigned *)0x1d80000)
  #define rCLKCON		(*(volatile unsigned *)0x1d80004)
  #define rCLKSLOW	(*(volatile unsigned *)0x1d80008)
  #define rLOCKTIME	(*(volatile unsigned *)0x1d8000c)
  
  /* INTERRUPT */
  #define rINTCON		(*(volatile unsigned *)0x1e00000)
  #define rINTPND		(*(volatile unsigned *)0x1e00004)
  #define rINTMOD		(*(volatile unsigned *)0x1e00008)
  #define rINTMSK		(*(volatile unsigned *)0x1e0000c)
  
  #define rI_PSLV		(*(volatile unsigned *)0x1e00010)
  #define rI_PMST		(*(volatile unsigned *)0x1e00014)
  #define rI_CSLV		(*(volatile unsigned *)0x1e00018)
  #define rI_CMST		(*(volatile unsigned *)0x1e0001c)
  #define rI_ISPR		(*(volatile unsigned *)0x1e00020)
  #define rI_ISPC		(*(volatile unsigned *)0x1e00024)
  
  #define rF_ISPR		(*(volatile unsigned *)0x1e00038)
  #define rF_ISPC		(*(volatile unsigned *)0x1e0003c)
  
  /* LCD */
  #define rLCDCON1	(*(volatile unsigned *)0x1f00000)
  #define rLCDCON2	(*(volatile unsigned *)0x1f00004)
  #define rLCDCON3	(*(volatile unsigned *)0x1f00040)
  #define rLCDSADDR1	(*(volatile unsigned *)0x1f00008)
  #define rLCDSADDR2	(*(volatile unsigned *)0x1f0000c)
  #define rLCDSADDR3	(*(volatile unsigned *)0x1f00010)
  #define rREDLUT		(*(volatile unsigned *)0x1f00014)
  #define rGREENLUT	(*(volatile unsigned *)0x1f00018)
  #define rBLUELUT	(*(volatile unsigned *)0x1f0001c)
  #define rDP1_2		(*(volatile unsigned *)0x1f00020)
  #define rDP4_7		(*(volatile unsigned *)0x1f00024)
  #define rDP3_5		(*(volatile unsigned *)0x1f00028)
  #define rDP2_3		(*(volatile unsigned *)0x1f0002c)
  #define rDP5_7		(*(volatile unsigned *)0x1f00030)
  #define rDP3_4		(*(volatile unsigned *)0x1f00034)
  #define rDP4_5		(*(volatile unsigned *)0x1f00038)
  #define rDP6_7		(*(volatile unsigned *)0x1f0003c)
  #define rDITHMODE	(*(volatile unsigned *)0x1f00044)
  
  /* ZDMA0 */
  #define rZDCON0		(*(volatile unsigned *)0x1e80000)
  #define rZDISRC0	(*(volatile unsigned *)0x1e80004)
  #define rZDIDES0	(*(volatile unsigned *)0x1e80008)
  #define rZDICNT0	(*(volatile unsigned *)0x1e8000c)
  #define rZDCSRC0	(*(volatile unsigned *)0x1e80010)
  #define rZDCDES0	(*(volatile unsigned *)0x1e80014)
  #define rZDCCNT0	(*(volatile unsigned *)0x1e80018)
  
  /* ZDMA1 */
  #define rZDCON1		(*(volatile unsigned *)0x1e80020)
  #define rZDISRC1	(*(volatile unsigned *)0x1e80024)
  #define rZDIDES1	(*(volatile unsigned *)0x1e80028)
  #define rZDICNT1	(*(volatile unsigned *)0x1e8002c)
  #define rZDCSRC1	(*(volatile unsigned *)0x1e80030)
  #define rZDCDES1	(*(volatile unsigned *)0x1e80034)
  #define rZDCCNT1	(*(volatile unsigned *)0x1e80038)
  
  /* BDMA0 */
  #define rBDCON0		(*(volatile unsigned *)0x1f80000)
  #define rBDISRC0	(*(volatile unsigned *)0x1f80004)
  #define rBDIDES0	(*(volatile unsigned *)0x1f80008)
  #define rBDICNT0	(*(volatile unsigned *)0x1f8000c)
  #define rBDCSRC0	(*(volatile unsigned *)0x1f80010)
  #define rBDCDES0	(*(volatile unsigned *)0x1f80014)
  #define rBDCCNT0	(*(volatile unsigned *)0x1f80018)
  
  /* BDMA1 */
  #define rBDCON1		(*(volatile unsigned *)0x1f80020)
  #define rBDISRC1	(*(volatile unsigned *)0x1f80024)
  #define rBDIDES1	(*(volatile unsigned *)0x1f80028)
  #define rBDICNT1	(*(volatile unsigned *)0x1f8002c)
  #define rBDCSRC1	(*(volatile unsigned *)0x1f80030)
  #define rBDCDES1	(*(volatile unsigned *)0x1f80034)
  #define rBDCCNT1	(*(volatile unsigned *)0x1f80038)
  
  /* ISR */
  #define pISR_RESET	(*(unsigned *)(_ISR_STARTADDRESS+0x0))
  #define pISR_UNDEF	(*(unsigned *)(_ISR_STARTADDRESS+0x4))
  #define pISR_SWI	(*(unsigned *)(_ISR_STARTADDRESS+0x8))
  #define pISR_PABORT	(*(unsigned *)(_ISR_STARTADDRESS+0xc))
  #define pISR_DABORT	(*(unsigned *)(_ISR_STARTADDRESS+0x10))
  #define pISR_RESERVED	(*(unsigned *)(_ISR_STARTADDRESS+0x14))
  #define pISR_IRQ	(*(unsigned *)(_ISR_STARTADDRESS+0x18))
  #define pISR_FIQ	(*(unsigned *)(_ISR_STARTADDRESS+0x1c))
  #define pISR_ADC	(*(unsigned *)(_ISR_STARTADDRESS+0x20))
  #define pISR_RTC	(*(unsigned *)(_ISR_STARTADDRESS+0x24))
  #define pISR_UTXD1	(*(unsigned *)(_ISR_STARTADDRESS+0x28))
  #define pISR_UTXD0	(*(unsigned *)(_ISR_STARTADDRESS+0x2c))
  #define pISR_SIO	(*(unsigned *)(_ISR_STARTADDRESS+0x30))
  #define pISR_IIC	(*(unsigned *)(_ISR_STARTADDRESS+0x34))
  #define pISR_URXD1	(*(unsigned *)(_ISR_STARTADDRESS+0x38))
  #define pISR_URXD0	(*(unsigned *)(_ISR_STARTADDRESS+0x3c))
  #define pISR_TIMER5	(*(unsigned *)(_ISR_STARTADDRESS+0x40))
  #define pISR_TIMER4	(*(unsigned *)(_ISR_STARTADDRESS+0x44))
  #define pISR_TIMER3	(*(unsigned *)(_ISR_STARTADDRESS+0x48))
  #define pISR_TIMER2	(*(unsigned *)(_ISR_STARTADDRESS+0x4c))
  #define pISR_TIMER1	(*(unsigned *)(_ISR_STARTADDRESS+0x50))
  #define pISR_TIMER0	(*(unsigned *)(_ISR_STARTADDRESS+0x54))
  #define pISR_UERR01	(*(unsigned *)(_ISR_STARTADDRESS+0x58))
  #define pISR_WDT	(*(unsigned *)(_ISR_STARTADDRESS+0x5c))
  #define pISR_BDMA1	(*(unsigned *)(_ISR_STARTADDRESS+0x60))
  #define pISR_BDMA0	(*(unsigned *)(_ISR_STARTADDRESS+0x64))
  #define pISR_ZDMA1	(*(unsigned *)(_ISR_STARTADDRESS+0x68))
  #define pISR_ZDMA0	(*(unsigned *)(_ISR_STARTADDRESS+0x6c))
  #define pISR_TICK	(*(unsigned *)(_ISR_STARTADDRESS+0x70))
  #define pISR_EINT4567	(*(unsigned *)(_ISR_STARTADDRESS+0x74))
  #define pISR_EINT3	(*(unsigned *)(_ISR_STARTADDRESS+0x78))
  #define pISR_EINT2	(*(unsigned *)(_ISR_STARTADDRESS+0x7c))
  #define pISR_EINT1	(*(unsigned *)(_ISR_STARTADDRESS+0x80))
  #define pISR_EINT0	(*(unsigned *)(_ISR_STARTADDRESS+0x84))
  
  /* PENDING BIT */
  //CAUTION:You must clear the pending bit as general special register.
  //        it's different way with KS32C6x00
  #define BIT_ADC		(0x1)
  #define BIT_RTC		(0x1<<1)
  #define BIT_UTXD1	(0x1<<2)
  #define BIT_UTXD0	(0x1<<3)
  #define BIT_SIO		(0x1<<4)
  #define BIT_IIC		(0x1<<5)
  #define BIT_URXD1	(0x1<<6)
  #define BIT_URXD0	(0x1<<7)
  #define BIT_TIMER5	(0x1<<8)
  #define BIT_TIMER4	(0x1<<9)
  #define BIT_TIMER3	(0x1<<10)
  #define BIT_TIMER2	(0x1<<11)
  #define BIT_TIMER1	(0x1<<12)
  #define BIT_TIMER0	(0x1<<13)
  #define BIT_UERR01	(0x1<<14)
  #define BIT_WDT		(0x1<<15)
  #define BIT_BDMA1	(0x1<<16)
  #define BIT_BDMA0	(0x1<<17)
  #define BIT_ZDMA1	(0x1<<18)
  #define BIT_ZDMA0	(0x1<<19)
  #define BIT_TICK	(0x1<<20)
  #define BIT_EINT4567	(0x1<<21)
  #define BIT_EINT3	(0x1<<22)
  #define BIT_EINT2	(0x1<<23)
  #define BIT_EINT1	(0x1<<24)
  #define BIT_EINT0	(0x1<<25)
  #define BIT_GLOBAL	(0x1<<26)
  
  #ifdef __cplusplus
  }
  #endif
  
  #endif /* __44B0X_H__ */
  
  