* M32C SERIES ASSEMBLER * SOURCE LIST Fri Jun 27 11:32:47 2014 PAGE 001 SEQ. LOC. OBJ. 0XMSDA .*....*....SOURCE STATEMENT....8....*....9....*....0....*....1....*....2....*....3....*....4....*....5....*....6....*....7....*....8....*....9....*....0 1 ;* 2 ;* TOPPERS/SSP Kernel 3 ;* Smallest Set Profile Kernel 4 ;* 5 ;* Copyright (C) 2010 by Naoki Saito 6 ;* Nagoya Municipal Industrial Research Institute, JAPAN 7 ;* 8 ;* 上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ 9 ;* ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・ 10 ;* 再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 ;* (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権 12 ;* 表示,この利用条件および下記の無保証規定が,そのままの形でソース 13 ;* コード中に含まれていること. 14 ;* (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用 15 ;* できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ 16 ;* ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保 17 ;* 証規定を掲載すること. 18 ;* (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用 19 ;* できない形で再配布する場合には,次のいずれかの条件を満たすこと. 20 ;* (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作 21 ;* 権表示,この利用条件および下記の無保証規定を掲載すること. 22 ;* (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報 23 ;* 告すること. 24 ;* (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害 25 ;* からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また, 26 ;* 本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ 27 ;* く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 28 ;* 29 ;* 本ソフトウェアは,無保証で提供されているものである.上記著作権者およ 30 ;* びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す 31 ;* る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用 32 ;* により直接的または間接的に生じたいかなる損害に関しても,その責任を負 33 ;* わない. 34 ;* 35 36 ;/* 定数定義(初期化)*/ 37 ; 38 ; 39 ; メモリマップの定義(ターゲット依存部) 40 ; 41 .include sectm32c.inc 42 1 ;* 43 1 ;* TOPPERS/SSP Kernel 44 1 ;* Smallest Set Profile Kernel 45 1 ;* 46 1 ;* Copyright (C) 2008 by Witz Corporation, JAPAN 47 1 ;* Copyright (C) 2010,2011 by Naoki Saito 48 1 ;* Nagoya Municipal Industrial Research Institute, JAPAN 49 1 ;* 50 1 ;* 上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ 51 1 ;* ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・ 52 1 ;* 再配布(以下,利用と呼ぶ)することを無償で許諾する. 53 1 ;* (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権 54 1 ;* 表示,この利用条件および下記の無保証規定が,そのままの形でソース 55 1 ;* コード中に含まれていること. 56 1 ;* (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用 57 1 ;* できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ 58 1 ;* ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保 59 1 ;* 証規定を掲載すること. 60 1 ;* (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用 61 1 ;* できない形で再配布する場合には,次のいずれかの条件を満たすこと. 62 1 ;* (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作 * M32C SERIES ASSEMBLER * SOURCE LIST Fri Jun 27 11:32:47 2014 PAGE 002 SEQ. LOC. OBJ. 0XMSDA .*....*....SOURCE STATEMENT....8....*....9....*....0....*....1....*....2....*....3....*....4....*....5....*....6....*....7....*....8....*....9....*....0 63 1 ;* 権表示,この利用条件および下記の無保証規定を掲載すること. 64 1 ;* (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報 65 1 ;* 告すること. 66 1 ;* (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害 67 1 ;* からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また, 68 1 ;* 本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ 69 1 ;* く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 70 1 ;* 71 1 ;* 本ソフトウェアは,無保証で提供されているものである.上記著作権者およ 72 1 ;* びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す 73 1 ;* る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用 74 1 ;* により直接的または間接的に生じたいかなる損害に関しても,その責任を負 75 1 ;* わない. 76 1 ;* 77 1 ; 78 1 ; ターゲットシステム依存セクション定義ファイル(M32C/87 Starter Kit用) 79 1 ; 80 1 81 1 ; 82 1 ; セクションの定義 83 1 ; 84 1 85 1 ; 86 1 ; 初期値有りデータ領域のセクション 87 1 ; 88 1 .section data_NE,DATA 89 000400 1 .org 0400H 90 1 91 1 ; 92 1 ; 初期値無し偶数データ領域のセクション 93 1 ; 94 1 .section bss_NE,DATA 95 1 96 1 ; 97 1 ; 初期値有り奇数データ領域のセクション 98 1 ; 99 1 .section data_NO,DATA 100 1 101 1 ; 102 1 ; 初期値無し奇数データ領域のセクション 103 1 ; 104 1 .section bss_NO,DATA 105 1 106 1 ; 107 1 ; CODE領域のセクション 108 1 ; 109 1 .section program,CODE 110 F00000 1 .org 0F00000H 111 1 112 1 ; 113 1 ; ROデータ領域のセクション 114 1 ; 115 1 .section rom_FE,ROMDATA,ALIGN 116 1 .section rom_FO,ROMDATA 117 1 118 1 ; 119 1 ; DATA領域の初期値 120 1 ; 121 1 .section data_NEI,ROMDATA,ALIGN 122 1 .section data_NOI,ROMDATA 123 1 124 1 ; * M32C SERIES ASSEMBLER * SOURCE LIST Fri Jun 27 11:32:47 2014 PAGE 003 SEQ. LOC. OBJ. 0XMSDA .*....*....SOURCE STATEMENT....8....*....9....*....0....*....1....*....2....*....3....*....4....*....5....*....6....*....7....*....8....*....9....*....0 125 1 ; 可変ベクタテーブル領域のセクション 126 1 ; 127 1 ; 配置アドレス 0xffef00 の算出根拠は,ターゲットボードのユーザーズ 128 1 ; マニュアルに掲載されているメモリマップにある. 129 1 ; http://documentation.renesas.com/jpn/products/tool/rjg10j0010_rskm32c87_usermanual.pdf 130 1 ; その P31 にメモリマップが掲載されている. 131 1 ; 132 1 ; それに加え,以下の前提の元で決定した. 133 1 ; ・ベクタテーブルはエミュレータが使用する領域と重ならないことが必要である 134 1 ; ・ROM側のエミュレータ使用領域の先頭は 0xfff000 である. 135 1 ; ・可変ベクタのサイズは 4x64 = 256 = 0x100 バイトである. 136 1 ; ・ユーザアプリのために連続したROM領域を最大限確保したい. 137 1 ;  重ならない範囲でできるだけ端の方に配置した方が良い. 138 1 ; ・その場合,前と後ろが考えられるが,後ろを選択した. 139 1 ; 140 1 .section vvector,CODE 141 FFEF00 1 .org 0FFEF00H 142 1 .glb VVECTOR_TOP 143 FFEF00 1 VVECTOR_TOP: 144 1 145 1 ; 146 1 ; 固定ベクタテーブル領域のセクション 147 1 ; 148 1 .section fvector,CODE 149 FFFFDC 1 .org 0FFFFDCH 150 1 151 1 152 ; 153 ;************************************************ 154 ;* 初期化ルーチン * 155 ;************************************************ 156 .section program, code, align 157 .glb _start 158 .glb _sta_ker 159 .glb _software_init_hook 160 .glb _hardware_init_hook 161 .glb __kernel_istkpt 162 163 000000 _start: 164 000000 D787000000r ldc __kernel_istkpt,isp ; 割り込みスタックポインタセット(_kernel_istkpt は kernel_cfg.c) 165 000005 D5AA0000 ldc #0000h, flg ; bank#0,割り込み禁止,ISP使用 166 000009 D52800EFFF ldc #VVECTOR_TOP, intb ; ベクタテーブルの設定(VVECTOR_TOP は sectm32c.inc) 167 168 ;------ ハードウェア固有の初期化ルーチンの呼出し 169 00000E B0B100000000r mov.l #_hardware_init_hook, a0 ; _hardware_init_hook は target_support.a30 で定義 170 000014 A09100 * cmp.l #0, a0 171 000017 DA03 jz init_data_NE 172 000019 9081 jsri.a a0 173 174 ;------ DATA領域の初期化 ------ 175 00001B init_data_NE: 176 00001B 996F0000r mov.w #(sizeof data_NE), r3 177 00001F DA0F jz init_data_NO ; サイズ0なら初期化必要なし 178 000021 B0B100000000r mov.l #(topof data_NEI), a0 179 000027 B0F100000000r mov.l #(topof data_NE), a1 180 00002D B083 smovf.b 181 182 00002F init_data_NO: 183 00002F 996F0000r mov.w #(sizeof data_NO), r3 184 000033 DA0F jz clear_bss ; サイズ0なら初期化必要なし 185 000035 B0B100000000r mov.l #(topof data_NOI), a0 186 00003B B0F100000000r mov.l #(topof data_NO), a1 * M32C SERIES ASSEMBLER * SOURCE LIST Fri Jun 27 11:32:47 2014 PAGE 004 SEQ. LOC. OBJ. 0XMSDA .*....*....SOURCE STATEMENT....8....*....9....*....0....*....1....*....2....*....3....*....4....*....5....*....6....*....7....*....8....*....9....*....0 187 000041 B083 smovf.b 188 189 ;------ BSS領域の初期化 ------ 190 000043 clear_bss: 191 000043 02 Z mov.b #0, r0l 192 000044 9D0000r S mov.w #(topof bss_NE & 0ffffh), a1 193 000047 996F0000r mov.w #(sizeof bss_NE) , r3 194 00004B B803 sstr.b 195 196 00004D 9D0000r S mov.w #(topof bss_NO & 0ffffh), a1 197 000050 996F0000r mov.w #(sizeof bss_NO) , r3 198 000054 B803 sstr.b 199 200 ;* software_init_hook を呼出し(0 でない場合) 201 ;* 202 ;* ソフトウェア環境(特にライブラリ)に依存して必要な初期化処 203 ;* 理がある場合は,software_init_hook という関数を用意すれば 204 ;* よい.M32Cの場合,software_init_hook の定義は target_support.a30 に用意されており, 205 ;* 利用する場合はマクロ EXTERN_SOFT_HOOK を 1 に定義してビルドする. 206 000056 B0B100000000r mov.l #_software_init_hook, a0 207 00005C A09100 * cmp.l #0, a0 208 00005F DA03 jz kernel_link 209 000061 9081 jsri.a a0 210 211 ;; 212 ;***** カーネル初期化処理へ ***** 213 000063 kernel_link: 214 000063 CC000000r A jmp _sta_ker ; --> _sta_ker() 215 216 ; 217 .end Information List TOTAL ERROR(S) 00000 TOTAL WARNING(S) 00000 TOTAL LINE(S) 00217 LINES Section List Attr Size Name DATA 00000000(000000H) data_NE DATA 00000000(000000H) bss_NE DATA 00000000(000000H) data_NO DATA 00000000(000000H) bss_NO CODE 00000000(000000H) program ROMDATA 00000000(000000H) rom_FE ROMDATA 00000000(000000H) rom_FO ROMDATA 00000000(000000H) data_NEI ROMDATA 00000000(000000H) data_NOI CODE 00000000(000000H) vvector CODE 00000000(000000H) fvector CODE 00000103(000067H) program