/*
 *  TOPPERS/ASP Kernel
 *      Toyohashi Open Platform for Embedded Real-Time Systems/
 *      Advanced Standard Profile Kernel
 * 
 *  Copyright (C) 2007 by Embedded and Real-Time Systems Laboratory
 *              Graduate School of Information Science, Nagoya Univ., JAPAN
 *  Copyright (C) 2008 by Witz Corporation, JAPAN
 * 
 *  上記著作権者は，以下の(1)〜(4)の条件を満たす場合に限り，本ソフトウェ
 *  ア（本ソフトウェアを改変したものを含む．以下同じ）を使用・複製・改
 *  変・再配布（以下，利用と呼ぶ）することを無償で許諾する．
 *  (1) 本ソフトウェアをソースコードの形で利用する場合には，上記の著作
 *      権表示，この利用条件および下記の無保証規定が，そのままの形でソー
 *      スコード中に含まれていること．
 *  (2) 本ソフトウェアを，ライブラリ形式など，他のソフトウェア開発に使
 *      用できる形で再配布する場合には，再配布に伴うドキュメント（利用
 *      者マニュアルなど）に，上記の著作権表示，この利用条件および下記
 *      の無保証規定を掲載すること．
 *  (3) 本ソフトウェアを，機器に組み込むなど，他のソフトウェア開発に使
 *      用できない形で再配布する場合には，次のいずれかの条件を満たすこ
 *      と．
 *    (a) 再配布に伴うドキュメント（利用者マニュアルなど）に，上記の著
 *        作権表示，この利用条件および下記の無保証規定を掲載すること．
 *    (b) 再配布の形態を，別に定める方法によって，TOPPERSプロジェクトに
 *        報告すること．
 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
 *      害からも，上記著作権者およびTOPPERSプロジェクトを免責すること．
 *      また，本ソフトウェアのユーザまたはエンドユーザからのいかなる理
 *      由に基づく請求からも，上記著作権者およびTOPPERSプロジェクトを
 *      免責すること．
 * 
 *  本ソフトウェアは，無保証で提供されているものである．上記著作権者お
 *  よびTOPPERSプロジェクトは，本ソフトウェアに関して，特定の使用目的
 *  に対する適合性も含めて，いかなる保証も行わない．また，本ソフトウェ
 *  アの利用により直接的または間接的に生じたいかなる損害に関しても，そ
 *  の責任を負わない．
 * 
 */

/*
 *  SH7262のハードウェア資源の定義
 */

#ifndef TOPPERS_SH7262_H
#define TOPPERS_SH7262_H

/*
 *  例外ベクタ
 */
#define POWER_ON_RESET_VECTOR				0
#define MANUAL_RESET_VECTOR					2
#define GENERAL_ILLEGAL_INSTRUCTION_VECTOR	4
#define RAM_ERROR_VECTOR					5
#define SLOT_ILLEGAL_INSTRUCTION__VECTOR	6
#define CPU_ADDRESS_ERROR_VECTOR			9
#define DMA_ADDRESS_ERROR_VECTOR			10
#define FPU_VECTOR							13
#define BANK_OVER_FLOW_VECTOR				15
#define BANK_UNDER_FLOW_VECTOR				16
#define DIVIDE_BY_ZERO_VECTOR				17
#define OVER_FLOW_VECTOR					18

/*
 *  割込みベクタ
 */
#define IRQ0_VECTOR        			64
#define IRQ1_VECTOR        			65
#define IRQ2_VECTOR        			66
#define IRQ3_VECTOR        			67
#define IRQ4_VECTOR        			68
#define IRQ5_VECTOR        			69
#define IRQ6_VECTOR        			70
#define IRQ7_VECTOR    				71

#define PINT0_VECTOR				80
#define PINT1_VECTOR				81
#define PINT2_VECTOR				82
#define PINT3_VECTOR				83
#define PINT4_VECTOR				84
#define PINT5_VECTOR				85
#define PINT6_VECTOR				86
#define PINT7_VECTOR				87

#define DMAC0_DEI_VECTOR        	108
#define DMAC0_HEI_VECTOR        	109
#define DMAC1_DEI_VECTOR        	112
#define DMAC1_HEI_VECTOR        	113
#define DMAC2_DEI_VECTOR        	116
#define DMAC2_HEI_VECTOR        	117
#define DMAC3_DEI_VECTOR        	120
#define DMAC3_HEI_VECTOR        	121
#define DMAC4_DEI_VECTOR        	124
#define DMAC4_HEI_VECTOR        	125
#define DMAC5_DEI_VECTOR        	128
#define DMAC5_HEI_VECTOR        	129
#define DMAC6_DEI_VECTOR        	132
#define DMAC6_HEI_VECTOR        	133
#define DMAC7_DEI_VECTOR        	136
#define DMAC7_HEI_VECTOR        	137
#define DMAC8_DEI_VECTOR        	140
#define DMAC8_HEI_VECTOR        	141
#define DMAC9_DEI_VECTOR        	144
#define DMAC9_HEI_VECTOR        	145
#define DMAC10_DEI_VECTOR        	148
#define DMAC10_HEI_VECTOR        	149
#define DMAC11_DEI_VECTOR        	152
#define DMAC11_HEI_VECTOR        	153
#define DMAC12_DEI_VECTOR        	156
#define DMAC12_HEI_VECTOR        	157
#define DMAC13_DEI_VECTOR        	160
#define DMAC13_HEI_VECTOR        	161
#define DMAC14_DEI_VECTOR        	164
#define DMAC14_HEI_VECTOR        	165
#define DMAC15_DEI_VECTOR        	168
#define DMAC15_HEI_VECTOR        	169

#define USB_VECTOR					170

#define VIVSYNCJ_VECTOR				171
#define VBUFERR_VECTOR				172
#define VIFIELDE_VECTOR				173
#define VOLINE_VECTOR				174

#define CMI0_VECTOR        			175
#define CMI1_VECTOR        			176
#define CMI_VECTOR        			177

#define ITI_VECTOR        			178

#define MTU0_TGIA_VECTOR        	179
#define MTU0_TGIB_VECTOR        	180
#define MTU0_TGIC_VECTOR        	181
#define MTU0_TGID_VECTOR        	182
#define MTU0_TGIV_VECTOR        	183
#define MTU0_TGIE_VECTOR        	184
#define MTU0_TGIF_VECTOR        	185

#define MTU1_TGIA_VECTOR        	186
#define MTU1_TGIB_VECTOR        	187
#define MTU1_TGIV_VECTOR        	188
#define MTU1_TGIU_VECTOR        	189

#define MTU2_TGIA_VECTOR        	190
#define MTU2_TGIB_VECTOR        	191
#define MTU2_TGIV_VECTOR        	192
#define MTU2_TGIU_VECTOR        	193

#define MTU3_TGIA_VECTOR        	194
#define MTU3_TGIB_VECTOR        	195
#define MTU3_TGIC_VECTOR        	196
#define MTU3_TGID_VECTOR        	197
#define MTU3_TGIV_VECTOR        	198

#define MTU4_TGIA_VECTOR        	199
#define MTU4_TGIB_VECTOR        	200
#define MTU4_TGIC_VECTOR        	201
#define MTU4_TGID_VECTOR        	202
#define MTU4_TGIV_VECTOR        	203

#define MCPT1_VECTOR				204		/*モーターコントロールPWMタイマチャネル1*/
#define MCPT2_VECTOR				205		/*モーターコントロールPWMタイマチャネル2*/

#define ADI_VECTOR					206

#define SSI_SSIF0_VECTOR			207
#define SSI_SSIRXI0_VECTOR			208
#define SSI_SSITXI0_VECTOR			209

#define SSI_SSII1_VECTOR			210
#define SSI_SSIRTI1_VECTOR			211

#define SSI_SSII2_VECTOR			212
#define SSI_SSIRTI2_VECTOR			213

#define SSI_SSII3_VECTOR			214
#define SSI_SSIRTI3_VECTOR			215

#define SPDIFI_VECTOR				216

#define IIC3_STPI0_VECTOR			217
#define IIC3_NAKI0_VECTOR			218
#define IIC3_RXI0_VECTOR			219
#define IIC3_TXI0_VECTOR			220
#define IIC3_TEI0_VECTOR			221

#define IIC3_STPI1_VECTOR			222
#define IIC3_NAKI1_VECTOR			223
#define IIC3_RXI1_VECTOR			224
#define IIC3_TXI1_VECTOR			225
#define IIC3_TEI1_VECTOR			226

#define IIC3_STPI2_VECTOR			227
#define IIC3_NAKI2_VECTOR			228
#define IIC3_RXI2_VECTOR			229
#define IIC3_TXI2_VECTOR			230
#define IIC3_TEI2_VECTOR			231

#define SCIF0_BRI_VECTOR			232
#define SCIF0_ERI_VECTOR			233
#define SCIF0_RXI_VECTOR			234
#define SCIF0_TXI_VECTOR			235

#define SCIF1_BRI_VECTOR			236
#define SCIF1_ERI_VECTOR			237
#define SCIF1_RXI_VECTOR			238
#define SCIF1_TXI_VECTOR			239

