/* * TOPPERS/SSP Kernel * Smallest Set Profile Kernel * * Copyright (C) 2008 by Witz Corporation, JAPAN * Copyright (C) 2010,2011 by Naoki Saito * Nagoya Municipal Industrial Research Institute, JAPAN * * 上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・ * 再配布(以下,利用と呼ぶ)することを無償で許諾する. * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権 * 表示,この利用条件および下記の無保証規定が,そのままの形でソース * コード中に含まれていること. * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用 * できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ * ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保 * 証規定を掲載すること. * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用 * できない形で再配布する場合には,次のいずれかの条件を満たすこと. * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作 * 権表示,この利用条件および下記の無保証規定を掲載すること. * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報 * 告すること. * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害 * からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また, * 本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ * く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること. * * 本ソフトウェアは,無保証で提供されているものである.上記著作権者およ * びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す * る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用 * により直接的または間接的に生じたいかなる損害に関しても,その責任を負 * わない. * */ /* * M32C/87に依存する定義 */ #ifndef TOPPERS_M32C87_H #define TOPPERS_M32C87_H /* * CPU例外ハンドラ番号の定義 */ #define EXCNO_UNDEF_INSTRUNCTION 0 /* 未定義命令 */ #define EXCNO_OVERFLOW 1 /* オーバーフロー */ #define EXCNO_BRK_INSTRUCTION 2 /* BRK命令 */ #define EXCNO_ADDRESS_MATCH 3 /* アドレス一致 */ #define EXCNO_WDT 5 /* ウォッチドッグタイマ */ #define EXCNO_XIN_STOP 5 /* 発振停止検出 */ #define EXCNO_LOW_VOLT_DETECT 5 /* 電圧低下検出 */ #define EXCNO_NMI 7 /* NMI */ #define EXCNO_RESET 8 /* リセット */ /* * 割込み番号の定義 */ #define INTNO_BRK 0 /* BRK */ #define INTNO_AD1 7 /* A-D変換器1 */ #define INTNO_DMA0 8 /* DMA0 */ #define INTNO_DMA1 9 /* DMA1 */ #define INTNO_DMA2 10 /* DMA2 */ #define INTNO_DMA3 11 /* DMA3 */ #define INTNO_TA0 12 /* タイマA0 */ #define INTNO_TA1 13 /* タイマA1 */ #define INTNO_TA2 14 /* タイマA2 */ #define INTNO_TA3 15 /* タイマA3 */ #define INTNO_TA4 16 /* タイマA4 */ #define INTNO_S0TNACK 17 /* UART0送信,NACK */ #define INTNO_S0RACK 18 /* UART0受信,ACK */ #define INTNO_S1TNACK 19 /* UART1送信,NACK */ #define INTNO_S1RACK 20 /* UART1受信,ACK */ #define INTNO_TB0 21 /* タイマB0 */ #define INTNO_TB1 22 /* タイマB1 */ #define INTNO_TB2 23 /* タイマB2 */ #define INTNO_TB3 24 /* タイマB3 */ #define INTNO_TB4 25 /* タイマB4 */ #define INTNO_INT5 26 /* INT5 */ #define INTNO_INT4 27 /* INT4 */ #define INTNO_INT3 28 /* INT3 */ #define INTNO_INT2 29 /* INT2 */ #define INTNO_INT1 30 /* INT1 */ #define INTNO_INT0 31 /* INT0 */ #define INTNO_TB5 32 /* タイマB5 */ #define INTNO_S2TNACK 33 /* UART2送信,NACK */ #define INTNO_S2RACK 34 /* UART2受信,ACK */ #define INTNO_S3TNACK 35 /* UART3送信,NACK */ #define INTNO_S3RACK 36 /* UART3受信,ACK */ #define INTNO_S4TNACK 37 /* UART4送信,NACK */ #define INTNO_S4RACK 38 /* UART4受信,ACK */ #define INTNO_AD0 42 /* A-D変換器0 */ #define INTNO_KEY 43 /* キー入力割り込み */ #define INTNO_IIO0 44 /* インテリジェントI/O割込み0 */ #define INTNO_IIO1 45 /* インテリジェントI/O割込み1 */ #define INTNO_IIO2 46 /* インテリジェントI/O割込み2 */ #define INTNO_IIO3 47 /* インテリジェントI/O割込み3 */ #define INTNO_IIO4 48 /* インテリジェントI/O割込み4 */ #define INTNO_IIO5 49 /* インテリジェントI/O割込み5 */ #define INTNO_IIO6 50 /* インテリジェントI/O割込み6 */ #define INTNO_IIO7 51 /* インテリジェントI/O割込み7 */ #define INTNO_IIO8 52 /* インテリジェントI/O割込み8 */ #define INTNO_IIO9CAN0 53 /* インテリジェントI/O割込み9,CAN0 */ #define INTNO_IIO10CAN 54 /* インテリジェントI/O割込み10,CAN1 */ #define INTNO_IIO11CAN 57 /* インテリジェントI/O割込み11,CAN2 */ /* * 割込みハンドラ番号の定義 */ #define INHNO_BRK INTNO_BRK /* BRK */ #define INHNO_AD1 INTNO_AD1 /* A-D変換器1 */ #define INHNO_DMA0 INTNO_DMA0 /* DMA0 */ #define INHNO_DMA1 INTNO_DMA1 /* DMA1 */ #define INHNO_DMA2 INTNO_DMA2 /* DMA2 */ #define INHNO_DMA3 INTNO_DMA3 /* DMA3 */ #define INHNO_TA0 INTNO_TA0 /* タイマA0 */ #define INHNO_TA1 INTNO_TA1 /* タイマA1 */ #define INHNO_TA2 INTNO_TA2 /* タイマA2 */ #define INHNO_TA3 INTNO_TA3 /* タイマA3 */ #define INHNO_TA4 INTNO_TA4 /* タイマA4 */ #define INHNO_S0TNACK INTNO_S0TNACK /* UART0送信,NACK */ #define INHNO_S0RACK INTNO_S0RACK /* UART0受信,ACK */ #define INHNO_S1TNACK INTNO_S1TNACK /* UART1送信,NACK */ #define INHNO_S1RACK INTNO_S1RACK /* UART1受信,ACK */ #define INHNO_TB0 INTNO_TB0 /* タイマB0 */ #define INHNO_TB1 INTNO_TB1 /* タイマB1 */ #define INHNO_TB2 INTNO_TB2 /* タイマB2 */ #define INHNO_TB3 INTNO_TB3 /* タイマB3 */ #define INHNO_TB4 INTNO_TB4 /* タイマB4 */ #define INHNO_INT5 INTNO_INT5 /* INT5 */ #define INHNO_INT4 INTNO_INT4 /* INT4 */ #define INHNO_INT3 INTNO_INT3 /* INT3 */ #define INHNO_INT2 INTNO_INT2 /* INT2 */ #define INHNO_INT1 INTNO_INT1 /* INT1 */ #define INHNO_INT0 INTNO_INT0 /* INT0 */ #define INHNO_TB5 INTNO_TB5 /* タイマB5 */ #define INHNO_S2TNACK INTNO_S2TNACK /* UART2送信,NACK */ #define INHNO_S2RACK INTNO_S2RACK /* UART2受信,ACK */ #define INHNO_S3TNACK INTNO_S3TNACK /* UART3送信,NACK */ #define INHNO_S3RACK INTNO_S3RACK /* UART3受信,ACK */ #define INHNO_S4TNACK INTNO_S4TNACK /* UART4送信,NACK */ #define INHNO_S4RACK INTNO_S4RACK /* UART4受信,ACK */ #define INHNO_AD0 INTNO_AD0 /* A-D変換器0 */ #define INHNO_KEY INTNO_KEY /* キー入力割り込み */ #define INHNO_IIO0 INTNO_IIO0 /* インテリジェントI/O割込み0 */ #define INHNO_IIO1 INTNO_IIO1 /* インテリジェントI/O割込み1 */ #define INHNO_IIO2 INTNO_IIO2 /* インテリジェントI/O割込み2 */ #define INHNO_IIO3 INTNO_IIO3 /* インテリジェントI/O割込み3 */ #define INHNO_IIO4 INTNO_IIO4 /* インテリジェントI/O割込み4 */ #define INHNO_IIO5 INTNO_IIO5 /* インテリジェントI/O割込み5 */ #define INHNO_IIO6 INTNO_IIO6 /* インテリジェントI/O割込み6 */ #define INHNO_IIO7 INTNO_IIO7 /* インテリジェントI/O割込み7 */ #define INHNO_IIO8 INTNO_IIO8 /* インテリジェントI/O割込み8 */ #define INHNO_IIO9CAN0 INTNO_IIO9CAN0 /* インテリジェントI/O割込み9,CAN0 */ #define INHNO_IIO10CAN INTNO_IIO10CAN /* インテリジェントI/O割込み10,CAN1 */ #define INHNO_IIO11CAN INTNO_IIO11CAN /* インテリジェントI/O割込み11,CAN2 */ /* * 割込み制御レジスタ定義 */ #define TADR_TA0IC (0x6C) #define TADR_TA1IC (0x8C) #define TADR_TA2IC (0x6E) #define TADR_TA3IC (0x8E) #define TADR_TA4IC (0x70) #define TADR_TB0IC (0x94) #define TADR_TB1IC (0x76) #define TADR_TB2IC (0x96) #define TADR_TB3IC (0x78) #define TADR_TB4IC (0x98) #define TADR_TB5IC (0x69) #define TADR_S0TIC (0x90) #define TADR_S1TIC (0x92) #define TADR_S2TIC (0x89) #define TADR_S3TIC (0x8B) #define TADR_S4TIC (0x8D) #define TADR_S0RIC (0x72) #define TADR_S1RIC (0x74) #define TADR_S2RIC (0x6B) #define TADR_S3RIC (0x6D) #define TADR_S4RIC (0x6F) #define TADR_BCN0IC (0x71) #define TADR_BCN1IC (0x91) #define TADR_BCN2IC (0x8F) #define TADR_BCN3IC (0x71) #define TADR_BCN4IC (0x91) #define TADR_DMO0IC (0x68) #define TADR_DMO1IC (0x88) #define TADR_DMO2IC (0x6A) #define TADR_DMO3IC (0x8A) #define TADR_AD0IC (0x73) #define TADR_KUPIC (0x93) #define TADR_IIO0IC (0x75) #define TADR_IIO1IC (0x95) #define TADR_IIO2IC (0x77) #define TADR_IIO3IC (0x97) #define TADR_IIO4IC (0x79) #define TADR_IIO8IC (0x7D) #define TADR_IIO9IC (0x9D) #define TADR_IIO10IC (0x7F) #define TADR_CAN0IC (0x9D) #define TADR_CAN1IC (0x7F) #define TADR_CAN2IC (0x81) #define TADR_CAN3IC (0x75) #define TADR_CAN4IC (0x95) #define TADR_CAN5IC (0x99) #define TADR_INT0IC (0x9E) #define TADR_INT1IC (0x7E) #define TADR_INT2IC (0x9C) #define TADR_INT3IC (0x7C) #define TADR_INT4IC (0x9A) #define TADR_INT5IC (0x7A) /* * TA0関連レジスタ(システムティック用) */ #define TADR_TABSR (0x340U) #define TADR_UDF (0x344U) #define TADR_TA0 (0x346) #define TADR_TA0MR (0x356) #define TBIT_TABSR_TA0S 0x01 /* * 汎用ポートレジスタ(一部,144ピン版のみ) */ #define TBIT_BIT0 0x01 #define TBIT_BIT1 0x02 #define TBIT_BIT2 0x04 #define TBIT_BIT3 0x08 #define TBIT_BIT4 0x10 #define TBIT_BIT5 0x20 #define TBIT_BIT6 0x40 #define TBIT_BIT7 0x80 #define TADR_P0 0x3e0 /* ポートP0レジスタ */ #define TADR_P1 0x3e1 /* ポートP1レジスタ */ #define TADR_PD0 0x3e2 /* ポートP0方向レジスタ */ #define TADR_PD1 0x3e3 /* ポートP1方向レジスタ */ #define TADR_P2 0x3e4 /* ポートP2レジスタ */ #define TADR_P3 0x3e5 /* ポートP3レジスタ */ #define TADR_PD2 0x3e6 /* ポートP2方向レジスタ */ #define TADR_PD3 0x3e7 /* ポートP3方向レジスタ */ #define TADR_P4 0x3e8 /* ポートP4レジスタ */ #define TADR_P5 0x3e9 /* ポートP5レジスタ */ #define TADR_PD4 0x3ea /* ポートP4方向レジスタ */ #define TADR_PD5 0x3eb /* ポートP5方向レジスタ */ #define TADR_P6 0x3c0 /* ポートP6レジスタ */ #define TADR_P7 0x3c1 /* ポートP7レジスタ */ #define TADR_PD6 0x3c2 /* ポートP6方向レジスタ */ #define TADR_PD7 0x3c3 /* ポートP7方向レジスタ */ #define TADR_P8 0x3c4 /* ポートP8レジスタ */ #define TADR_P9 0x3c5 /* ポートP9レジスタ */ #define TADR_PD8 0x3c6 /* ポートP8方向レジスタ */ #define TADR_PD9 0x3c7 /* ポートP9方向レジスタ */ #define TADR_P10 0x3c8 /* ポートP10レジスタ */ #define TADR_P11 0x3c9 /* ポートP11レジスタ(144ピン版のみ) */ #define TADR_PD10 0x3ca /* ポートP10方向レジスタ */ #define TADR_PD11 0x3cb /* ポートP11方向レジスタ(144ピン版のみ) */ #define TADR_P12 0x3cc /* ポートP12レジスタ(144ピン版のみ) */ #define TADR_P13 0x3cd /* ポートP13レジスタ(144ピン版のみ) */ #define TADR_PD12 0x3ce /* ポートP12方向レジスタ(144ピン版のみ) */ #define TADR_PD13 0x3cf /* ポートP13方向レジスタ(144ピン版のみ) */ #define TADR_P14 0x3d0 /* ポートP14レジスタ(144ピン版のみ) */ #define TADR_P15 0x3d1 /* ポートP15レジスタ(144ピン版のみ) */ #define TADR_PD14 0x3d2 /* ポートP14方向レジスタ(144ピン版のみ) */ #define TADR_PD15 0x3d3 /* ポートP15方向レジスタ(144ピン版のみ) */ #define TADR_PUR0 0x3f0 /* プルアップ制御レジスタ0 */ #define TADR_PUR1 0x3f1 /* プルアップ制御レジスタ1 */ #define TADR_PUR2 0x3da /* プルアップ制御レジスタ2 */ #define TADR_PUR3 0x3db /* プルアップ制御レジスタ3 */ #define TADR_PUR4 0x3dc /* プルアップ制御レジスタ4(144ピン版のみ) */ #define TADR_PCR 0x3ff /* ポート制御レジスタ */ #define TADR_PS0 0x3b0 /* 機能選択レジスタA0 */ #define TADR_PS1 0x3b1 /* 機能選択レジスタA1 */ #define TADR_PS2 0x3b4 /* 機能選択レジスタA2 */ #define TADR_PS3 0x3b5 /* 機能選択レジスタA3 */ #define TADR_PS5 0x3b9 /* 機能選択レジスタA5(144ピン版のみ) */ #define TADR_PS6 0x3bc /* 機能選択レジスタA6(144ピン版のみ) */ #define TADR_PS7 0x3bd /* 機能選択レジスタA7(144ピン版のみ) */ #define TADR_PS8 0x3a0 /* 機能選択レジスタA8(144ピン版のみ) */ #define TADR_PS9 0x3a1 /* 機能選択レジスタA9(144ピン版のみ) */ #define TADR_PSL0 0x3b2 /* 機能選択レジスタB0 */ #define TADR_PSL1 0x3b3 /* 機能選択レジスタB1 */ #define TADR_PSL2 0x3b6 /* 機能選択レジスタB2 */ #define TADR_PSL3 0x3b7 /* 機能選択レジスタB3 */ #define TADR_PSC 0x3af /* 機能選択レジスタC */ #endif /* TOPPERS_M32C87_H */