00001 /* 00002 * TOPPERS/ASP Kernel 00003 * Toyohashi Open Platform for Embedded Real-Time Systems/ 00004 * Advanced Standard Profile Kernel 00005 * 00006 * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory 00007 * Toyohashi Univ. of Technology, JAPAN 00008 * Copyright (C) 2005-2008 by Embedded and Real-Time Systems Laboratory 00009 * Graduate School of Information Science, Nagoya Univ., JAPAN 00010 * 00011 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 00012 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 00013 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 00014 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 00015 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 00016 * スコード中に含まれていること. 00017 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 00018 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 00019 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 00020 * の無保証規定を掲載すること. 00021 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 00022 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 00023 * と. 00024 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 00025 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 00026 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 00027 * 報告すること. 00028 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 00029 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 00030 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 00031 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 00032 * 免責すること. 00033 * 00034 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 00035 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 00036 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 00037 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 00038 * の責任を負わない. 00039 * 00040 * @(#) $Id: dve68k.h 817 2008-03-18 01:33:12Z hiro $ 00041 */ 00042 00043 /* 00044 * DVE-68K/40 CPUボードのハードウェア資源の定義 00045 */ 00046 00047 #ifndef TOPPERS_DVE68K_H 00048 #define TOPPERS_DVE68K_H 00049 00050 #include <sil.h> 00051 00052 /* 00053 * 割込み番号(intno)の定義 00054 */ 00055 #define TINTNO_ACF 1U /* ACFAIL割込み */ 00056 #define TINTNO_ABT 2U /* アボート割込み */ 00057 #define TINTNO_SF 3U /* SYSFAIL割込み */ 00058 #define TINTNO_BER 4U /* バスエラー割込み */ 00059 #define TINTNO_IAK 5U /* IAK割込み */ 00060 #define TINTNO_SRQ 6U /* SRQ割込み */ 00061 #define TINTNO_SAK 7U /* SAK割込み */ 00062 #define TINTNO_GP7 9U /* GP7割込み */ 00063 #define TINTNO_DMA 10U /* DMA割込み */ 00064 #define TINTNO_TT1 11U /* タイマ1割込み */ 00065 #define TINTNO_TT0 12U /* タイマ0割込み */ 00066 #define TINTNO_GP3 13U /* フラッシュメモリ割込み */ 00067 #define TINTNO_GP2 14U /* SCSI割込み */ 00068 #define TINTNO_GP1 15U /* Ethernet割込み */ 00069 #define TINTNO_GP0 16U /* シリアルI/O割込み */ 00070 #define TINTNO_SWI7 17U /* ソフトウェア割込み7 */ 00071 #define TINTNO_SWI6 18U /* ソフトウェア割込み6 */ 00072 #define TINTNO_SWI5 19U /* ソフトウェア割込み5 */ 00073 #define TINTNO_SWI4 20U /* ソフトウェア割込み4 */ 00074 #define TINTNO_SWI3 21U /* ソフトウェア割込み3 */ 00075 #define TINTNO_SWI2 22U /* ソフトウェア割込み2 */ 00076 #define TINTNO_SWI1 23U /* ソフトウェア割込み1 */ 00077 #define TINTNO_SWI0 24U /* ソフトウェア割込み0 */ 00078 #define TINTNO_VM7 25U /* VME割込み7 */ 00079 #define TINTNO_VM6 26U /* VME割込み6 */ 00080 #define TINTNO_VM5 27U /* VME割込み5 */ 00081 #define TINTNO_VM4 28U /* VME割込み4 */ 00082 #define TINTNO_VM3 29U /* VME割込み3 */ 00083 #define TINTNO_VM2 30U /* VME割込み2 */ 00084 #define TINTNO_VM1 31U /* VME割込み1 */ 00085 00086 /* 00087 * 割込みベクトルの設定値の定義 00088 */ 00089 #define TVEC_G0I 0x40U /* グループ0割込みベクトル */ 00090 #define TVEC_G1I 0x48U /* グループ1割込みベクトル */ 00091 #define TVEC_SWI 0x50U /* ソフトウェア割込みベクトル */ 00092 #define TVEC_SPRI 0x40U /* スプリアス割込みベクトル */ 00093 00094 /* 00095 * 割込みハンドラ番号(inhno)の定義 00096 */ 00097 #define TINHNO_ACF 0x47U /* ACFAIL割込み */ 00098 #define TINHNO_ABT 0x46U /* アボート割込み */ 00099 #define TINHNO_SF 0x45U /* SYSFAIL割込み */ 00100 #define TINHNO_BER 0x44U /* バスエラー割込み */ 00101 #define TINHNO_IAK 0x43U /* IAK割込み */ 00102 #define TINHNO_SRQ 0x42U /* SRQ割込み */ 00103 #define TINHNO_SAK 0x41U /* SAK割込み */ 00104 #define TINHNO_GP7 0x4fU /* GP7割込み */ 00105 #define TINHNO_DMA 0x4eU /* DMA割込み */ 00106 #define TINHNO_TT1 0x4dU /* タイマ1割込み */ 00107 #define TINHNO_TT0 0x4cU /* タイマ0割込み */ 00108 #define TINHNO_GP3 0x4bU /* フラッシュメモリ割込み */ 00109 #define TINHNO_GP2 0x4aU /* SCSI割込み */ 00110 #define TINHNO_GP1 0x49U /* Ethernet割込み */ 00111 #define TINHNO_GP0 0x48U /* シリアルI/O割込み */ 00112 #define TINHNO_SWI7 0x57U /* ソフトウェア割込み7 */ 00113 #define TINHNO_SWI6 0x56U /* ソフトウェア割込み6 */ 00114 #define TINHNO_SWI5 0x55U /* ソフトウェア割込み5 */ 00115 #define TINHNO_SWI4 0x54U /* ソフトウェア割込み4 */ 00116 #define TINHNO_SWI3 0x53U /* ソフトウェア割込み3 */ 00117 #define TINHNO_SWI2 0x52U /* ソフトウェア割込み2 */ 00118 #define TINHNO_SWI1 0x51U /* ソフトウェア割込み1 */ 00119 #define TINHNO_SWI0 0x50U /* ソフトウェア割込み0 */ 00120 #define TINHNO_SPRI 0x40U /* スプリアス割込み */ 00121 00122 /* 00123 * CPUボード上のレジスタ 00124 */ 00125 #define TADR_BOARD_REG0 0xfff48000 00126 #define TADR_BOARD_REG1 0xfff48004 00127 #define TADR_BOARD_REG2 0xfff48008 00128 00129 /* 00130 * DGA-001のレジスタのアドレス 00131 */ 00132 #define TADR_DGA_CSR0 0xfff44000 00133 #define TADR_DGA_CSR1 0xfff44004 00134 #define TADR_DGA_CSR3 0xfff4400c 00135 #define TADR_DGA_CSR4 0xfff44010 00136 #define TADR_DGA_CSR5 0xfff44014 00137 #define TADR_DGA_CSR12 0xfff44030 00138 #define TADR_DGA_CSR13 0xfff44034 00139 #define TADR_DGA_CSR14 0xfff44038 00140 #define TADR_DGA_CSR15 0xfff4403c 00141 #define TADR_DGA_CSR18 0xfff44048 00142 #define TADR_DGA_CSR19 0xfff4404c 00143 #define TADR_DGA_CSR20 0xfff44050 00144 #define TADR_DGA_CSR21 0xfff44054 00145 #define TADR_DGA_CSR23 0xfff4405c 00146 #define TADR_DGA_CSR24 0xfff44060 00147 #define TADR_DGA_IFR0 0xfff44070 00148 #define TADR_DGA_IFR3 0xfff4407c 00149 00150 /* 00151 * DGA-001の割込み優先度設定のための定義 00152 */ 00153 #define TIRQ_NMI (-7) /* ノンマスカブル割込み */ 00154 #define TIRQ_LEVEL6 (-6) /* 割込みレベル6 */ 00155 #define TIRQ_LEVEL5 (-5) /* 割込みレベル5 */ 00156 #define TIRQ_LEVEL4 (-4) /* 割込みレベル4 */ 00157 #define TIRQ_LEVEL3 (-3) /* 割込みレベル3 */ 00158 #define TIRQ_LEVEL2 (-2) /* 割込みレベル2 */ 00159 #define TIRQ_LEVEL1 (-1) /* 割込みレベル1 */ 00160 00161 /* 00162 * DGAへのアクセス関数 00163 */ 00164 #define dga_rew_reg(addr) sil_rew_mem(addr) 00165 #define dga_wrw_reg(addr, val) sil_wrw_mem(addr, val) 00166 00167 /* 00168 * DGAのレジスタへのアクセス関数 00169 */ 00170 #ifndef TOPPERS_MACRO_ONLY 00171 00172 Inline uint32_t 00173 dga_read(void *addr) 00174 { 00175 return((uint32_t) dga_rew_reg(addr)); 00176 } 00177 00178 Inline void 00179 dga_write(void *addr, uint32_t val) 00180 { 00181 dga_wrw_reg(addr, val); 00182 } 00183 00184 Inline void 00185 dga_bit_or(void *addr, uint32_t bitpat) 00186 { 00187 dga_write(addr, dga_read(addr) | bitpat); 00188 } 00189 00190 Inline void 00191 dga_bit_and(void *addr, uint32_t bitpat) 00192 { 00193 dga_write(addr, dga_read(addr) & bitpat); 00194 } 00195 00196 Inline void 00197 dga_set_ilv(void *addr, uint_t shift, uint_t level) 00198 { 00199 dga_write(addr, (dga_read(addr) & ~(0x07 << shift)) | (level << shift)); 00200 } 00201 00202 #endif /* TOPPERS_MACRO_ONLY */ 00203 00204 /* 00205 * μPD72001(MPSC)のレジスタのアドレス 00206 */ 00207 #define TADR_UPD72001_DATAA 0xfff45003U 00208 #define TADR_UPD72001_CTRLA 0xfff45007U 00209 #define TADR_UPD72001_DATAB 0xfff4500bU 00210 #define TADR_UPD72001_CTRLB 0xfff4500fU 00211 00212 /* 00213 * μPD72001へのアクセス関数 00214 */ 00215 #define upd72001_reb_reg(addr) sil_reb_mem(addr) 00216 #define upd72001_wrb_reg(addr, val) sil_wrb_mem(addr, val) 00217 00218 /* 00219 * 開発環境依存の処理 00220 */ 00221 #ifndef TOPPERS_MACRO_ONLY 00222 #ifdef TOPPERS_GDB_STUB /* GDBスタブ */ 00223 00224 Inline void 00225 dve68k_exit(void) 00226 { 00227 Asm("trap #2"); 00228 } 00229 00230 Inline void 00231 dve68k_putc(char_t c) 00232 { 00233 Asm("move.l %0, %%d1; trap #3" 00234 : /* no output */ 00235 : "g"(c) 00236 : "d0", "d1", "d2", "d6", "d7"); 00237 } 00238 00239 #else /* TOPPERS_GDB_STUB */ /* その他の開発環境 */ 00240 00241 extern void dve68k_exit(void) NoReturn; 00242 extern void dve68k_putc(char_t c); 00243 00244 #endif /* TOPPERS_GDB_STUB */ 00245 #endif /* TOPPERS_MACRO_ONLY */ 00246 #endif /* TOPPERS_DVE68K_H */
Copyright © 2008 by Kijineko Inc.