📄 sh3.h
字号:
/* * TOPPERS/JSP Kernel * Toyohashi Open Platform for Embedded Real-Time Systems/ * Just Standard Profile Kernel * * Copyright (C) 2000 by Embedded and Real-Time Systems Laboratory * Toyohashi Univ. of Technology, JAPAN * * 惧淡螟侯涪荚は·Free Software Foundation によって给山されている * GNU General Public License の Version 2 に淡揭されている掘凤か·笆 * 布の(1)×(4)の掘凤を塔たす眷圭に嘎り·塑ソフトウェア∈塑ソフトウェ * アを猖恃したものを崔むˉ笆布票じ∷を蝗脱ˇ剩澜ˇ猖恃ˇ浩芹邵∈笆布· * 网脱と钙ぶ∷することを痰浸で钓满するˉ * (1) 塑ソフトウェアをソ〖スコ〖ドの妨で网脱する眷圭には·惧淡の螟侯 * 涪山绩·この网脱掘凤および布淡の痰瘦沮惮年が·そのままの妨でソ〖 * スコ〖ド面に崔まれていることˉ * (2) 塑ソフトウェアを浩网脱材墙なバイナリコ〖ド∈リロケ〖タブルオブ * ジェクトファイルやライブラリなど∷の妨で网脱する眷圭には·网脱 * に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟侯涪山绩· * この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ * (3) 塑ソフトウェアを浩网脱稍材墙なバイナリコ〖ドの妨または怠达に寥 * み哈んだ妨で网脱する眷圭には·肌のいずれかの掘凤を塔たすことˉ * (a) 网脱に燃うドキュメント∈网脱荚マニュアルなど∷に·惧淡の螟侯 * 涪山绩·この网脱掘凤および布淡の痰瘦沮惮年を非很することˉ * (b) 网脱の妨轮を·侍に年める数恕によって·惧淡螟侯涪荚に鼠桂する * ことˉ * (4) 塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じるいかなる禄 * 巢からも·惧淡螟侯涪荚を倘勒することˉ * * 塑ソフトウェアは·痰瘦沮で捏丁されているものであるˉ惧淡螟侯涪荚は· * 塑ソフトウェアに簇して·その努脱材墙拉も崔めて·いかなる瘦沮も乖わ * ないˉまた·塑ソフトウェアの网脱により木儡弄または粗儡弄に栏じたい * かなる禄巢に簇しても·その勒扦を砷わないˉ * * @(#) $Id: sh3.h,v 1.4 2002/04/05 07:43:51 honda Exp $ */#ifndef _SH3_H_#define _SH3_H_/* * SH3(SH7709A,SH7709,SH7708)の柒婶レジスタ年盗 */typedef unsigned char byte;typedef volatile byte IOREG; typedef unsigned short word;typedef volatile word HIOREG;typedef volatile int LIOREG;/* * 毋嘲イベントレジスタ */#define TRA 0xFFFFFFD0 #define EXPEVT 0xFFFFFFD4 #define INTEVT 0xFFFFFFD8 #define INTEVT2 0xA4000000 /* * バスステ〖トコントロ〖ラ簇息 */#define RFCR ((HIOREG *)(0xffffff74)) #define RFCR_CLEAR 0xa400/* * 充り哈みによってINTEVT2レジスタに肋年される猛 */#define TMU0_INTEVT 0x400#define IRQ0_INTEVT 0x600#define SCI_RXI_INTEVT 0x500#define SCI_TXI_INTEVT 0x520#define SCI_BRI_INTEVT 0x4ed#define SCI1_RXI_INTEVT 0x8a0#define SCI1_TXI_INTEVT 0x8e0#define SCI1_BRI_INTEVT 0x8c0#define SCIF_RXI_INTEVT 0x920#define SCIF_TXI_INTEVT 0x960#define SCIF_BRI_INTEVT 0x940 /* * 充り哈みコントロ〖ラ〖レジスタ〖 */#define ICR0 ((HIOREG *)(0xfffffee0)) #define ICR1 ((HIOREG *)(0xa4000010)) #define ICR2 ((HIOREG *)(0xa4000012)) #define PINTER ((HIOREG *)(0xa4000014)) #define IPRA ((HIOREG *)0xfffffee2) #define IPRB ((HIOREG *)0xfffffee4) #define IPRC ((HIOREG *)(0xa4000016)) #define IPRD ((HIOREG *)(0xa4000018)) #define IPRE ((HIOREG *)(0xa400001a)) #define IRR0 ((IOREG *)(0xa4000004)) #define IRR1 ((IOREG *)(0xa4000006)) #define IRR2 ((IOREG *)(0xa4000008)) /* * タイマ〖レジスタ */typedef struct{ IOREG TOCR; IOREG dummy1; IOREG TSTR; IOREG dummy2; LIOREG TCOR0; LIOREG TCNT0; HIOREG TCR0; LIOREG TCOR1; LIOREG TCNT1; HIOREG TCR1; LIOREG TCOR2; LIOREG TCNT2; HIOREG TCR2;} tmu;#define TMU (*(volatile tmu *)0xfffffe90) #define TMU_STR0 0x01#define TMU_STR1 0x02#define TMU_STR2 0x04#define TCR_UNF 0x0100 /* * シリアルコミュニケ〖ションインタ〖フェ〖ス(SCI) */typedef struct{ IOREG SCSMR; IOREG dummy1; IOREG SCBRR; IOREG dummy2; IOREG SCSCR; IOREG dummy3; IOREG SCTDR; IOREG dummy4; IOREG SCSSR; IOREG dummy5; IOREG SCRDR;} sci;#define SCI (*(volatile sci *)0xfffffe80)/* * シリアルコミュニケ〖ションインタ〖フェ〖ス(SCI)の * ポ〖トSCコントロ〖ル/デ〖タレジスタ * SH7709第びSH7709Aのみ */#define SCPCR ((IOREG *)(0xa4000136)) #define SCPDR ((HIOREG *)(0xa4000116)) /* * シリアルコミュニケ〖ションインタ〖フェ〖ス(SCI)の * シリアルポ〖トレジスタ * SH7708のみ */#define SCSPTR ((HIOREG *)(0xffffff7c)) #define SCSMR_CHR 0x0040#define SCSMR_PE 0x0020#define SCSMR_OE 0x0010#define SCSMR_STOP 0x0008#define SCSMR_CKS1 0x0002#define SCSMR_CKS0 0x0001#define SCSCR_TIE 0x0080#define SCSCR_RIE 0x0040#define SCSCR_TE 0x0020#define SCSCR_RE 0x0010#define SCSCR_CKE1 0x0002#define SCSCR_CKE0 0x0001#define SCSSR_TDRE 0x80#define SCSSR_RDRF 0x40#define SCSSR_ORER 0x20#define SCSSR_FER 0x10#define SCSSR_PER 0x08#define SCSSR_TEND 0x04#define SCSSR_MPB 0x02#define SCSSR_MPBT 0x01/* * FIFO烧きシリアルコミュニケ〖ションインタ〖フェ〖ス(SCIF)レジスタ * SH7709第びSH7709Aのみ */typedef struct{ IOREG SCSMR2; IOREG dummy1; IOREG SCBRR2; IOREG dummy2; IOREG SCSCR2; IOREG dummy3; IOREG SCFTDR2; IOREG dummy4; HIOREG SCSSR2; IOREG SCFRDR2; IOREG dummy5; IOREG SCFCR2; IOREG dummy6; HIOREG SCFDR2;} scif;#define SCIF (*(volatile scif *)0xa4000150)#define SCSMR2_CHR 0x0040#define SCSMR2_PE 0x0020#define SCSMR2_OE 0x0010#define SCSMR2_STOP 0x0008#define SCSMR2_CKS1 0x0002#define SCSMR2_CKS0 0x0001#define SCSCR2_TIE 0x0080#define SCSCR2_RIE 0x0040#define SCSCR2_TE 0x0020#define SCSCR2_RE 0x0010#define SCSCR2_CKE1 0x0002#define SCSCR2_CKE0 0x0001#define SCSSR2_ER 0x0080#define SCSSR2_TEND 0x0040#define SCSSR2_TDFE 0x0020#define SCSSR2_BRK 0x0010#define SCSSR2_FER 0x0008#define SCSSR2_PER 0x0004#define SCSSR2_RDF 0x0002#define SCSSR2_DR 0x0001#define SCFCR2_RTRG1 0x0080#define SCFCR2_RTRG0 0x0040#define SCFCR2_TTRG1 0x0020#define SCFCR2_TTRG0 0x0010#define SCFCR2_MCE 0x0008#define SCFCR2_TFRST 0x0004#define SCFCR2_RFRST 0x0002#define SCFCR2_LOOP 0x0001/* * IrDA (SCI1)レジスタ * SH7709第びSH7709Aのみ */typedef struct{ IOREG SCSMR1; IOREG dummy1; IOREG SCBRR1; IOREG dummy2; IOREG SCSCR1; IOREG dummy3; IOREG SCFTDR1; IOREG dummy4; HIOREG SCSSR1; IOREG SCFRDR1; IOREG dummy5; IOREG SCFCR1; IOREG dummy6; HIOREG SCFDR1;} sci1;#define SCI1 (*(volatile sci1 *)0xa4000140)#define SCSMR1_IRMOD 0x0080#define SCSMR1_CHR 0x0040#define SCSMR1_PE 0x0020#define SCSMR1_OE 0x0010#define SCSMR1_STOP 0x0008#define SCSMR1_CKS1 0x0002#define SCSMR1_CKS0 0x0001#define SCSCR1_TIE 0x0080#define SCSCR1_RIE 0x0040#define SCSCR1_TE 0x0020#define SCSCR1_RE 0x0010#define SCSCR1_CKE1 0x0002#define SCSCR1_CKE0 0x0001#define SCSSR1_ER 0x0080#define SCSSR1_TEND 0x0040#define SCSSR1_TDFE 0x0020#define SCSSR1_BRK 0x0010#define SCSSR1_FER 0x0008#define SCSSR1_PER 0x0004#define SCSSR1_RDF 0x0002#define SCSSR1_DR 0x0001#define SCFCR1_RTRG1 0x0080#define SCFCR1_RTRG0 0x0040#define SCFCR1_TTRG1 0x0020#define SCFCR1_TTRG0 0x0010#define SCFCR1_MCE 0x0008#define SCFCR1_TFRST 0x0004#define SCFCR1_RFRST 0x0002#define SCFCR1_LOOP 0x0001/* * キャッシュ扩告レジスタ */#define CCR ((LIOREG *)0xffffffec) /* * gdb stubによる叫蜗 */Inline intstub_putc(int c){ Asm("mov #0x00,r0; mov %0,r4; trapa #0x3f" : /* no output */ : "r"(c) : "r0","r4"); return(c);}/* * SH7709A第びSH7709のSCIFへのポ〖リングでの叫蜗 */Inline intscif_putc(int c){ /* Wait TDRD = 1 */ while((SCIF.SCSSR2 & SCSSR2_TDFE)==0); SCIF.SCFTDR2=c; SCIF.SCSSR2 = SCIF.SCSSR2 & ~SCSSR2_TDFE; return(c);} /* * SCIによる叫蜗 */Inline intsci_putc(int c){ /* Wait TDRD = 1 */ while((SCI.SCSSR & SCSSR_TDRE)==0); SCI.SCTDR=c; SCI.SCSSR = SCI.SCSSR & ~SCSSR_TDRE; return(c);}#endif /* _SH3_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -