* M32C SERIES ASSEMBLER * SOURCE LIST Fri Jun 27 11:32:46 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,2011 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 ; プロセッサ依存モジュール アセンブリ言語部(M16Cファミリ共通部分) 38 ; 39 .section program, code, align 40 41 ; 外部で定義されているシンボル 42 .glb __kernel_intnest 43 .glb __kernel_reqflg 44 .glb __kernel_disdsp 45 .glb __kernel_interrupt_dispatch 46 47 ; 外部へ公開するシンボル 48 .glb __kernel_interrupt_entry 49 50 .include target_support.inc 51 1 ;* 52 1 ;* TOPPERS/SSP Kernel 53 1 ;* Toyohashi Open Platform for Embedded Real-Time Systems/ 54 1 ;* Advanced Standard Profile Kernel 55 1 ;* 56 1 ;* Copyright (C) 2011 by Naoki Saito 57 1 ;* Nagoya Municipal Industrial Research Institute, JAPAN 58 1 ;* 59 1 ;* 上記著作権者は,Free Software Foundation によって公表されている 60 1 ;* GNU General Public License の Version 2 に記述されている条件か,以 61 1 ;* 下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェア(本ソフトウェ 62 1 ;* アを改変したものを含む.以下同じ)を使用・複製・改変・再配布(以下, * M32C SERIES ASSEMBLER * SOURCE LIST Fri Jun 27 11:32:46 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 ;* (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 65 1 ;* 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 66 1 ;* スコード中に含まれていること. 67 1 ;* (2) 本ソフトウェアを再利用可能なバイナリコード(リロケータブルオブ 68 1 ;* ジェクトファイルやライブラリなど)の形で利用する場合には,利用 69 1 ;* に伴うドキュメント(利用者マニュアルなど)に,上記の著作権表示, 70 1 ;* この利用条件および下記の無保証規定を掲載すること. 71 1 ;* (3) 本ソフトウェアを再利用不可能なバイナリコードの形または機器に組 72 1 ;* み込んだ形で利用する場合には,次のいずれかの条件を満たすこと. 73 1 ;* (a) 利用に伴うドキュメント(利用者マニュアルなど)に,上記の著作 74 1 ;* 権表示,この利用条件および下記の無保証規定を掲載すること. 75 1 ;* (b) 利用の形態を,別に定める方法によって,上記著作権者に報告する 76 1 ;* こと. 77 1 ;* (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 78 1 ;* 害からも,上記著作権者を免責すること. 79 1 ;* 80 1 ;* 本ソフトウェアは,無保証で提供されているものである.上記著作権者は, 81 1 ;* 本ソフトウェアに関して,その適用可能性も含めて,いかなる保証も行わ 82 1 ;* ない.また,本ソフトウェアの利用により直接的または間接的に生じたい 83 1 ;* かなる損害に関しても,その責任を負わない. 84 1 85 1 ;;; as308 に与えるインクルードパスが1つのみのため,相対パス指定とする(2012/06/18) 86 1 .include ..\..\arch\m16c_ncxx\m32c_support.inc 87 2 ;* 88 2 ;* TOPPERS/SSP Kernel 89 2 ;* Smallest Set Profile Kernel 90 2 ;* 91 2 ;* Copyright (C) 2011 by Naoki Saito 92 2 ;* Nagoya Municipal Industrial Research Institute, JAPAN 93 2 ;* 94 2 ;* 上記著作権者は,以下の (1)〜(4) の条件を満たす場合に限り,本ソフトウェ 95 2 ;* ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改変・ 96 2 ;* 再配布(以下,利用と呼ぶ)することを無償で許諾する. 97 2 ;* (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作権 98 2 ;* 表示,この利用条件および下記の無保証規定が,そのままの形でソース 99 2 ;* コード中に含まれていること. 100 2 ;* (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使用 101 2 ;* できる形で再配布する場合には,再配布に伴うドキュメント(利用者マ 102 2 ;* ニュアルなど)に,上記の著作権表示,この利用条件および下記の無保 103 2 ;* 証規定を掲載すること. 104 2 ;* (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使用 105 2 ;* できない形で再配布する場合には,次のいずれかの条件を満たすこと. 106 2 ;* (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著作 107 2 ;* 権表示,この利用条件および下記の無保証規定を掲載すること. 108 2 ;* (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに報 109 2 ;* 告すること. 110 2 ;* (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損害 111 2 ;* からも,上記著作権者およびTOPPERSプロジェクトを免責すること.また, 112 2 ;* 本ソフトウェアのユーザまたはエンドユーザからのいかなる理由に基づ 113 2 ;* く請求からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 114 2 ;* 115 2 ;* 本ソフトウェアは,無保証で提供されているものである.上記著作権者およ 116 2 ;* びTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的に対す 117 2 ;* る適合性も含めて,いかなる保証も行わない.また,本ソフトウェアの利用 118 2 ;* により直接的または間接的に生じたいかなる損害に関しても,その責任を負 119 2 ;* わない. 120 2 ;* 121 2 122 2 ; 123 2 ; prc_support.a30 用インクルードファイル(M32C用) 124 2 ; このファイルは,target_support.inc のみからインクルードされる. * M32C SERIES ASSEMBLER * SOURCE LIST Fri Jun 27 11:32:46 2014 PAGE 003 SEQ. LOC. OBJ. 0XMSDA .*....*....SOURCE STATEMENT....8....*....9....*....0....*....1....*....2....*....3....*....4....*....5....*....6....*....7....*....8....*....9....*....0 125 2 ; 126 2 127 2 ; 128 2 ; 割込み(および,CPU例外)ハンドラの呼出し命令 129 2 ; 130 2 D __call_int_handler .macro 131 2 D jsri.a a0 132 2 .endm 133 134 ; 135 ; 割込み/CPU例外の出入口処理(共通部) 136 ; 前提条件 137 ; ・FLGレジスタのIビット=0, IPLは受付けた割込みのIPL. 138 ; ・ハンドラのアドレスが a0a1 (M32Cの場合, a0) に格納されている. 139 ; ・CPU例外ハンドラの入口から来た場合,スタックポインタの 140 ; 先頭番地(p_excinf)がレジスタ r1 (M32Cの場合,r3r1)に格納されており, 141 ; これはCPU例外ハンドラの引数としてそのまま渡される. 142 ; 143 ; レジスタがスタック上にどのように保存されているかを以下に示す. 144 ; 図は並び順のみを表現したものであり,サイズを考慮していないことに注意する. 145 ; 正確にはデータシートを参照のこと. 146 ; この図では上が低位, 下が高位のアドレスで, スタックは図の下側から 147 ; 上方向に向かって積み上げられるものとする. 148 ; 149 ; 【 M32Cの場合】 【M16Cの場合】 150 ; 151 ; -------------<-- p_excinf ------------- <-- p_excinf 152 ; | R0(2byte) | | R0(2byte) | 153 ; ------------- ------------- 154 ; | R1(2byte) | | R1(2byte) | 155 ; ------------- ------------- 156 ; | R2(2byte) | | R2(2byte) | 157 ; ------------- ------------- 158 ; | R3(2byte) | | R3(2byte) | 159 ; ------------- ------------- 160 ; | A0(4byte) | | A0(2byte) | 161 ; ------------- ------------- 162 ; | A1(4byte) | | A1(2byte) | 163 ; ------------- ------------- 164 ; | SB(4byte) | | SB(2byte) | 165 ; ------------- ------------- 166 ; | FB(4byte) | | FB(2byte) | 167 ; ------------- ------------- 168 ; | PC(4byte) | |PC下(2byte)| 169 ; ------------- ------------- 170 ; | FLG(2byte)| |FLG下(1byte)| 171 ; ------------- -------------- 172 ; |FLG上(4bit) | 173 ; |/PC上(4bit) | 174 ; -------------- 175 ; 176 ; ハンドラからリターンした後は, 多重割込みでなく, かつ, 177 ; reqflg が TRUE,かつ,disdsp が FALSE の時に,interrupt_dispatch へ分岐する. 178 ; 179 ; 多重割込みかどうかは割込みネストカウンタの値で判定する. 180 ; intnest > 0 ならば多重割込みであると判定する. 181 ; 182 000000 __kernel_interrupt_entry: 183 000000 A68E000000r inc.b __kernel_intnest ; ネストカウンタをインクリメント 184 000005 D1EE fset i ; 割込み許可(IPLは受け付けられた割込みのレベル) 185 __call_int_handler ; 割込みハンドラ呼び出し(XXX_support.inc) 186 000007 9081 1 M jsri.a a0 * M32C SERIES ASSEMBLER * SOURCE LIST Fri Jun 27 11:32:46 2014 PAGE 004 SEQ. LOC. OBJ. 0XMSDA .*....*....SOURCE STATEMENT....8....*....9....*....0....*....1....*....2....*....3....*....4....*....5....*....6....*....7....*....8....*....9....*....0 187 1 M .endm 188 000009 D3EE fclr i ; CPUロック状態へ 189 00000B B68E000000r dec.b __kernel_intnest ; ネストカウンタをデクリメント 190 000010 9A18 jnz int_return ; 戻り先が非タスクコンテキスト(非ゼロ)なら単にリターン 191 000012 B9EB000000r mov.w __kernel_reqflg, r1 ; ディスパッチ要求があるかどうか 192 000017 DA11 jz int_return ; なければ,単にリターン 193 000019 F7A0000000r Q mov.w #0, __kernel_reqflg ; reqflg = FALSE に戻しておく 194 00001E B9AB000000r mov.w __kernel_disdsp, r0 ; ディスパッチ禁止かどうか 195 000023 9A05 jnz int_return ; 禁止なら,単にリターン 196 000025 CD000000r A jsr __kernel_interrupt_dispatch ; 新たにタスクを起動する 197 000029 int_return: 198 000029 8EFF popm r0,r1,r2,r3,a0,a1,sb,fb ; レジスタ復帰 199 00002B 9E reit 200 201 ; 未使用割込みの処理 202 .glb _unused_interrupt 203 00002C _unused_interrupt: 204 00002C 9E reit 205 206 .end Information List TOTAL ERROR(S) 00000 TOTAL WARNING(S) 00000 TOTAL LINE(S) 00206 LINES Section List Attr Size Name CODE 00000045(00002DH) program