#define SCIF2_BRI_VECTOR			240
#define SCIF2_ERI_VECTOR			241
#define SCIF2_RXI_VECTOR			242
#define SCIF2_TXI_VECTOR			243

#define SCIF3_BRI_VECTOR			244
#define SCIF3_ERI_VECTOR			245
#define SCIF3_RXI_VECTOR			246
#define SCIF3_TXI_VECTOR			247

#define SCIF4_BRI_VECTOR			248
#define SCIF4_ERI_VECTOR			249
#define SCIF4_RXI_VECTOR			250
#define SCIF4_TXI_VECTOR			251

#define SCIF5_BRI_VECTOR			252
#define SCIF5_ERI_VECTOR			253
#define SCIF5_RXI_VECTOR			254
#define SCIF5_TXI_VECTOR			255

#define SCIF6_BRI_VECTOR			256
#define SCIF6_ERI_VECTOR			257
#define SCIF6_RXI_VECTOR			258
#define SCIF6_TXI_VECTOR			259

#define SCIF7_BRI_VECTOR			260
#define SCIF7_ERI_VECTOR			261
#define SCIF7_RXI_VECTOR			262
#define SCIF7_TXI_VECTOR			263

#define SIOFI_VECTOR				264

#define SP0_SPEI_VECTOR				265
#define SP0_SPRI_VECTOR				266
#define SP0_SPTI_VECTOR				267

#define SP1_SPEI_VECTOR				268
#define SP1_SPRI_VECTOR				269
#define SP1_SPTI_VECTOR				270

#define CEN0_ERS_VECTOR				271
#define CEN0_OVR_VECTOR				272
#define CEN0_RM0_VECTOR				273
#define CEN0_RM1_VECTOR				274
#define CEN0_SLE_VECTOR				275

#define CEN1_ERS_VECTOR				276
#define CEN1_OVR_VECTOR				277
#define CEN1_RM0_VECTOR				278
#define CEN1_RM1_VECTOR				279
#define CEN1_SLE_VECTOR				280

#define IEB_VECTOR 					281

#define CDD_ISY_VECTOR				282
#define CDD_IERR_VECTOR				283
#define CDD_ITARG_VECTOR			284
#define CDD_ISEC_VECTOR				285
#define CDD_IBUF_VECTOR				286
#define CDD_IREADY_VECTOR			287

#define FLCTL_FLSTEI_VECTOR			288
#define FLCTL_FLTENDI_VECTOR		289
#define FLCTL_FLTREQ0I_VECTOR		290
#define FLCTL_FLTREQ1I_VECTOR		291

#define SDHI_SDHI3_VECTOR			292
#define SDHI_SDHI0_VECTOR			293
#define SDHI_SDHI1_VECTOR			294

#define RTC_ARM_VECTOR				296
#define RTC_PRD_VECTOR				297
#define RTC_CUP_VECTOR				298

#define SRC0_OVF_VECTOR				299
#define SRC0_UDF_VECTOR				300
#define SRC0_CEF_VECTOR				301
#define SRC0_ODFI_VECTOR			302
#define SRC0_IDEI_VECTOR			303

#define SRC1_OVF_VECTOR				304
#define SRC1_UDF_VECTOR				305
#define SRC1_CEF_VECTOR				306
#define SRC1_ODFI_VECTOR			307
#define SRC1_IDEI_VECTOR			308

#define DCUEI_VECTOR				310
#define OFFI_VECTOR					311
#define IFEI_VECTOR					312

/*
 * 割り込みコントローラレジスタ
 */
#define ICR0    UINT_C(0xfffe0800)
#define ICR1    UINT_C(0xfffe0802)
#define ICR2    UINT_C(0xfffe0804)
#define IRQRR   UINT_C(0xfffe0806)
#define PINTER  UINT_C(0xfffe0808)
#define PIRR    UINT_C(0xfffe080a)
#define IBCR    UINT_C(0xfffe080c)
#define IBNR    UINT_C(0xfffe080e)

