* 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
