OSDN Git Service

release_3.3.0
[toppersjsp4bf/jsp.git] / jsp / config / m68k / dve68k / sys_config.c
1 /*
2  *  TOPPERS/JSP Kernel
3  *      Toyohashi Open Platform for Embedded Real-Time Systems/
4  *      Just Standard Profile Kernel
5  * 
6  *  Copyright (C) 2000-2003 by Embedded and Real-Time Systems Laboratory
7  *                              Toyohashi Univ. of Technology, JAPAN
8  * 
9  *  上記著作権者は,以下の (1)〜(4) の条件か,Free Software Foundation 
10  *  によって公表されている GNU General Public License の Version 2 に記
11  *  述されている条件を満たす場合に限り,本ソフトウェア(本ソフトウェア
12  *  を改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下,
13  *  利用と呼ぶ)することを無償で許諾する.
14  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
15  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
16  *      スコード中に含まれていること.
17  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
18  *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
19  *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
20  *      の無保証規定を掲載すること.
21  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
22  *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
23  *      と.
24  *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
25  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
26  *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
27  *        報告すること.
28  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
29  *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
30  * 
31  *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
32  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,その適用可能性も
33  *  含めて,いかなる保証も行わない.また,本ソフトウェアの利用により直
34  *  接的または間接的に生じたいかなる損害に関しても,その責任を負わない.
35  * 
36  *  @(#) $Id: sys_config.c,v 1.1 2009/01/31 05:27:37 suikan Exp $
37  */
38
39 /*
40  *  ターゲットシステム依存モジュール(DVE68K/40用)
41  */
42
43 #include "jsp_kernel.h"
44 #include <sil.h>
45 #include <dve68k_dga.h>
46
47 /*
48  *  プロセッサ識別のための変数(マルチプロセッサ対応)
49  */
50 UINT    board_id;       /* ボードID */
51 VP  board_addr;     /* ローカルメモリの先頭アドレス */
52
53 /*
54  *  ターゲットシステム依存の初期化
55  */
56 void
57 sys_initialize()
58 {
59     /*
60      *  プロセッサ識別のための変数の初期化
61      */
62     board_id = ((UINT)(sil_rew_mem((VP) TADR_BOARD_REG0)) & 0x1f);
63     board_addr = (VP)(board_id << 24);
64
65     /*
66      *  割込み関連の初期化
67      *
68      *  すべての割込みをマスク・クリアし,割込みベクトルを設定する.
69      */
70     dga_write((VP) TADR_DGA_CSR21, 0);
71     dga_write((VP) TADR_DGA_CSR23, ~0);
72     dga_write((VP) TADR_DGA_CSR19, (TVEC_G0I << 24) | (TVEC_G1I << 16)
73                     | (TVEC_SWI << 8) | TVEC_SPRI);
74
75     /*
76      *  アボート割込みの設定(NMI)
77      *
78      *  アボート割込みの割込みレベルを設定し,要求をクリアした後,
79      *  マスクを解除する.
80      */
81     dga_set_ilv((VP) TADR_DGA_CSR24, TBIT_ABTIL, TIRQ_NMI);
82     dga_write((VP) TADR_DGA_CSR23, TBIT_ABT);
83     dga_bit_or((VP) TADR_DGA_CSR21, TBIT_ABT);
84
85     /*
86      *  メモリ領域の設定
87      *
88      *  ローカルメモリのVMEバス上での先頭アドレスとサイズ(16MB)
89      *  し,アクセスを受け付けるように設定する.また,VMEバスから
90      *  拡張アドレスアクセスを受け付けるようにに設定する.
91      */
92     dga_write((VP) TADR_DGA_CSR4, (UW) board_addr | 0x00ff);
93     dga_write((VP) TADR_DGA_CSR5, 0x0000012fu);
94
95     /*
96      *  インタフェースレジスタ(IFR)の設定
97      *
98      *  インタフェースレジスタのベースアドレスを設定する.また,イ
99      *  ンタフェースレジスタ0のサービスリクエストフラグをクリア.
100      *  インタフェースレジスタ3にボードのID番号を設定.
101      */
102     dga_write((VP) TADR_DGA_CSR3, (board_id << 4) | 0x3);
103     dga_write((VP) TADR_DGA_IFR0, 0x80000000u);
104     dga_write((VP) TADR_DGA_IFR3, board_id);
105
106     /*
107      *  ラウンドロビンモードに設定(マルチプロセッサ対応)
108      */
109     dga_write((VP) TADR_DGA_CSR1, (dga_read((VP) TADR_DGA_CSR1)
110             & 0xffeffcff) | (1u << 20) | ((board_id % 4) << 8));
111 }
112
113 /*
114  *  ターゲットシステムの終了
115  */
116 void
117 sys_exit()
118 {
119     dve68k_exit();
120 }
121
122 /*
123  *  ターゲットシステムの文字出力
124  */
125 void
126 sys_putc(char c)
127 {
128     if (c == '\n') {
129         dve68k_putc('\r');
130     }
131     dve68k_putc(c);
132 }