#define IPR01   UINT_C(0xfffe0818)
#define IPR02   UINT_C(0xfffe081a)
#define IPR05   UINT_C(0xfffe0820)
#define IPR06   UINT_C(0xfffe0c00)
#define IPR07   UINT_C(0xfffe0c02)
#define IPR08   UINT_C(0xfffe0c04)
#define IPR09   UINT_C(0xfffe0c06)
#define IPR10   UINT_C(0xfffe0c08)
#define IPR11   UINT_C(0xfffe0c0a)
#define IPR12   UINT_C(0xfffe0c0c)
#define IPR13   UINT_C(0xfffe0c0e)
#define IPR14   UINT_C(0xfffe0c10)
#define IPR15   UINT_C(0xfffe0c12)
#define IPR16   UINT_C(0xfffe0c14)
#define IPR17   UINT_C(0xfffe0c16)
#define IPR18	UINT_C(0xfffe0c18)
#define IPR19	UINT_C(0xfffe0c1a)
#define IPR20	UINT_C(0xfffe0c1c)
#define IPR21	UINT_C(0xfffe0c1e)
#define IPR22	UINT_C(0xfffe0c20)

#define IRQ_POSEDGE   UINT_C(0x02)
#define IRQ_NEGEDGE   UINT_C(0x01)

/*
 *  タイマ関連
 */
#define CMSTR     UINT_C(0xfffec000)
#define CMCSR_0   UINT_C(0xfffec002)
#define CMCNT_0   UINT_C(0xfffec004)
#define CMCOR_0   UINT_C(0xfffec006)
#define CMCSR_1   UINT_C(0xfffec008)
#define CMCNT_1   UINT_C(0xfffec00A)
#define CMCOR_1   UINT_C(0xfffec00C)

#define CMSTR_STR0   UINT_C(0x0001)
#define CMSTR_STR1   UINT_C(0x0002)
#define CMCSR_CMF    UINT_C(0x0080)
#define CMCSR_CMIE   UINT_C(0x0040)

/*
 *  FIFO付きシリアルコミュニケーションインターフェース(SCIF)レジスタ
 */
#define SH_SCIF0_BASE   UINT_C(0xfffe8000)
#define SH_SCIF1_BASE   UINT_C(0xfffe8800)
#define SH_SCIF2_BASE   UINT_C(0xfffe9000)
#define SH_SCIF3_BASE   UINT_C(0xfffe9800)
#define SH_SCIF4_BASE   UINT_C(0xfffeA000)
#define SH_SCIF5_BASE   UINT_C(0xfffeA800)
#define SH_SCIF6_BASE   UINT_C(0xfffeB000)
#define SH_SCIF7_BASE   UINT_C(0xfffeB800)

/*
 *  ピンファンクションコントローラ
 */
 
#define PBCR5  	 UINT_C(0xfffe3824)
#define PBCR4  	 UINT_C(0xfffe3826)
#define PBCR3  	 UINT_C(0xfffe3828)
#define PBCR2 	 UINT_C(0xfffe382A)
#define PBCR1  	 UINT_C(0xfffe382C)
#define PBCR0  	 UINT_C(0xfffe382E)

#define PCCR2	 UINT_C(0xfffe384A)
#define PCCR1	 UINT_C(0xfffe384C)
#define PCCR0	 UINT_C(0xfffe384E)

#define PCIOR0	 UINT_C(0xFFFE3852)
#define PCDR0	 UINT_C(0xFFFE3856)

#define PDCR3  	 UINT_C(0xfffe3868)
#define PDCR2 	 UINT_C(0xfffe386A)
#define PDCR1  	 UINT_C(0xfffe386C)
#define PDCR0  	 UINT_C(0xfffe386E)

#define PECR1	 UINT_C(0xfffe388C)
#define PECR0	 UINT_C(0xfffe388E)
 
#define PFCR3  	 UINT_C(0xfffe38A8)
#define PFCR2 	 UINT_C(0xfffe38AA)
#define PFCR1  	 UINT_C(0xfffe38AC)
#define PFCR0  	 UINT_C(0xfffe38AE)

#define PGCR7  	 UINT_C(0xfffe38C0)
#define PGCR6  	 UINT_C(0xfffe38C2)
#define PGCR5  	 UINT_C(0xfffe38C4)
#define PGCR4  	 UINT_C(0xfffe38C6)
#define PGCR3  	 UINT_C(0xfffe38C8)
#define PGCR2 	 UINT_C(0xfffe38CA)
#define PGCR1  	 UINT_C(0xfffe38CC)
#define PGCR0  	 UINT_C(0xfffe38CE)

#define PHCR1  	 UINT_C(0xfffe38EC)
#define PHCR0  	 UINT_C(0xfffe38EE)

#define PJCR2 	 UINT_C(0xfffe390A)
#define PJCR1  	 UINT_C(0xfffe390C)
#define PJCR0  	 UINT_C(0xfffe390E)

#define PKCR2 	 UINT_C(0xfffe392A)
#define PKCR1  	 UINT_C(0xfffe392C)
#define PKCR0  	 UINT_C(0xfffe392E)

#endif /* TOPPERS_SH7262_H */
