📄 dve68k.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: dve68k.h,v 1.3 2002/04/10 11:08:33 hiro Exp $ *//* * DVE68K/40 CPUボ〖ドのハ〖ドウェア获富の年盗 */#ifndef _DVE68K_H_#define _DVE68K_H_typedef unsigned char byte;typedef volatile byte IOREG; /* I/Oレジスタの房 */typedef volatile int LIOREG;/* * 你庐の I/Oデバイスを拎侯するための簇眶 */Inline voidcpu_wait_io(void){ Asm("nop"); Asm("nop"); Asm("nop"); Asm("nop");}Inline byteio_read(IOREG *addr){ byte val; val = *addr; cpu_wait_io(); return(val);}Inline voidio_write(IOREG *addr, byte val){ *addr = val; cpu_wait_io();}/* * CPUボ〖ド惧のレジスタ */#define BOARD_REG0 ((LIOREG *) 0xfff48000)#define BOARD_REG1 ((LIOREG *) 0xfff48004)#define BOARD_REG2 ((LIOREG *) 0xfff48008)/* * DGA-001 のレジスタ */#define DGA_CSR0_1 ((IOREG *) 0xfff44001)#define DGA_CSR1 ((LIOREG *) 0xfff44004)#define DGA_CSR3 ((LIOREG *) 0xfff4400c)#define DGA_CSR4 ((LIOREG *) 0xfff44010)#define DGA_CSR5 ((LIOREG *) 0xfff44014)#define DGA_CSR12 ((LIOREG *) 0xfff44030)#define DGA_CSR13 ((LIOREG *) 0xfff44034)#define DGA_CSR19 ((LIOREG *) 0xfff4404c)#define DGA_CSR20 ((LIOREG *) 0xfff44050)#define DGA_CSR21 ((LIOREG *) 0xfff44054)#define DGA_CSR23 ((LIOREG *) 0xfff4405c)#define DGA_CSR24 ((LIOREG *) 0xfff44060)#define DGA_CSR25 ((LIOREG *) 0xfff44064)#define DGA_IFR0 ((LIOREG *) 0xfff44070)#define DGA_IFR3 ((LIOREG *) 0xfff4407c)/* * DGA の充哈みレベル肋年のための年盗 */#define IRQ_NMI (0x7) /* ノンマスカブル充哈み */#define IRQ_LEVEL6 (0x6) /* 充哈みレベル6 */#define IRQ_LEVEL5 (0x5) /* 充哈みレベル5 */#define IRQ_LEVEL4 (0x4) /* 充哈みレベル4 */#define IRQ_LEVEL3 (0x3) /* 充哈みレベル3 */#define IRQ_LEVEL2 (0x2) /* 充哈みレベル2 */#define IRQ_LEVEL1 (0x1) /* 充哈みレベル1 */#define ABTIL_BIT (24) /* アボ〖ト充哈み */#define SQRIL_BIT (8) /* SRQ 充哈み */#define TT0IL_BIT (16) /* タイマ0 充哈み */#define GP0IL_BIT (0) /* シリアルI/O 充哈み */Inline voiddga_set_ilv(LIOREG *addr, int shift, int val){ *addr = (*addr & ~(0x07 << shift)) | (val << shift);} /* * 充哈みベクトルの年盗 */#define G0I_VEC (0x40) /* グル〖プ0 充哈みベクトル */#define G1I_VEC (0x48) /* グル〖プ1 充哈みベクトル */#define SWI_VEC (0X50) /* ソフトウェア充哈みベクトル */#define SPRI_VEC (0x40) /* スプリアス充哈みベクトル */#define ABT_VEC (G0I_VEC + 6) /* アボ〖ト充哈みベクトル */#define SQR_VEC (G0I_VEC + 2) /* SQR 充哈みベクトル */#define TT0_VEC (G1I_VEC + 4) /* タイマ0 充哈みベクトル */#define GP0_VEC (G1I_VEC + 0) /* シリアルI/O 充哈みベクトル *//* * 充哈み扩告ビットの年盗 */#define ABT_BIT (0x40000000) /* アボ〖ト充哈みビット */#define SQR_BIT (0x04000000) /* SQR 充哈みビット */#define TT0_BIT (0x00100000) /* タイマ0 充哈みビット */#define GP0_BIT (0x00010000) /* シリアルI/O 充哈みビット *//* * MPSC (μPD72001-11) のレジスタ */#define MPSC_DATAA ((IOREG *) 0xfff45003)#define MPSC_CNTRLA ((IOREG *) 0xfff45007)#define MPSC_DATAB ((IOREG *) 0xfff4500b)#define MPSC_CNTRLB ((IOREG *) 0xfff4500f)#define MPSC_CR0 0x00 /* MPSC コントロ〖ルレジスタ */#define MPSC_CR1 0x01#define MPSC_CR2 0x02#define MPSC_CR3 0x03#define MPSC_CR4 0x04#define MPSC_CR5 0x05#define MPSC_CR10 0x0a#define MPSC_CR12 0x0c#define MPSC_CR14 0x0e#define MPSC_CR15 0x0f#define MPSC_SR0 0x00 /* MPSC ステ〖タスレジスタ */Inline bytempsc_read(IOREG *addr, int reg){ io_write(addr, reg); return(io_read(addr));}Inline voidmpsc_write(IOREG *addr, int reg, int val){ io_write(addr, reg); io_write(addr, val);}Inline voidmpsc_write_brg(IOREG *addr, int reg, int val, int brg2, int brg1){ io_write(addr, reg); io_write(addr, val); io_write(addr, brg2); io_write(addr, brg1); (void) io_read(addr); /* ダミ〖リ〖ド */}/* * モニタ钙び叫しル〖チン */Inline voiddve68k_exit(void){ Asm("clr.l %%d0; trap #3" : /* no output */ : /* no input */ : "d0", "d1", "d2", "d6", "d7");}Inline intdve68k_getc(void){ int c; Asm("moveq.l #3, %%d0; trap #3; move.l %%d0, %0" : "=g"(c) : /* no input */ : "d0", "d1", "d2", "d6", "d7"); return(c);}Inline intdve68k_putc(int c){ Asm("moveq.l #5, %%d0; move.l %0, %%d1; trap #3" : /* no output */ : "g"(c) : "d0", "d1", "d2", "d6", "d7"); return(c);}#endif /* _DVE68K_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -