source: anotherchoice/tags/jsp-1.4.4-full-UTF8/config/m16c-renesas/start.a30@ 26

Last change on this file since 26 was 26, checked in by ykominami, 10 years ago

initial

File size: 5.8 KB
Line 
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;* Copyright (C) 2001 by OAKS16KIT support
9;* Copyright (C) 2003-2004 by Naoki Saito
10;* Nagoya Municipal Industrial Research Institute, JAPAN
11;* Copyright (C) 2003-2004 by Ryosuke Takeuchi
12;* Platform Development Center RICOH COMPANY,LTD. JAPAN
13;*
14;* 上記著作権者
15は,Free Software Foundation によってå…
16¬è¡¨ã•ã‚Œã¦ã„ã‚‹
17;* GNU General Public License の Version 2 に記述されている条件か,以
18;* 下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェア(本ソフトウェ
19;* アを改変したものを含む.以下同じ)を使用・複製・改変・再é…
20å¸ƒï¼ˆä»¥ä¸‹ï¼Œ
21;* 利用と呼ぶ)することを無償で許諾する.
22;* (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
23;* 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
24;* スコード中に含まれていること.
25;* (2) 本ソフトウェアを再利用可能なバイナリコード(リロケータブルオブ
26;* ジェクトファイルやライブラリなど)の形で利用する場合には,利用
27;* に伴うドキュメント(利用者
28マニュアルなど)に,上記の著作権表示,
29;* この利用条件および下記の無保証規定を掲載すること.
30;* (3) 本ソフトウェアを再利用不可能なバイナリコードの形または機器に組
31;* み込んだ形で利用する場合には,次のいずれかの条件を満たすこと.
32;* (a) 利用に伴うドキュメント(利用者
33マニュアルなど)に,上記の著作
34;* 権表示,この利用条件および下記の無保証規定を掲載すること.
35;* (b) 利用の形æ…
36‹ã‚’,別に定める方法によって,上記著作権者
37に報告する
38;* こと.
39;* (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
40;* 害からも,上記著作権者
41をå…
42è²¬ã™ã‚‹ã“と.
43;*
44;* 本ソフトウェアは,無保証で提供されているものである.上記著作権者
45は,
46;* 本ソフトウェアに関して,その適用可能性も含めて,いかなる保証も行わ
47;* ない.また,本ソフトウェアの利用により直接的または間接的に生じたい
48;* かなる損害に関しても,その責任を負わない.
49;*
50;* @(#) $Id: start.a30,v 1.5 2006/08/03 04:15:57 honda Exp $
51
52PRCR .EQU 000AH ; プロテクトレジスタ
53PRC0 .BTEQU 0,PRCR ; システムクロックレジスタビット
54PRC1 .BTEQU 1,PRCR ; プロセッサモードレジスタビット
55;
56PM0 .EQU 0004H ; プロセッサモードレジスタ0
57PM1 .EQU 0005H ; プロセッサモードレジスタ1
58;
59CM0 .EQU 0006H ; クロックモードレジスタ0
60CM1 .EQU 0007H ; クロックモードレジスタ1
61C_CM0 .EQU 00001000B ; CM0(Xcin-HIGH)
62C_CM1 .EQU 00100000B ; CM1(Xin-HIGH)
63
64.IF M3029
65CM2 .EQU 000CH ; クロックモードレジスタ2
66C_CM2 .EQU 00000000B ; CM2
67.ENDIF
68
69;/* 定数定義(初期化)*/
70;
71.IF M3029
72VECTOR_ADR .EQU 0FA000h ; ベクタアドレス
73.ELSE
74VECTOR_ADR .EQU 0FFE00h ; ベクタアドレス
75.ENDIF
76
77 .include m16cvec.inc
78
79 .section bss_NE,DATA,ALIGN
80 .section data_NE,DATA,ALIGN
81 .section data_NEI,ROMDATA,ALIGN
82 .section bss_NO,DATA,ALIGN
83 .section data_NO,DATA,ALIGN
84 .section data_NOI,ROMDATA,ALIGN
85
86;
87;************************************************
88;* 初期化ルーチン *
89;************************************************
90 .section program
91 .glb _hardware_start
92 .glb _kernel_start
93 .glb _software_init_hook
94;
95_hardware_start:
96 ldc #RAMEND,ISP ; 割り込みスタックポインタセット
97; ----- set Processor mode -----
98 bset PRC1 ; プロセッサモードレジスタ書き込みイネーブル
99 mov.b #00000000b,PM0 ; シングルチップモード
100 mov.b #00000000b,PM1 ; 非拡張、ノーウェイト
101 bclr PRC1 ; プロセッサモードレジスタ書き込みディゼーブル
102; ----- set System clock -----
103 bset PRC0 ; クロックコントロールレジスタ書き込みイネーブル
104.IF M3029
105 mov.b #C_CM2,CM2 ; システムクロックをメインクロックに
106.ENDIF
107 mov.b #C_CM0,CM0 ; メインクロック発信
108 mov.b #C_CM1,CM1 ; 分周なし
109 bclr PRC0 ; レジスタ書き込みディゼーブル
110;
111 ldc #0000h,FLG ; bank#0,割り込み許可,ISP
112 ldintb #VECTOR_ADR ; ベクタテーブルの設定
113
114;------ DATA領域の初期化 ------
115 mov.w #(topof bss_NE),R3
116 mov.w #(topof data_NE),A1
117 sub.w A1,R3
118 jz bss_clear
119 mov.w #(topof data_NEI & 0ffffh),A0
120 mov.b #(topof data_NEI >> 16),R1H
121 smovf.b
122;------ BSS領域の初期化 ------
123bss_clear:
124 mov.w #(topof bss_NE),A0
125 mov.w #0,R0
126clear_loop:
127 mov.w R0,[A0]
128 add.w #2,A0
129 cmp.w #RAMEND,A0
130 jne clear_loop
131
132;* software_init_hook を呼出し(0 でない場合)
133;*
134;* ソフトウェア環境(特にライブラリ)に依存して必
135要な初期化処
136;* 理がある場合は,software_init_hook という関数を用意すれば
137;* よい.M16Cの場合、コンパイル時EXTERN_SOFT_HOOKをデファインする
138 mov.w #(_software_init_hook & 0ffffh),A0
139 mov.w #(_software_init_hook >> 16),A1
140 lde.w [A1A0],R0
141 mov.w #((_software_init_hook+2) & 0ffffh),A0
142 mov.w #((_software_init_hook+2) >> 16),A1
143 lde.w [A1A0],R1
144 mov.w R0,A0
145 mov.w R1,A1
146 or.w R0,R1
147 jz kernel_link
148 jsri.a A1A0
149;;
150;***** カーネルスタートへ *****
151kernel_link:
152 jsr.a _kernel_start ; --> kernel_start()
153;
154 .end
Note: See TracBrowser for help on using the repository browser.