📄 vr4131_icu.h
字号:
/* * TOPPERS/JSP Kernel * Toyohashi Open Platform for Embedded Real-Time Systems/ * Just Standard Profile Kernel * * Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory * Toyohashi Univ. of Technology, JAPAN * Copyright (C) 2000-2003 by Industrial Technology Institute, * Miyagi Prefectural Government, JAPAN * * 惧淡螟侯涪荚は·笆布の (1)×(4) の掘凤か·Free Software Foundation * によって给山されている GNU General Public License の Version 2 に淡 * 揭されている掘凤を塔たす眷圭に嘎り·塑ソフトウェア∈塑ソフトウェア * を猖恃したものを崔むˉ笆布票じ∷を蝗脱ˇ剩澜ˇ猖恃ˇ浩芹邵∈笆布· * 网脱と钙ぶ∷することを痰浸で钓满するˉ * (1) 塑ソフトウェアをソ〖スコ〖ドの妨で网脱する眷圭には·惧淡の螟侯 * 涪山绩·この网脱掘凤および布淡の痰瘦沮惮年が·そのままの妨でソ〖 * スコ〖ド面に崔まれていることˉ * (2) 塑ソフトウェアを·ライブラリ妨及など·戮のソフトウェア倡券に蝗 * 脱できる妨で浩芹邵する眷圭には·浩芹邵に燃うドキュメント∈网脱 * 荚マニュアルなど∷に·惧淡の螟侯涪山绩·この网脱掘凤および布淡 * の痰瘦沮惮年を非很することˉ * (3) 塑ソフトウェアを·怠达に寥み哈むなど·戮のソフトウェア倡券に蝗 * 脱できない妨で浩芹邵する眷圭には·肌のいずれかの掘凤を塔たすこ * とˉ * (a) 浩芹邵に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟 * 侯涪山绩·この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ * (b) 浩芹邵の妨轮を·侍に年める数恕によって·TOPPERSプロジェクトに * 鼠桂することˉ * (4) 塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じるいかなる禄 * 巢からも·惧淡螟侯涪荚およびTOPPERSプロジェクトを倘勒することˉ * * 塑ソフトウェアは·痰瘦沮で捏丁されているものであるˉ惧淡螟侯涪荚お * よびTOPPERSプロジェクトは·塑ソフトウェアに簇して·その努脱材墙拉も * 崔めて·いかなる瘦沮も乖わないˉまた·塑ソフトウェアの网脱により木 * 儡弄または粗儡弄に栏じたいかなる禄巢に簇しても·その勒扦を砷わないˉ */#ifndef _VR4131_ICU_H_#define _VR4131_ICU_H_/* * 充哈みコントロ〖ラ(ICU)簇犯の年盗 *//* 充哈み戎规の年盗∈0-7戎は mips3.h で蝗脱。8戎笆惯を回年する。∷ *//* SYSINT1REG */#define INTNO_BAT 8 /* バッテリ充哈み */#define INTNO_POWER 9 /* パワ〖スイッチ充哈み */#define INTNO_RTCL1 10 /* RTCLong1充哈み */#define INTNO_ETIME 11 /* ElipsedTimeタイマ充哈み */#define INTNO_GIU 12 /* GIU充哈み */#define INTNO_SIU 13 /* SIU充哈み */#define INTNO_SOFTINT 14 /* ソフトウェア充哈み */#define INTNO_CLKRUN 15 /* CLKRUN充哈み *//* SYSINT2REG */#define INTNO_RTCL2 16 /* RTCLong2充哈み */#define INTNO_LED 17 /* LED充哈み */#define INTNO_TCLK 18 /* TClockカウンタ充哈み */#define INTNO_FIR 19 /* FIR充哈み */#define INTNO_DSIU 20 /* DSIU充哈み */#define INTNO_PCI 21 /* PCI充哈み */#define INTNO_SCU 22 /* SCU充哈み */#define INTNO_CSI 23 /* CSI充哈み */#define INTNO_BCU 24 /* BCU充哈み *//* 充哈みコントロ〖ラが瓷妄する充哈みの塑眶 */#define TMAX_ICU_INTNO 17u/* 充哈みコントロ〖ラのレジスタのアドレス年盗 *//* 笆布の xxx_asm、xxx_offset は、アセンブラでの网脱羹け。 */#define ICU_BASE_ADDR 0x0f000000#define ICU_BASE_ADDR_asm ASM_SIL( ICU_BASE_ADDR )#define SYSINT1_offset 0x80#define MSYSINT1_offset 0x8c#define MDSIUINT_offset 0x96#define SYSINT2_offset 0xa0#define MSYSINT2_offset 0xa6#define MSYSINT1REG (ICU_BASE_ADDR + MSYSINT1_offset) /* システム充哈みマスクレジスタ1(レベル1) */#define MDSIUINTREG (ICU_BASE_ADDR + MDSIUINT_offset) /* DSIU充哈みマスクレジスタ(レベル2) */#define MSYSINT2REG (ICU_BASE_ADDR + MSYSINT2_offset) /* システム充哈みマスクレジスタ2(レベル1) *//* 充哈み妥傍ビットパタ〖ン (布淡、アセンブラ婶尸でも网脱している。) *//* MSYSINT1REG / SYSINT1REG 簇犯 */#define CLKRUNINTR BIT12 /* CLKRUN 充哈み */#define SOFTINTR BIT11 /* ソフトウェア充哈み */#define SIUINTR BIT9 /* SIU 充哈み */#define GIUINTR BIT8 /* GIU(布疤) 充哈み */#define ETIMERINTR BIT3 /* ElapsedTimeタイマ 充哈み */#define RTCL1INTR BIT2 /* RTCLong1タイマ 充哈み */#define POWERINTR BIT1 /* パワ〖スイッチ充哈み */#define BATINTR BIT0 /* バッテリ充哈み *//* MSYSINT2REG / SYSINT2REG 簇犯 */#define BCUINTR BIT9 /* BCU 充哈み */#define CSIINTR BIT8 /* CSI 充哈み */#define SCUINTR BIT7 /* SCU 充哈み */#define PCIINTR BIT6 /* PCI 充哈み */#define DSIUINTR BIT5 /* DSIU 充哈み */#define FIRINTR BIT4 /* FIR 充哈み */#define TCLKINTR BIT3 /* VTClockカウンタ 充哈み */#define LEDINTR BIT1 /* LED 充哈み */#define RTCL2INTR BIT0 /* RTCLong2 充哈み *//* MDSIUINTREG 簇犯 */#define INTDSIU BIT11 /* DSIUの恃步充哈み钓材 *//* * 充哈みコントロ〖ラの充哈みマスク簇犯 *//* 菇陇挛ICU_IPM柒のオフセットを滇めるためのマクロ∈makeoffset.cで脱いる∷ なお、このマクロで年盗した猛は、泼に网脱していない。*/#define OFFSET_DEF_ICU_IPM OFFSET_DEF(ICU_IPM, msysint2)/* MSYSINT1,2に肋年してはいけないビット */#define NG_BIT_MSYSINT1 (BIT4 | BIT5 | BIT6 | BIT7 | BIT10 | BIT13 |BIT14 | BIT15)#define NG_BIT_MSYSINT2 (BIT2 | BIT10 | BIT11 | BIT12 | BIT13 | BIT14 | BIT15)/* 充哈みコントロ〖ラに肋年する充哈みマスクのチェック */#define CHECK_ICU_IPM(ipm) \ CHECK_PAR(!(ipm.msysint1 & NG_BIT_MSYSINT1)); \ CHECK_PAR(!(ipm.msysint2 & NG_BIT_MSYSINT2))#ifndef _MACRO_ONLY/* 充哈みコントロ〖ラに滦する充哈みマスクの导击テ〖ブル */extern ICU_IPM icu_intmask_table[];/* 充哈みコントロ〖ラのintmaskテ〖ブルの肋年 */Inline void icu_set_ilv(INTNO intno, ICU_IPM *ipm) { /* CHECK_ICU_IPM(ipm) は、惧疤ル〖チンで悸乖貉み */ icu_intmask_table[intno].msysint1 = ipm->msysint1; icu_intmask_table[intno].msysint2 = ipm->msysint2;}/* 充り哈みコントロ〖ラのマスク肋年 */Inline void icu_set_ipm(ICU_IPM *ipm) { /* CHECK_ICU_IPM(ipm) は、惧疤ル〖チンで悸乖貉み */ vr4131_wrh_mem( (VP) MSYSINT1REG, ipm->msysint1 ); vr4131_wrh_mem( (VP) MSYSINT2REG, ipm->msysint2 );}/* 充り哈みコントロ〖ラのマスク艰评 */Inline void icu_get_ipm(ICU_IPM *ipm) { ipm->msysint1 = vr4131_reh_mem( (VP) MSYSINT1REG ); ipm->msysint2 = vr4131_reh_mem( (VP) MSYSINT2REG );}#endif /* _MACRO_ONLY *//*============================================================================*//* アセンブラ借妄簇犯 *//* 充哈み钓材ビットの略闰と牲傅 *//* 充哈みコントロ〖ラICUのIPMをスタックに瘦赂 */#define PUSH_ICU_IPM \ li t1, ICU_BASE_ADDR_asm; \ addi sp, sp, -2*2; \ lh t3, MSYSINT1_offset(t1); /* t3 = MSYSINT1REG */ \ lh t4, MSYSINT2_offset(t1); /* t4 = MSYSINT2REG */ \ sh t3, (sp); \ sh t4, 2(sp)/* 充哈みコントロ〖ラICUのIPMをスタックから牲傅 */#define POP_ICU_IPM \ li t1, ICU_BASE_ADDR_asm; \ lw t3, (sp); /* t3 = MSYSINT2REG:MSYSINT1REG */ \ /* 庙罢¨リトルエンディアン巴赂 */ \ sh t3, MSYSINT1_offset(t1); /* MSYSINT1REG = t3の布疤2バイト*/ \ srl t4, t3, 16; \ sh t4, MSYSINT2_offset(t1); /* MSYSINT2REG = t3の惧疤2バイト*/ \ addi sp, sp, 2*2/* 充哈みコントロ〖ラICUのIPMを肋年 *//* t0に充哈み妥傍戎规が掐った觉轮で钙ばれる *//* t0の柒推を蝉してはいけない *//* t1に充哈み妥滇クリアの年眶が掐っているので撬蝉してはならない。 */#define SET_ICU_IPM \ la t4, icu_intmask_table; /* デ〖タテ〖ブルの黎片アドレス */ \ sll t2, t0, 2; /* オフセット♂充哈み妥傍戎规∵4擒 */ \ li t3, ICU_BASE_ADDR_asm; \ add t4, t4, t2; /* 黎片アドレス≤オフセット */ \ lw t5, (t4); /* t5 = MSYSINT2REG:MSYSINT1REG */ \ /* 庙罢¨リトルエンディアン巴赂 */ \ sh t5, MSYSINT1_offset(t3); /* MSYSINT1REG = t5の布疤2バイト */ \ srl t6, t5, 16; \ sh t6, MSYSINT2_offset(t3) /* MSYSINT2REG = t5の惧疤2バイト *//* デバイス叹から改侍借妄を鸥倡するマクロ 充哈み妥傍を t0 に掐れて proc_END に若ぶ */#define MAKE_PROC(device) \proc_##device: \ li t0, INTNO_##device; \ j proc_END; \
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -