Ignore:
Timestamp:
Aug 23, 2017, 9:27:43 AM (7 years ago)
Author:
coas-nagasima
Message:

文字コードを設定

Location:
EcnlProtoTool/trunk/asp3_dcre/arch
Files:
47 edited

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/Makefile.core

    • Property svn:mime-type changed from text/x-makefile to text/x-makefile;charset=UTF-8
    r270 r321  
    11#
    2 #               Makefileのコア依存部(ARM用)
     2#               Makefileのコア依存部(ARM用)
    33#
    4 #  $Id: Makefile.core 572 2016-02-01 14:40:09Z ertl-hiro $
     4#  $Id$
    55#
    66
    77#
    8 ã‚³ã‚¢ä¾å­˜éƒ¨ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªåã®å®šç¾©
     8コア依存部ディレクトリ名の定義
    99#
    1010COREDIR = $(SRCDIR)/arch/$(CORE)_$(TOOL)/common
    1111
    1212#
    13 ãƒ„ール依存部ディレクトリ名の定義
     13ツール依存部ディレクトリ名の定義
    1414#
    1515TOOLDIR = $(SRCDIR)/arch/$(TOOL)
    1616
    1717#
    18 #  GNU開発環境のターゲットアーキテクチャの定義
     18#  GNU開発環境のターゲットアーキテクチャの定義
    1919#
    2020ifndef GCC_TARGET
     
    2323
    2424#
    25 ã‚³ãƒ³ãƒ‘イルオプション
     25コンパイルオプション
    2626#
    2727INCLUDES := $(INCLUDES) -I$(COREDIR) -I$(TOOLDIR)
     
    2929
    3030#
    31 ã‚«ãƒ¼ãƒãƒ«ã«é–¢ã™ã‚‹å®šç¾©
     31カーネルに関する定義
    3232#
    3333KERNEL_DIRS := $(KERNEL_DIRS) $(COREDIR)
     
    3636
    3737#
    38 ã‚³ãƒ³ãƒ•ã‚£ã‚®ãƒ¥ãƒ¬ãƒ¼ã‚¿é–¢ä¿‚の変数の定義
     38コンフィギュレータ関係の変数の定義
    3939#
    4040CFG_TABS := $(CFG_TABS) --symval-table $(COREDIR)/core_sym.def
    4141
    4242#
    43 ã‚ªãƒ•ã‚»ãƒƒãƒˆãƒ•ã‚¡ã‚¤ãƒ«ç”Ÿæˆã®ãŸã‚ã®å®šç¾©
     43オフセットファイル生成のための定義
    4444#
    4545TARGET_OFFSET_TRB = $(COREDIR)/core_offset.trb
    4646
    4747#
    48 ã‚¹ã‚¿ãƒ¼ãƒˆã‚¢ãƒƒãƒ—モジュールに関する定義
     48スタートアップモジュールに関する定義
    4949#
    50 #  START_OBJSをstart.oに設定し,LDFLAGSに-nostdlibを追加する.
     50#  START_OBJSをstart.oに設定し,LDFLAGSに-nostdlibを追加する.
    5151#
    5252START_OBJS = start.o
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/arm.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc;charset=UTF-8
    r270 r321  
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
    8  *  上記著作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    11  *  変・再é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    15  *      スコード中に含まれていること.
    16  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17  *      用できる形で再é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20  *      è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22  *      の無保証規定を掲載すること.
    23  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24  *      用できない形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26  *      と.
    27  *    (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    31  *    (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34  *        報告すること.
    35  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36  *      害からも,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    40  *      由に基づく請求からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42  *      å
    43 è²¬ã™ã‚‹ã“と.
     8 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13 *      スコード中に含まれていること.
     14 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17 *      の無保証規定を掲載すること.
     18 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20 *      と.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24 *        報告すること.
     25 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29 *      免責すること.
    4430 *
    45  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    46 ãŠ
    47  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    49  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    50  *  の責任を負わない.
     31 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35 *  の責任を負わない.
    5136 *
    5237 *  $Id$
     
    5439
    5540/*
    56  *              ARMコアサポートモジュール
     41 *              ARMコアサポートモジュール
    5742 */
    5843
     
    6045
    6146/*
    62  *  キャッシュの操作
     47 *  キャッシュの操作
    6348 */
    6449
    6550/*
    66  *  データキャッシュのイネーブル
     51 *  データキャッシュのイネーブル
    6752 */
    6853void
     
    8166
    8267/*
    83  *  データキャッシュのディスエーブル
     68 *  データキャッシュのディスエーブル
    8469 *
    85  *  データキャッシュが無効な状æ
    86 ‹ã§clean_and_invalidateを実行すると暴走
    87  *  する場合があるため,データキャッシュの状æ
    88 ‹ã‚’判断して,無効な場合は,
    89  *  無効化のみを行う.
     70 *  データキャッシュが無効な状態でclean_and_invalidateを実行すると暴走
     71 *  する場合があるため,データキャッシュの状態を判断して,無効な場合は,
     72 *  無効化のみを行う.
    9073 */
    9174void
     
    10790
    10891/*
    109  *  命令キャッシュのイネーブル
     92 *  命令キャッシュのイネーブル
    11093 */
    11194void
     
    124107
    125108/*
    126  *  命令キャッシュのディスエーブル
     109 *  命令キャッシュのディスエーブル
    127110 */
    128111void
     
    139122
    140123/*
    141  *  ARMv5におけるデータキャッシュのクリーンと無効化
     124 *  ARMv5におけるデータキャッシュのクリーンと無効化
    142125 */
    143126#if __TARGET_ARCH_ARM <= 5
     
    152135
    153136/*
    154  *  ARMv7におけるデータキャッシュの無効化
     137 *  ARMv7におけるデータキャッシュの無効化
    155138 *
    156  *  レベル0のキャッシュのみを無効化する.
     139 *  レベル0のキャッシュのみを無効化する.
    157140 */
    158141#if __TARGET_ARCH_ARM == 7
     
    183166
    184167/*
    185  *  ARMv7におけるデータキャッシュのクリーンと無効化
     168 *  ARMv7におけるデータキャッシュのクリーンと無効化
    186169 *
    187  *  レベル0のキャッシュのみをクリーンと無効化する.
     170 *  レベル0のキャッシュのみをクリーンと無効化する.
    188171 */
    189172#if __TARGET_ARCH_ARM == 7
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/arm.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;charset=UTF-8
    r270 r321  
    88 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    99 *
    10  *  上記著作権è€
    11 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    12  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    13  *  変・再é
    14 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    28  *      と.
    29  *    (a) 再é
    30 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    31 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    32  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    33  *    (b) 再é
    34 å¸ƒã®å½¢æ
    35 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    36  *        報告すること.
    37  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    38  *      害からも,上記著作権è€
    39 ãŠã‚ˆã³TOPPERSプロジェクトをå
    40 è²¬ã™ã‚‹ã“と.
    41  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    42  *      由に基づく請求からも,上記著作権è€
    43 ãŠã‚ˆã³TOPPERSプロジェクトを
    44  *      å
    45 è²¬ã™ã‚‹ã“と.
     10 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     11 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15 *      スコード中に含まれていること.
     16 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19 *      の無保証規定を掲載すること.
     20 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22 *      と.
     23 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     25 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26 *        報告すること.
     27 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31 *      免責すること.
    4632 *
    47  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    48 ãŠ
    49  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    50  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    51  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    52  *  の責任を負わない.
     33 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37 *  の責任を負わない.
    5338 *
    5439 *  $Id$
     
    5641
    5742/*
    58  *              ARMコアサポートモジュール
     43 *              ARMコアサポートモジュール
    5944 */
    6045
     
    6550
    6651/*
    67  *  ARMコアの特殊命令のインライン関数定義
     52 *  ARMコアの特殊命令のインライン関数定義
    6853 */
    6954#ifndef TOPPERS_MACRO_ONLY
    7055#ifndef TECSGEN
    71 #include "arm_insn.h"                           /* tecsgenが解釈できないためスキップ */
     56#include "arm_insn.h"                           /* tecsgenが解釈できないためスキップ */
    7257#endif /* TECSGEN */
    7358#endif /*  TOPPERS_MACRO_ONLY */
    7459
    7560/*
    76  *  ARM例外ベクタ
     61 *  ARM例外ベクタ
    7762 */
    7863#define RESET_VECTOR    UINT_C(0x00)
     
    8570
    8671/*
    87  *  ARM例外ベクタ番号
     72 *  ARM例外ベクタ番号
    8873 */
    8974#define RESET_NUMBER    UINT_C(0)
     
    9681
    9782/*
    98  *  CPSRの割込み禁止ビット
     83 *  CPSRの割込み禁止ビット
    9984 */
    10085#define CPSR_INT_MASK   UINT_C(0xc0)
     
    10388
    10489/*
    105  *  CPSRのThumbビット
     90 *  CPSRのThumbビット
    10691 */
    10792#define CPSR_THUMB_BIT  UINT_C(0x20)
    10893
    10994/*
    110  *  CPSRのモードビット
     95 *  CPSRのモードビット
    11196 */
    11297#define CPSR_MODE_MASK  UINT_C(0x1f)
     
    120105
    121106/*
    122  *  CP15のシステム制御レジスタ(SCTLR)の設定値
     107 *  CP15のシステム制御レジスタ(SCTLR)の設定値
    123108 *
    124  *  ARMv7では,CP15_SCTLR_EXTPAGEは常に1になっている.
     109 *  ARMv7では,CP15_SCTLR_EXTPAGEは常に1になっている.
    125110 */
    126111#if __TARGET_ARCH_ARM == 6
     
    134119
    135120/*
    136  *  CP15のフォールト状æ
    137 ‹ãƒ¬ã‚¸ã‚¹ã‚¿ã®å‚ç
    138 §å€¤
     121 *  CP15のフォールト状態レジスタの参照値
    139122 */
    140123#define CP15_FSR_FS_MASK                        UINT_C(0x0000040f)
     
    146129
    147130/*
    148  *  CP15のパフォーマンスモニタ制御レジスタ(PMCR)の設定値
     131 *  CP15のパフォーマンスモニタ制御レジスタ(PMCR)の設定値
    149132 */
    150133#define CP15_PMCR_ALLCNTR_ENABLE                UINT_C(0x01)
     
    152135
    153136/*
    154  *  CP15のパフォーマンスモニタカウントイネーブルセットレジスタ(PMCNTENSET)
    155  *  の設定値
     137 *  CP15のパフォーマンスモニタカウントイネーブルセットレジスタ(PMCNTENSET)
     138 *  の設定値
    156139 */
    157140#define CP15_PMCNTENSET_CCNTR_ENABLE    UINT_C(0x80000000)
    158141
    159142/*
    160  *  CP15の変換テーブルベースレジスタ(TTBR)の設定値
     143 *  CP15の変換テーブルベースレジスタ(TTBR)の設定値
    161144 */
    162145#define CP15_TTBR_RGN_SHAREABLE         UINT_C(0x00000002)
     
    175158
    176159/*
    177  *  MMU関連の定義(VMSA)
    178  */
    179 
    180 /*
    181  *  セクションとページのサイズ
     160 *  MMU関連の定義(VMSA)
     161 */
     162
     163/*
     164 *  セクションとページのサイズ
    182165 */
    183166#define ARM_SSECTION_SIZE                       UINT_C(0x1000000)
     
    187170
    188171/*
    189  *  セクションテーブルとページテーブルのサイズ
     172 *  セクションテーブルとページテーブルのサイズ
    190173 */
    191174#define ARM_SECTION_TABLE_SIZE          UINT_C(0x4000)
     
    198181
    199182/*
    200  *  第1レベルディスクリプタの設定値
    201  */
    202 #define ARM_MMU_DSCR1_FAULT                     0x00000U        /* フォルト */
    203 #define ARM_MMU_DSCR1_PAGETABLE         0x00001U        /* コアースページテーブル */
    204 #define ARM_MMU_DSCR1_SECTION           0x00002U        /* セクション */
    205 #define ARM_MMU_DSCR1_SSECTION          0x40002U        /* スーパーセクション */
    206 
    207 #define ARM_MMU_DSCR1_SHARED            0x10000U        /* プロセッサ間でå
    208 ±æœ‰ */
    209 #define ARM_MMU_DSCR1_TEX000            0x00000U        /* TEXビットが000 */
    210 #define ARM_MMU_DSCR1_TEX001            0x01000U        /* TEXビットが001 */
    211 #define ARM_MMU_DSCR1_TEX010            0x02000U        /* TEXビットが010 */
    212 #define ARM_MMU_DSCR1_TEX100            0x04000U        /* TEXビットが100 */
    213 #define ARM_MMU_DSCR1_AP01                      0x00400U        /* APビットが01 */
    214 #define ARM_MMU_DSCR1_AP10                      0x00800U        /* APビットが10 */
    215 #define ARM_MMU_DSCR1_AP11                      0x00c00U        /* APビットが11 */
    216 #define ARM_MMU_DSCR1_CB00                      0x00000U        /* Cビットが0,Bビットが0 */
    217 #define ARM_MMU_DSCR1_CB01                      0x00004U        /* Cビットが0,Bビットが1 */
    218 #define ARM_MMU_DSCR1_CB10                      0x00008U        /* Cビットが1,Bビットが0 */
    219 #define ARM_MMU_DSCR1_CB11                      0x0000cU        /* Cビットが1,Bビットが1 */
     183 *  第1レベルディスクリプタの設定値
     184 */
     185#define ARM_MMU_DSCR1_FAULT                     0x00000U        /* フォルト */
     186#define ARM_MMU_DSCR1_PAGETABLE         0x00001U        /* コアースページテーブル */
     187#define ARM_MMU_DSCR1_SECTION           0x00002U        /* セクション */
     188#define ARM_MMU_DSCR1_SSECTION          0x40002U        /* スーパーセクション */
     189
     190#define ARM_MMU_DSCR1_SHARED            0x10000U        /* プロセッサ間で共有 */
     191#define ARM_MMU_DSCR1_TEX000            0x00000U        /* TEXビットが000 */
     192#define ARM_MMU_DSCR1_TEX001            0x01000U        /* TEXビットが001 */
     193#define ARM_MMU_DSCR1_TEX010            0x02000U        /* TEXビットが010 */
     194#define ARM_MMU_DSCR1_TEX100            0x04000U        /* TEXビットが100 */
     195#define ARM_MMU_DSCR1_AP01                      0x00400U        /* APビットが01 */
     196#define ARM_MMU_DSCR1_AP10                      0x00800U        /* APビットが10 */
     197#define ARM_MMU_DSCR1_AP11                      0x00c00U        /* APビットが11 */
     198#define ARM_MMU_DSCR1_CB00                      0x00000U        /* Cビットが0,Bビットが0 */
     199#define ARM_MMU_DSCR1_CB01                      0x00004U        /* Cビットが0,Bビットが1 */
     200#define ARM_MMU_DSCR1_CB10                      0x00008U        /* Cビットが1,Bビットが0 */
     201#define ARM_MMU_DSCR1_CB11                      0x0000cU        /* Cビットが1,Bビットが1 */
    220202
    221203#if __TARGET_ARCH_ARM >= 6
    222 #define ARMV6_MMU_DSCR1_NONGLOBAL       0x20000U        /* グローバルでない */
    223 #define ARMV6_MMU_DSCR1_APX0            0x00000U        /* APXビットが0 */
    224 #define ARMV6_MMU_DSCR1_APX1            0x08000U        /* APXビットが1 */
    225 #define ARMV6_MMU_DSCR1_ECC                     0x00200U        /* ECCが有効(MPCore)*/
    226 #define ARMV6_MMU_DSCR1_NOEXEC          0x00010U        /* 実行不可 */
     204#define ARMV6_MMU_DSCR1_NONGLOBAL       0x20000U        /* グローバルでない */
     205#define ARMV6_MMU_DSCR1_APX0            0x00000U        /* APXビットが0 */
     206#define ARMV6_MMU_DSCR1_APX1            0x08000U        /* APXビットが1 */
     207#define ARMV6_MMU_DSCR1_ECC                     0x00200U        /* ECCが有効(MPCore)*/
     208#define ARMV6_MMU_DSCR1_NOEXEC          0x00010U        /* 実行不可 */
    227209#endif /* __TARGET_ARCH_ARM >= 6 */
    228210
    229211/*
    230  *  第2レベルディスクリプタの設定値
    231  */
    232 #define ARM_MMU_DSCR2_FAULT                     0x0000U         /* フォルト */
    233 #define ARM_MMU_DSCR2_LARGE                     0x0001U         /* ラージページ */
    234 #define ARM_MMU_DSCR2_SMALL                     0x0002U         /* スモールページ */
    235 
    236 #define ARM_MMU_DSCR2_CB00                      0x0000U         /* Cビットが0,Bビットが0 */
    237 #define ARM_MMU_DSCR2_CB01                      0x0004U         /* Cビットが0,Bビットが1 */
    238 #define ARM_MMU_DSCR2_CB10                      0x0008U         /* Cビットが1,Bビットが0 */
    239 #define ARM_MMU_DSCR2_CB11                      0x000cU         /* Cビットが1,Bビットが1 */
     212 *  第2レベルディスクリプタの設定値
     213 */
     214#define ARM_MMU_DSCR2_FAULT                     0x0000U         /* フォルト */
     215#define ARM_MMU_DSCR2_LARGE                     0x0001U         /* ラージページ */
     216#define ARM_MMU_DSCR2_SMALL                     0x0002U         /* スモールページ */
     217
     218#define ARM_MMU_DSCR2_CB00                      0x0000U         /* Cビットが0,Bビットが0 */
     219#define ARM_MMU_DSCR2_CB01                      0x0004U         /* Cビットが0,Bビットが1 */
     220#define ARM_MMU_DSCR2_CB10                      0x0008U         /* Cビットが1,Bビットが0 */
     221#define ARM_MMU_DSCR2_CB11                      0x000cU         /* Cビットが1,Bビットが1 */
    240222
    241223#if __TARGET_ARCH_ARM < 6
    242224
    243 #define ARMV5_MMU_DSCR2_AP01            0x0550U         /* AP[0-3]ビットが01 */
    244 #define ARMV5_MMU_DSCR2_AP10            0x0aa0U         /* AP[0-3]ビットが10 */
    245 #define ARMV5_MMU_DSCR2_AP11            0x0ff0U         /* AP[0-3]ビットが11 */
    246 
    247 /* ラージページのディスクリプタ用 */
    248 #define ARMV5_MMU_DSCR2L_TEX000         0x0000U         /* TEXビットが000 */
    249 #define ARMV5_MMU_DSCR2L_TEX001         0x1000U         /* TEXビットが001 */
    250 #define ARMV5_MMU_DSCR2L_TEX010         0x2000U         /* TEXビットが010 */
    251 #define ARMV5_MMU_DSCR2L_TEX100         0x4000U         /* TEXビットが100 */
     225#define ARMV5_MMU_DSCR2_AP01            0x0550U         /* AP[0-3]ビットが01 */
     226#define ARMV5_MMU_DSCR2_AP10            0x0aa0U         /* AP[0-3]ビットが10 */
     227#define ARMV5_MMU_DSCR2_AP11            0x0ff0U         /* AP[0-3]ビットが11 */
     228
     229/* ラージページのディスクリプタ用 */
     230#define ARMV5_MMU_DSCR2L_TEX000         0x0000U         /* TEXビットが000 */
     231#define ARMV5_MMU_DSCR2L_TEX001         0x1000U         /* TEXビットが001 */
     232#define ARMV5_MMU_DSCR2L_TEX010         0x2000U         /* TEXビットが010 */
     233#define ARMV5_MMU_DSCR2L_TEX100         0x4000U         /* TEXビットが100 */
    252234
    253235#else /* __TARGET_ARCH_ARM < 6 */
    254236
    255 #define ARMV6_MMU_DSCR2_NONGLOBAL       0x0800U         /* グローバルでない */
    256 #define ARMV6_MMU_DSCR2_SHARED          0x0400U         /* プロセッサ間でå
    257 ±æœ‰ */
    258 #define ARMV6_MMU_DSCR2_APX0            0x0000U         /* APXビットが0 */
    259 #define ARMV6_MMU_DSCR2_APX1            0x0200U         /* APXビットが1 */
    260 #define ARMV6_MMU_DSCR2_AP01            0x0010U         /* APビットが01 */
    261 #define ARMV6_MMU_DSCR2_AP10            0x0020U         /* APビットが10 */
    262 #define ARMV6_MMU_DSCR2_AP11            0x0030U         /* APビットが11 */
    263 
    264 /* ラージページのディスクリプタ用 */
    265 #define ARMV6_MMU_DSCR2L_TEX000         0x0000U         /* TEXビットが000 */
    266 #define ARMV6_MMU_DSCR2L_TEX001         0x1000U         /* TEXビットが001 */
    267 #define ARMV6_MMU_DSCR2L_TEX010         0x2000U         /* TEXビットが010 */
    268 #define ARMV6_MMU_DSCR2L_TEX100         0x4000U         /* TEXビットが100 */
    269 #define ARMV6_MMU_DSCR2L_NOEXEC         0x8000U         /* 実行不可 */
    270 
    271 /* スモールページのディスクリプタ用 */
    272 #define ARMV6_MMU_DSCR2S_TEX000         0x0000U         /* TEXビットが000 */
    273 #define ARMV6_MMU_DSCR2S_TEX001         0x0040U         /* TEXビットが001 */
    274 #define ARMV6_MMU_DSCR2S_TEX010         0x0080U         /* TEXビットが010 */
    275 #define ARMV6_MMU_DSCR2S_TEX100         0x0100U         /* TEXビットが100 */
    276 #define ARMV6_MMU_DSCR2S_NOEXEC         0x0001U         /* 実行不可 */
     237#define ARMV6_MMU_DSCR2_NONGLOBAL       0x0800U         /* グローバルでない */
     238#define ARMV6_MMU_DSCR2_SHARED          0x0400U         /* プロセッサ間で共有 */
     239#define ARMV6_MMU_DSCR2_APX0            0x0000U         /* APXビットが0 */
     240#define ARMV6_MMU_DSCR2_APX1            0x0200U         /* APXビットが1 */
     241#define ARMV6_MMU_DSCR2_AP01            0x0010U         /* APビットが01 */
     242#define ARMV6_MMU_DSCR2_AP10            0x0020U         /* APビットが10 */
     243#define ARMV6_MMU_DSCR2_AP11            0x0030U         /* APビットが11 */
     244
     245/* ラージページのディスクリプタ用 */
     246#define ARMV6_MMU_DSCR2L_TEX000         0x0000U         /* TEXビットが000 */
     247#define ARMV6_MMU_DSCR2L_TEX001         0x1000U         /* TEXビットが001 */
     248#define ARMV6_MMU_DSCR2L_TEX010         0x2000U         /* TEXビットが010 */
     249#define ARMV6_MMU_DSCR2L_TEX100         0x4000U         /* TEXビットが100 */
     250#define ARMV6_MMU_DSCR2L_NOEXEC         0x8000U         /* 実行不可 */
     251
     252/* スモールページのディスクリプタ用 */
     253#define ARMV6_MMU_DSCR2S_TEX000         0x0000U         /* TEXビットが000 */
     254#define ARMV6_MMU_DSCR2S_TEX001         0x0040U         /* TEXビットが001 */
     255#define ARMV6_MMU_DSCR2S_TEX010         0x0080U         /* TEXビットが010 */
     256#define ARMV6_MMU_DSCR2S_TEX100         0x0100U         /* TEXビットが100 */
     257#define ARMV6_MMU_DSCR2S_NOEXEC         0x0001U         /* 実行不可 */
    277258
    278259#endif /* __TARGET_ARCH_ARM < 6 */
     
    281262
    282263/*
    283  *      コプロセッサ15の操作関数
    284  */
    285 
    286 /*
    287  *  High exception vectorsを使うように設定
     264 *      コプロセッサ15の操作関数
     265 */
     266
     267/*
     268 *  High exception vectorsを使うように設定
    288269 */
    289270Inline void
     
    298279
    299280/*
    300  *  Low exception vectorsを使うように設定
     281 *  Low exception vectorsを使うように設定
    301282 */
    302283Inline void
     
    311292
    312293/*
    313  *  分岐予測をイネーブル
     294 *  分岐予測をイネーブル
    314295 */
    315296Inline void
     
    324305
    325306/*
    326  *  分岐予測をディスエーブル
     307 *  分岐予測をディスエーブル
    327308 */
    328309Inline void
     
    337318
    338319/*
    339  *  プロセッサ番号の取得
     320 *  プロセッサ番号の取得
    340321 *
    341  *  マルチプロセッサアフィニティレジスタを読んで,その下位8ビットを返す.
    342  *  ARMv6では,マルチプロセッサをサポートしている場合にのみ使用できる.
     322 *  マルチプロセッサアフィニティレジスタを読んで,その下位8ビットを返す.
     323 *  ARMv6では,マルチプロセッサをサポートしている場合にのみ使用できる.
    343324 */
    344325#if __TARGET_ARCH_ARM >= 6
     
    356337
    357338/*
    358  *  キャッシュの操作
    359  */
    360 
    361 /*
    362  *  命令/データキャッシュのイネーブル/ディスエーブル
     339 *  キャッシュの操作
     340 */
     341
     342/*
     343 *  命令/データキャッシュのイネーブル/ディスエーブル
    363344 */
    364345extern void arm_enable_icache(void);
     
    368349
    369350/*
    370  *  キャッシュのイネーブル
     351 *  キャッシュのイネーブル
    371352 */
    372353Inline void
     
    378359
    379360/*
    380  *  キャッシュのディスエーブル
     361 *  キャッシュのディスエーブル
    381362 */
    382363Inline void
     
    388369
    389370/*
    390  *  ARMv5におけるデータキャッシュの無効化/クリーン
     371 *  ARMv5におけるデータキャッシュの無効化/クリーン
    391372 */
    392373#if __TARGET_ARCH_ARM <= 5
     
    395376
    396377/*
    397  *  ARMv7におけるデータキャッシュの無効化/クリーン
     378 *  ARMv7におけるデータキャッシュの無効化/クリーン
    398379 */
    399380#if __TARGET_ARCH_ARM == 7
     
    403384
    404385/*
    405  *  データキャッシュと統合キャッシュの無効化
     386 *  データキャッシュと統合キャッシュの無効化
    406387 */
    407388Inline void
     
    417398
    418399/*
    419  *  データキャッシュと統合キャッシュのクリーンと無効化
     400 *  データキャッシュと統合キャッシュのクリーンと無効化
    420401 */
    421402Inline void
     
    433414
    434415/*
    435  *  命令キャッシュの無効化
     416 *  命令キャッシュの無効化
    436417 */
    437418Inline void
     
    442423
    443424/*
    444  *  分岐予測の無効化
     425 *  分岐予測の無効化
    445426 */
    446427Inline void
     
    453434
    454435/*
    455  *  TLBの無効化
     436 *  TLBの無効化
    456437 */
    457438Inline void
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/arm_insn.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;charset=UTF-8
    r270 r321  
    88 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    99 *
    10  *  上記著作権è€
    11 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    12  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    13  *  変・再é
    14 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    28  *      と.
    29  *    (a) 再é
    30 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    31 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    32  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    33  *    (b) 再é
    34 å¸ƒã®å½¢æ
    35 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    36  *        報告すること.
    37  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    38  *      害からも,上記著作権è€
    39 ãŠã‚ˆã³TOPPERSプロジェクトをå
    40 è²¬ã™ã‚‹ã“と.
    41  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    42  *      由に基づく請求からも,上記著作権è€
    43 ãŠã‚ˆã³TOPPERSプロジェクトを
    44  *      å
    45 è²¬ã™ã‚‹ã“と.
     10 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     11 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15 *      スコード中に含まれていること.
     16 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19 *      の無保証規定を掲載すること.
     20 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22 *      と.
     23 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     25 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26 *        報告すること.
     27 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31 *      免責すること.
    4632 *
    47  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    48 ãŠ
    49  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    50  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    51  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    52  *  の責任を負わない.
     33 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37 *  の責任を負わない.
    5338 *
    5439 *  $Id$
     
    5641
    5742/*
    58  *              ARMコアの特殊命令のインライン関数定義
    59  *
    60  *  このヘッダファイルは,arm.hからインクルードされる.arm.hから分離し
    61  *  ているのは,コンパイラによるインラインアセンブラの記述方法の違いを
    62  *  吸収するために,このファイルのみを置き換えればよいようにするためで
    63  *  ある.
     43 *              ARMコアの特殊命令のインライン関数定義
     44 *
     45 *  このヘッダファイルは,arm.hからインクルードされる.arm.hから分離し
     46 *  ているのは,コンパイラによるインラインアセンブラの記述方法の違いを
     47 *  吸収するために,このファイルのみを置き換えればよいようにするためで
     48 *  ある.
    6449 */
    6550
     
    7055
    7156/*
    72  *  CLZ(Count Leading Zero)命令
     57 *  CLZ(Count Leading Zero)命令
    7358 */
    7459#if __TARGET_ARCH_ARM >= 6
     
    8671
    8772/*
    88  *  メモリが変更されることをコンパイラに伝えるためのマクロ
     73 *  メモリが変更されることをコンパイラに伝えるためのマクロ
    8974 */
    9075#define ARM_MEMORY_CHANGED      Asm("":::"memory")
    9176
    9277/*
    93  *  ステータスレジスタの操作関数
     78 *  ステータスレジスタの操作関数
    9479 */
    9580#ifndef __thumb__
    9681
    9782/*
    98  *  ステータスレジスタ(CPSR)の現在値の読出し
     83 *  ステータスレジスタ(CPSR)の現在値の読出し
    9984 */
    10085Inline uint32_t
     
    10893
    10994/*
    110  *  ステータスレジスタ(CPSR)の現在値の変更
     95 *  ステータスレジスタ(CPSR)の現在値の変更
    11196 */
    11297Inline void
     
    118103#else /* __thumb__ */
    119104/*
    120  *  Thumbモードではmrs/msr命令が使用できないため,関数として実現して,
    121  *  ARMモードに移行して実行する.
    122  */
    123 
    124 /*
    125  *  ステータスレジスタ(CPSR)の現在値の読出し
     105 *  Thumbモードではmrs/msr命令が使用できないため,関数として実現して,
     106 *  ARMモードに移行して実行する.
     107 */
     108
     109/*
     110 *  ステータスレジスタ(CPSR)の現在値の読出し
    126111 */
    127112extern uint32_t current_cpsr(void);
    128113
    129114/*
    130  *  ステータスレジスタ(CPSR)の現在値の変更
     115 *  ステータスレジスタ(CPSR)の現在値の変更
    131116 */
    132117extern void set_cpsr(uint32_t cpsr);
     
    135120
    136121/*
    137  *  割込み禁止/許可関数
    138  *
    139  *  ARMv6から追加されたシステム状æ
    140 ‹ã‚’変更する命令を使った割込み禁止/許
    141  *  可のための関数.
    142  */
    143 #if __TARGET_ARCH_ARM >= 6
    144 
    145 /*
    146  *  IRQの禁止
     122 *  割込み禁止/許可関数
     123 *
     124 *  ARMv6から追加されたシステム状態を変更する命令を使った割込み禁止/許
     125 *  可のための関数.
     126 */
     127#if __TARGET_ARCH_ARM >= 6
     128
     129/*
     130 *  IRQの禁止
    147131 */
    148132Inline void
     
    153137
    154138/*
    155  *  IRQの許可
     139 *  IRQの許可
    156140 */
    157141Inline void
     
    162146
    163147/*
    164  *  FIQの禁止
     148 *  FIQの禁止
    165149 */
    166150Inline void
     
    171155
    172156/*
    173  *  FIQの許可
     157 *  FIQの許可
    174158 */
    175159Inline void
     
    180164
    181165/*
    182  *  FIQとIRQの禁止
     166 *  FIQとIRQの禁止
    183167 */
    184168Inline void
     
    189173
    190174/*
    191  *  FIQとIRQの許可
     175 *  FIQとIRQの許可
    192176 */
    193177Inline void
     
    200184
    201185/*
    202  *  CP15のIDレジスタ操作マクロ
    203  */
    204 
    205 /* メインIDレジスタ */
     186 *  CP15のIDレジスタ操作マクロ
     187 */
     188
     189/* メインIDレジスタ */
    206190#define CP15_READ_MIDR(reg)             Asm("mrc p15, 0, %0, c0, c0, 0":"=r"(reg))
    207191
    208 /* マルチプロセッサアフィニティレジスタ(ARMv6以降)*/
     192/* マルチプロセッサアフィニティレジスタ(ARMv6以降)*/
    209193#if __TARGET_ARCH_ARM >= 6
    210194#define CP15_READ_MPIDR(reg)    Asm("mrc p15, 0, %0, c0, c0, 5":"=r"(reg))
    211195#endif /* __TARGET_ARCH_ARM >= 6 */
    212196
    213 /* キャッシュタイプレジスタ */
     197/* キャッシュタイプレジスタ */
    214198#define CP15_READ_CTR(reg)              Asm("mrc p15, 0, %0, c0, c0, 1":"=r"(reg))
    215199
    216200#if __TARGET_ARCH_ARM == 7
    217 /* キャッシュレベルIDレジスタ(ARMv7) */
     201/* キャッシュレベルIDレジスタ(ARMv7) */
    218202#define CP15_READ_CLIDR(reg)    Asm("mrc p15, 1, %0, c0, c0, 1":"=r"(reg))
    219203
    220 /* キャッシュサイズ選択レジスタ(ARMv7)*/
     204/* キャッシュサイズ選択レジスタ(ARMv7)*/
    221205#define CP15_WRITE_CSSELR(reg)  Asm("mcr p15, 2, %0, c0, c0, 0"::"r"(reg))
    222206
    223 /* キャッシュサイズIDレジスタ(ARMv7)*/
     207/* キャッシュサイズIDレジスタ(ARMv7)*/
    224208#define CP15_READ_CCSIDR(reg)   Asm("mrc p15, 1, %0, c0, c0, 0":"=r"(reg))
    225209#endif /* __TARGET_ARCH_ARM == 7 */
    226210
    227211/*
    228  *  CP15のシステム制御レジスタ操作マクロ
    229  */
    230 
    231 /* システム制御レジスタ */
     212 *  CP15のシステム制御レジスタ操作マクロ
     213 */
     214
     215/* システム制御レジスタ */
    232216#define CP15_READ_SCTLR(reg)    Asm("mrc p15, 0, %0, c1, c0, 0":"=r"(reg))
    233217#define CP15_WRITE_SCTLR(reg)   Asm("mcr p15, 0, %0, c1, c0, 0"::"r"(reg))
    234218
    235 /* 補助制御レジスタ(機能はチップ依存)*/
     219/* 補助制御レジスタ(機能はチップ依存)*/
    236220#define CP15_READ_ACTLR(reg)    Asm("mrc p15, 0, %0, c1, c0, 1":"=r"(reg))
    237221#define CP15_WRITE_ACTLR(reg)   Asm("mcr p15, 0, %0, c1, c0, 1"::"r"(reg))
    238222
    239223/*
    240  *  CP15によるキャッシュ操作マクロ
    241  */
    242 
    243 /* 命令キャッシュå
    244 ¨ä½“の無効化 */
     224 *  CP15によるキャッシュ操作マクロ
     225 */
     226
     227/* 命令キャッシュ全体の無効化 */
    245228#define CP15_INVALIDATE_ICACHE() \
    246229                                                                Asm("mcr p15, 0, %0, c7, c5, 0"::"r"(0))
    247230
    248 /* 分岐予測å
    249 ¨ä½“の無効化 */
     231/* 分岐予測全体の無効化 */
    250232#define CP15_INVALIDATE_BP()    Asm("mcr p15, 0, %0, c7, c5, 6"::"r"(0))
    251233
    252 /* データキャッシュå
    253 ¨ä½“の無効化(ARMv6以前)*/
     234/* データキャッシュ全体の無効化(ARMv6以前)*/
    254235#if __TARGET_ARCH_ARM <= 6
    255236#define CP15_INVALIDATE_DCACHE() Asm("mcr p15, 0, %0, c7, c6, 0"::"r"(0))
    256237#endif /* __TARGET_ARCH_ARM <= 6 */
    257238
    258 /* 統合キャッシュå
    259 ¨ä½“の無効化(ARMv6以前)*/
     239/* 統合キャッシュ全体の無効化(ARMv6以前)*/
    260240#if __TARGET_ARCH_ARM <= 6
    261241#define CP15_INVALIDATE_UCACHE() Asm("mcr p15, 0, %0, c7, c7, 0"::"r"(0))
    262242#endif /* __TARGET_ARCH_ARM <= 6 */
    263243
    264 /* データキャッシュå
    265 ¨ä½“のクリーンと無効化(ARMv5のみ)*/
     244/* データキャッシュ全体のクリーンと無効化(ARMv5のみ)*/
    266245#if __TARGET_ARCH_ARM <= 5
    267246#define ARMV5_CLEAN_AND_INVALIDATE_DCACHE() \
     
    269248#endif /* __TARGET_ARCH_ARM <= 5 */
    270249
    271 /* データキャッシュå
    272 ¨ä½“のクリーンと無効化(ARMv6のみ)*/
     250/* データキャッシュ全体のクリーンと無効化(ARMv6のみ)*/
    273251#if __TARGET_ARCH_ARM == 6
    274252#define CP15_CLEAN_AND_INVALIDATE_DCACHE() \
     
    276254#endif /* __TARGET_ARCH_ARM == 6 */
    277255
    278 /* 統合キャッシュå
    279 ¨ä½“のクリーンと無効化(ARMv6のみ)*/
     256/* 統合キャッシュ全体のクリーンと無効化(ARMv6のみ)*/
    280257#if __TARGET_ARCH_ARM == 6
    281258#define CP15_CLEAN_AND_INVALIDATE_UCACHE() \
     
    283260#endif /* __TARGET_ARCH_ARM == 6 */
    284261
    285 /* データキャッシュのセット/ウェイ単位の無効化 */
     262/* データキャッシュのセット/ウェイ単位の無効化 */
    286263#define CP15_WRITE_DCISW(reg)   Asm("mcr p15, 0, %0, c7, c6, 2"::"r"(reg))
    287264
    288 /* データキャッシュのセット/ウェイ単位のクリーンと無効化 */
     265/* データキャッシュのセット/ウェイ単位のクリーンと無効化 */
    289266#define CP15_WRITE_DCCISW(reg)  Asm("mcr p15, 0, %0, c7, c14, 2"::"r"(reg))
    290267
    291268/*
    292  *  CP15のフォールト状æ
    293 ‹ï¼ã‚¢ãƒ‰ãƒ¬ã‚¹ã®æ“ä½œãƒžã‚¯ãƒ­
     269 *  CP15のフォールト状態/アドレスの操作マクロ
    294270 */
    295271#if __TARGET_ARCH_ARM >= 6
     
    304280
    305281/*
    306  *  CP15によるMMUの操作マクロ(VMSA)
    307  */
    308 
    309 /* 変換テーブルベース制御レジスタ(ARMv6以降)*/
     282 *  CP15によるMMUの操作マクロ(VMSA)
     283 */
     284
     285/* 変換テーブルベース制御レジスタ(ARMv6以降)*/
    310286#if __TARGET_ARCH_ARM >= 6
    311287#define CP15_WRITE_TTBCR(reg)   Asm("mcr p15, 0, %0, c2, c0, 2"::"r"(reg))
    312288#endif /* __TARGET_ARCH_ARM >= 6 */
    313289
    314 /* 変換テーブルベースレジスタ0 */
     290/* 変換テーブルベースレジスタ0 */
    315291#define CP15_READ_TTBR0(reg)    Asm("mrc p15, 0, %0, c2, c0, 0":"=r"(reg))
    316292#define CP15_WRITE_TTBR0(reg)   Asm("mcr p15, 0, %0, c2, c0, 0"::"r"(reg))
    317293
    318 /* ドメインアクセス制御レジスタ */
     294/* ドメインアクセス制御レジスタ */
    319295#define CP15_WRITE_DACR(reg)    Asm("mcr p15, 0, %0, c3, c0, 0":: "r"(reg))
    320296
    321 /* コンテキストIDレジスタ(ARMv6以降)*/
     297/* コンテキストIDレジスタ(ARMv6以降)*/
    322298#if __TARGET_ARCH_ARM >= 6
    323299#define CP15_WRITE_CONTEXTIDR(reg) Asm("mcr p15, 0, %0, c13, c0, 1" ::"r"(reg))
     
    325301
    326302/*
    327  *  CP15によるTLB操作マクロ(VMSA)
    328  */
    329 
    330 /* TLBå
    331 ¨ä½“の無効化 */
     303 *  CP15によるTLB操作マクロ(VMSA)
     304 */
     305
     306/* TLB全体の無効化 */
    332307#define CP15_INVALIDATE_TLB()   Asm("mcr p15, 0, %0, c8, c7, 0"::"r"(0))
    333308
    334309/*
    335  *  CP15のパフォーマンスモニタ操作マクロ(ARMv7のみ)
     310 *  CP15のパフォーマンスモニタ操作マクロ(ARMv7のみ)
    336311 */
    337312#if __TARGET_ARCH_ARM == 7
    338313
    339 /* パフォーマンスモニタ制御レジスタ */
     314/* パフォーマンスモニタ制御レジスタ */
    340315#define CP15_READ_PMCR(reg)             Asm("mrc p15, 0, %0, c9, c12, 0":"=r"(reg))
    341316#define CP15_WRITE_PMCR(reg)    Asm("mcr p15, 0, %0, c9, c12, 0"::"r"(reg))
    342317
    343 /* パフォーマンスモニタカウントイネーブルセットレジスタ */
     318/* パフォーマンスモニタカウントイネーブルセットレジスタ */
    344319#define CP15_READ_PMCNTENSET(reg)  Asm("mrc p15, 0, %0, c9, c12, 1":"=r"(reg))
    345320#define CP15_WRITE_PMCNTENSET(reg) Asm("mcr p15, 0, %0, c9, c12, 1"::"r"(reg))
    346321
    347 /* パフォーマンスモニタカウンタサイクルレジスタ */
     322/* パフォーマンスモニタカウンタサイクルレジスタ */
    348323#define CP15_READ_PMCCNTR(reg)  Asm("mrc p15, 0, %0, c9, c13, 0":"=r"(reg))
    349324#define CP15_WRITE_PMCCNTR(reg) Asm("mcr p15, 0, %0, c9, c13, 0"::"r"(reg))
     
    352327
    353328/*
    354  *  CP15によるメモリバリア操作マクロ
     329 *  CP15によるメモリバリア操作マクロ
    355330 */
    356331#define CP15_INST_SYNC_BARRIER() \
     
    362337
    363338/*
    364  *  メモリバリア
    365  *
    366  *  ARMv6とARMv7が持つ3つのメモリバリア機能を使用するための関数.メモリ
    367  *  バリアは,ARMv7では専用命令,ARMv6ではCP15への書込みで実現される.
    368  *  ARMv7のメモリバリア命令は,同期を取る範囲を指定できるが,以下の関数
    369  *  では最大範囲(システムå
    370 ¨ä½“,リード/ライトの両方)で同期を取る.
    371  *
    372  *  ARMv5以前では,メモリバリア機能は実è£
    373 ä¾å­˜ã§ã‚るため,それぞれ,
    374  *  DATA_MEMORY_BARRIER,DATA_SYNC_BARRIER,INST_SYNC_BARRIERを定義する
    375  *  ことによって,関数のå†
    376 å®¹ã‚’å
    377 ¥ã‚Œæ›ãˆã‚‰ã‚Œã‚‹ã‚ˆã†ã«ã—ている.
    378  */
    379 
    380 /*
    381  *  データメモリバリア
    382  *
    383  *  このバリアの前後で,メモリアクセスの順序がå
    384 ¥ã‚Œæ›ã‚ã‚‰ãªã„ようにする.
    385  *  マルチコア(厳密にはマルチマスタ)での使用を想定した命令.
     339 *  メモリバリア
     340 *
     341 *  ARMv6とARMv7が持つ3つのメモリバリア機能を使用するための関数.メモリ
     342 *  バリアは,ARMv7では専用命令,ARMv6ではCP15への書込みで実現される.
     343 *  ARMv7のメモリバリア命令は,同期を取る範囲を指定できるが,以下の関数
     344 *  では最大範囲(システム全体,リード/ライトの両方)で同期を取る.
     345 *
     346 *  ARMv5以前では,メモリバリア機能は実装依存であるため,それぞれ,
     347 *  DATA_MEMORY_BARRIER,DATA_SYNC_BARRIER,INST_SYNC_BARRIERを定義する
     348 *  ことによって,関数の内容を入れ換えられるようにしている.
     349 */
     350
     351/*
     352 *  データメモリバリア
     353 *
     354 *  このバリアの前後で,メモリアクセスの順序が入れ換わらないようにする.
     355 *  マルチコア(厳密にはマルチマスタ)での使用を想定した命令.
    386356 */
    387357Inline void
     
    398368
    399369/*
    400  *  データ同期バリア
    401  *
    402  *  å
    403 ˆè¡Œã™ã‚‹ãƒ¡ãƒ¢ãƒªã‚¢ã‚¯ã‚»ã‚¹ãŒå®Œäº†ã™ã‚‹ã®ã‚’å¾
    404 ã¤ï¼Žãƒ¡ãƒ¢ãƒªã‚¢ã‚¯ã‚»ã‚¹ãŒå‰¯ä½œç”¨ã‚’
    405  *  持つ時に,その副作用が起こるのをå¾
    406 ã¤ãŸã‚ã®ä½¿ç”¨ã‚’想定した命令.
     370 *  データ同期バリア
     371 *
     372 *  先行するメモリアクセスが完了するのを待つ.メモリアクセスが副作用を
     373 *  持つ時に,その副作用が起こるのを待つための使用を想定した命令.
    407374 */
    408375Inline void
     
    419386
    420387/*
    421  *  命令同期バリア
    422  *
    423  *  プログラムが書き換えられた(または,システム状æ
    424 ‹ã®å¤‰åŒ–により実行す
    425  *  べきプログラムが変わった)時に,パイプラインをフラッシュするなど,
    426  *  新しいプログラムを読み込むようにする.ARMv6では,プリフェッチフラッ
    427  *  シュと呼ばれている.
     388 *  命令同期バリア
     389 *
     390 *  プログラムが書き換えられた(または,システム状態の変化により実行す
     391 *  べきプログラムが変わった)時に,パイプラインをフラッシュするなど,
     392 *  新しいプログラムを読み込むようにする.ARMv6では,プリフェッチフラッ
     393 *  シュと呼ばれている.
    428394 */
    429395Inline void
     
    440406
    441407/*
    442  *  CP15のセキュリティ拡張レジスタ操作マクロ(ARMv7のみ)
     408 *  CP15のセキュリティ拡張レジスタ操作マクロ(ARMv7のみ)
    443409 */
    444410#if __TARGET_ARCH_ARM == 7
    445411
    446 /* ベクタベースアドレスレジスタ */
     412/* ベクタベースアドレスレジスタ */
    447413#define CP15_READ_VBAR(reg)             Asm("mrc p15, 0, %0, c12, c0, 0":"=r"(reg))
    448414#define CP15_WRITE_VBAR(reg)    Asm("mcr p15, 0, %0, c12, c0, 0"::"r"(reg))
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_cfg1_out.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;charset=UTF-8
    r270 r321  
    11/*
    2  *              cfg1_out.cのリンクにå¿
    3 è¦ãªã‚¹ã‚¿ãƒ–の定義
     2 *              cfg1_out.cのリンクに必要なスタブの定義
    43 *
    54 *  $Id$
     
    76
    87/*
    9  *  cfg1_out.cのリンクにå¿
    10 è¦ãªå®šç¾©
     8 *  cfg1_out.cのリンクに必要な定義
    119 */
    1210
     
    1715
    1816/*
    19  *  offset.hを生成するための定義
     17 *  offset.hを生成するための定義
    2018 */
    2119const uint8_t   MAGIC_1 = 0x12;
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_check.trb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    11# -*- coding: utf-8 -*-
    22#
    3 #               ãƒ‘ス3の生成スクリプトのコア依存部(ARM用)
     3#               パス3の生成スクリプトのコア依存部(ARM用)
    44#
    5 #  $Id: core_check.trb 730 2016-04-03 02:04:52Z ertl-hiro $
     5#  $Id$
    66#
    77
    88#
    9 ã‚¿ãƒ¼ã‚²ãƒƒãƒˆéžä¾å­˜éƒ¨ã®ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰
     9ターゲット非依存部のインクルード
    1010#
    1111IncludeTrb("kernel/kernel_check.trb")
    1212
    1313#
    14 å‰²è¾¼ã¿ãƒãƒ³ãƒ‰ãƒ©ãƒ†ãƒ¼ãƒ–ルに関するチェック
     14割込みハンドラテーブルに関するチェック
    1515#
    16 # DEF_INHで登録した割込みハンドラのみチェックする.逆に言うと,コンフィ
    17 # ギュレータで生成した割込みハンドラや,default_int_handlerのチェックは
    18 # 行わない.
     16# DEF_INHで登録した割込みハンドラのみチェックする.逆に言うと,コンフィ
     17# ギュレータで生成した割込みハンドラや,default_int_handlerのチェックは
     18# 行わない.
    1919#
    2020inhTable = SYMBOL("_kernel_inh_table")
     
    2323  inthdr = PEEK(inhTable + offset + params[:inhno] * $sizeof_FP, $sizeof_FP)
    2424
    25   #     å‰²è¾¼ã¿ãƒãƒ³ãƒ‰ãƒ©ã®å
    26 ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯ï¼»NGKI3056ï¼½
     25  #     割込みハンドラの先頭番地のチェック[NGKI3056]
    2726  if (inthdr & ($CHECK_FUNC_ALIGN - 1)) != 0
    2827    error_wrong_id("E_PAR", params, :inthdr, :inhno, "not aligned")
     
    3433
    3534#
    36 #  CPU例外ハンドラテーブルに関するチェック
     35#  CPU例外ハンドラテーブルに関するチェック
    3736#
    38 # DEF_EXCで登録したCPU例外ハンドラのみチェックする.逆に言うと,
    39 # default_exc_handlerのチェックは行わない.
     37# DEF_EXCで登録したCPU例外ハンドラのみチェックする.逆に言うと,
     38# default_exc_handlerのチェックは行わない.
    4039#
    4140excTable = SYMBOL("_kernel_exc_table")
     
    4342  exchdr = PEEK(excTable + params[:excno] * $sizeof_FP, $sizeof_FP)
    4443
    45   # CPU例外ハンドラのå
    46 ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯ï¼»NGKI3135ï¼½
     44  # CPU例外ハンドラの先頭番地のチェック[NGKI3135]
    4745  if (exchdr & ($CHECK_FUNC_ALIGN - 1)) != 0
    4846    error_wrong_id("E_PAR", params, :exchdr, :excno, "not aligned")
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_kernel.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;charset=UTF-8
    r270 r321  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     11 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     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 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     32 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              kernel.hのコア依存部(ARM用)
     44 *              kernel.hのコア依存部(ARM用)
    6045 *
    61  *  このヘッダファイルは,target_kernel.h(または,そこからインクルード
    62  *  されるファイル)のみからインクルードされる.他のファイルから直接イ
    63  *  ンクルードしてはならない.
     46 *  このヘッダファイルは,target_kernel.h(または,そこからインクルード
     47 *  されるファイル)のみからインクルードされる.他のファイルから直接イ
     48 *  ンクルードしてはならない.
    6449 */
    6550
     
    6853
    6954/*
    70  *  スタックの型
     55 *  スタックの型
    7156 *
    72  *  ARMでは,スタックを8バイト境界にé
    73 ç½®ã™ã‚‹å¿
    74 è¦ãŒã‚る.
     57 *  ARMでは,スタックを8バイト境界に配置する必要がある.
    7558 */
    7659#define TOPPERS_STK_T   long long
    7760
    7861/*
    79  *  CPU例外ハンドラ番号の数
     62 *  CPU例外ハンドラ番号の数
    8063 */ 
    8164#define TNUM_EXCNO              6
    8265
    8366/*
    84  *  CPU例外ハンドラ番号の定義
     67 *  CPU例外ハンドラ番号の定義
    8568 */
    8669#define EXCNO_UNDEF             0
     
    9477
    9578/*
    96  *  CPU例外のæƒ
    97 å ±ã‚’記憶しているメモリ領域の構造
     79 *  CPU例外の情報を記憶しているメモリ領域の構造
    9880 */
    9981#if __TARGET_ARCH_ARM < 6
    10082
    10183typedef struct t_excinf {
    102         uint32_t        nest_count;                             /* 例外ネストカウント */
    103         uint32_t        intpri;                                 /* 割込み優å
    104 ˆåº¦ãƒžã‚¹ã‚¯ */
    105         uint32_t        cpsr;                                   /* CPU例外発生時のCPSR */
     84        uint32_t        nest_count;                             /* 例外ネストカウント */
     85        uint32_t        intpri;                                 /* 割込み優先度マスク */
     86        uint32_t        cpsr;                                   /* CPU例外発生時のCPSR */
    10687        uint32_t        r0;
    10788        uint32_t        r1;
     
    11293        uint32_t        r12;
    11394        uint32_t        lr;
    114         uint32_t        pc;                                             /* 戻り番地 */
     95        uint32_t        pc;                                             /* 戻り番地 */
    11596} T_EXCINF;
    11697
     
    11899
    119100typedef struct t_excinf {
    120         uint32_t        nest_count;                             /* 例外ネストカウント */
    121         uint32_t        intpri;                                 /* 割込み優å
    122 ˆåº¦ãƒžã‚¹ã‚¯ */
     101        uint32_t        nest_count;                             /* 例外ネストカウント */
     102        uint32_t        intpri;                                 /* 割込み優先度マスク */
    123103        uint32_t        r0;
    124104        uint32_t        r1;
     
    129109        uint32_t        r12;
    130110        uint32_t        lr;
    131         uint32_t        pc;                                             /* 戻り番地 */
    132         uint32_t        cpsr;                                   /* CPU例外発生時のCPSR */
     111        uint32_t        pc;                                             /* 戻り番地 */
     112        uint32_t        cpsr;                                   /* CPU例外発生時のCPSR */
    133113} T_EXCINF;
    134114
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_kernel.trb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    99#               Graduate School of Information Science, Nagoya Univ., JAPAN
    1010#
    11 #   ä¸Šè¨˜è‘—作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    14 #   å¤‰ãƒ»å†é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    18 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    19 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23 #       è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    26 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27 #       ç”¨ã§ããªã„形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29 #       ã¨ï¼Ž
    30 #     (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    34 #     (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37 #         å ±å‘Šã™ã‚‹ã“と.
    38 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    43 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45 #       å
    46 è²¬ã™ã‚‹ã“と.
     11#   上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     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#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     32#       免責すること.
    4733#
    48 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    49 ãŠ
    50 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    52 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    53 #   ã®è²¬ä»»ã‚’負わない.
     34#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38#   の責任を負わない.
    5439#
    55 #   $Id: core_kernel.trb 662 2016-02-27 02:33:51Z ertl-hiro $
     40#   $Id$
    5641#
    5742
    5843#
    59 #               ãƒ‘ス2の生成スクリプトのコア依存部(ARM用)
     44#               パス2の生成スクリプトのコア依存部(ARM用)
    6045#
    6146
    6247#
    63 æœ‰åŠ¹ãªCPU例外ハンドラ番号
     48有効なCPU例外ハンドラ番号
    6449#
    6550$EXCNO_VALID = [ 0, 1, 2, 3, 4, 5 ]
    6651
    6752#
    68 #  DEF_EXCで使用できるCPU例外ハンドラ番号
     53#  DEF_EXCで使用できるCPU例外ハンドラ番号
    6954#
    7055$EXCNO_DEFEXC_VALID = [ 0, 1, 2, 3, 5 ]
    7156
    7257#
    73 ã‚¿ãƒ¼ã‚²ãƒƒãƒˆéžä¾å­˜éƒ¨ã®ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰
     58ターゲット非依存部のインクルード
    7459#
    7560IncludeTrb("kernel/kernel.trb")
    7661
    7762#
    78 å‰²è¾¼ã¿ãƒãƒ³ãƒ‰ãƒ©ãƒ†ãƒ¼ãƒ–ル
     63割込みハンドラテーブル
    7964#
    8065$kernelCfgC.comment_header("Interrupt Handler Table")
     
    9479
    9580#
    96 å‰²è¾¼ã¿è¦æ±‚ライン設定テーブル
     81割込み要求ライン設定テーブル
    9782#
    9883if $USE_INTCFG_TABLE
     
    11499
    115100#
    116 #  CPU例外ハンドラテーブル
     101#  CPU例外ハンドラテーブル
    117102#
    118103$kernelCfgC.comment_header("CPU Exception Handler Table")
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_kernel_impl.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc;charset=UTF-8
    r270 r321  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     11 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     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 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     32 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              カーネルのコア依存部(ARM用)
     44 *              カーネルのコア依存部(ARM用)
    6045 */
    6146
     
    6651
    6752/*
    68  *  コンテキスト参ç
    69 §ã®ãŸã‚ã®å¤‰æ•°
    70  */
    71 uint32_t        excpt_nest_count;               /* 例外ネストカウント */
    72 
    73 /*
    74  *  MMU関連の操作(VMSA)
     53 *  コンテキスト参照のための変数
     54 */
     55uint32_t        excpt_nest_count;               /* 例外ネストカウント */
     56
     57/*
     58 *  MMU関連の操作(VMSA)
    7559 */
    7660#ifdef USE_ARM_MMU
    7761
    78 #define CP15_DACR_D0_CLIENT     0x01U   /* 変換テーブルに従いドメイン0にアクセス */
    79 #define DEFAULT_ASID            1               /* 使用するASID */
    80 
    81 /*
    82  *  セクションテーブル
     62#define CP15_DACR_D0_CLIENT     0x01U   /* 変換テーブルに従いドメイン0にアクセス */
     63#define DEFAULT_ASID            1               /* 使用するASID */
     64
     65/*
     66 *  セクションテーブル
    8367 */
    8468static uint32_t section_table[ARM_SECTION_TABLE_ENTRY]
     
    8670
    8771/*
    88  *  MMUのセクションテーブルエントリの設定
     72 *  MMUのセクションテーブルエントリの設定
    8973 */
    9074Inline void
     
    121105
    122106/*
    123  *  MMUの初期化
     107 *  MMUの初期化
    124108 */
    125109void
     
    130114
    131115        /*
    132          *  MMUのセクションテーブルの設定
     116         *  MMUのセクションテーブルの設定
    133117         */
    134118        for (i = 0; i < ARM_SECTION_TABLE_ENTRY; i++) {
     
    140124
    141125        /*
    142          *  TTBR0を用いるように指定(ARMv6以降)
     126         *  TTBR0を用いるように指定(ARMv6以降)
    143127         */
    144128#if __TARGET_ARCH_ARM >= 6
     
    147131
    148132        /*
    149          *  変換テーブルとして,section_tableを使用する.
     133         *  変換テーブルとして,section_tableを使用する.
    150134         */
    151135        reg = ((uint32_t) &(section_table[0])) | TTBR_CONFIG;
     
    153137
    154138        /*
    155          * ドメインアクセス制御の設定
     139         * ドメインアクセス制御の設定
    156140         */
    157141        CP15_WRITE_DACR(CP15_DACR_D0_CLIENT);
    158142
    159143        /*
    160          *  ASIDの設定
     144         *  ASIDの設定
    161145         */
    162146#if __TARGET_ARCH_ARM >= 6
     
    165149
    166150        /*
    167          *  TLBå
    168 ¨ä½“の無効化
     151         *  TLB全体の無効化
    169152         */
    170153        arm_invalidate_tlb();
    171154
    172155        /*
    173          *  MMUを有効にする.ARMv6では,拡張ページテーブル設定を使う(サブ
    174          *  ページは使わない)ように設定する.
     156         *  MMUを有効にする.ARMv6では,拡張ページテーブル設定を使う(サブ
     157         *  ページは使わない)ように設定する.
    175158         */
    176159        CP15_READ_SCTLR(reg);
     
    187170
    188171/*
    189  *  コア依存の初期化
     172 *  コア依存の初期化
    190173 */
    191174void
     
    193176{
    194177        /*
    195          *  カーネル起動時は非タスクコンテキストとして動作させるために,例外
    196          *  のネスト回数を1に初期化する.
     178         *  カーネル起動時は非タスクコンテキストとして動作させるために,例外
     179         *  のネスト回数を1に初期化する.
    197180         */
    198181        excpt_nest_count = 1U;
    199182
    200183        /*
    201          *  MMUを有効に
     184         *  MMUを有効に
    202185         */
    203186#ifdef USE_ARM_MMU
     
    206189
    207190        /*
    208          *  パフォーマンスモニタの初期化
     191         *  パフォーマンスモニタの初期化
    209192         */
    210193#if defined(USE_ARM_PM_HIST) && __TARGET_ARCH_ARM == 7
     
    214197
    215198/*
    216  *  コア依存の終了処理
     199 *  コア依存の終了処理
    217200 */
    218201void
     
    222205
    223206/*
    224  *  CPU例外の発生状況のログ出力
     207 *  CPU例外の発生状況のログ出力
    225208 */
    226209#ifndef OMIT_XLOG_SYS
    227210
    228211/*
    229  *  CPU例外ハンドラの中から,CPU例外æƒ
    230 å ±ãƒã‚¤ãƒ³ã‚¿ï¼ˆp_excinf)を引数とし
    231  *  て呼び出すことで,CPU例外の発生状況をシステムログに出力する.
     212 *  CPU例外ハンドラの中から,CPU例外情報ポインタ(p_excinf)を引数とし
     213 *  て呼び出すことで,CPU例外の発生状況をシステムログに出力する.
    232214 */
    233215void
     
    246228
    247229/*
    248  *  プリフェッチ/データアボートが発生した状況(状æ
    249 ‹ã¨ã‚¢ãƒ‰ãƒ¬ã‚¹ï¼‰ã‚’シス
    250  *  テムログに出力する.
     230 *  プリフェッチ/データアボートが発生した状況(状態とアドレス)をシス
     231 *  テムログに出力する.
    251232 */
    252233void
     
    282263
    283264/*
    284  *  未定義の割込みがå
    285 ¥ã£ãŸå ´åˆã®å‡¦ç†
     265 *  未定義の割込みが入った場合の処理
    286266 */
    287267#ifndef OMIT_DEFAULT_INT_HANDLER
     
    297277
    298278/*
    299  *  未定義の例外がå
    300 ¥ã£ãŸå ´åˆã®å‡¦ç†
     279 *  未定義の例外が入った場合の処理
    301280 */
    302281#ifndef OMIT_DEFAULT_EXC_HANDLER
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_kernel_impl.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;charset=UTF-8
    r270 r321  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
    47  *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     11 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     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 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     32 *      免責すること.
     33 *
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              kernel_impl.hのコア依存部(ARM用)
    60  *
    61  *  このヘッダファイルは,target_kernel_impl.h(または,そこからインク
    62  *  ルードされるファイル)のみからインクルードされる.他のファイルから
    63  *  直接インクルードしてはならない.
     44 *              kernel_impl.hのコア依存部(ARM用)
     45 *
     46 *  このヘッダファイルは,target_kernel_impl.h(または,そこからインク
     47 *  ルードされるファイル)のみからインクルードされる.他のファイルから
     48 *  直接インクルードしてはならない.
    6449 */
    6550
     
    7055
    7156/*
    72  *  エラーチェック方法の指定
    73  */
    74 #define CHECK_STKSZ_ALIGN       8               /* スタックサイズのアライン単位 */
    75 #define CHECK_INTPTR_ALIGN      4               /* intptr_t型の変数のアライン単位 */
    76 #define CHECK_INTPTR_NONNULL            /* intptr_t型の変数の非NULLチェック */
     57 *  エラーチェック方法の指定
     58 */
     59#define CHECK_STKSZ_ALIGN       8               /* スタックサイズのアライン単位 */
     60#define CHECK_INTPTR_ALIGN      4               /* intptr_t型の変数のアライン単位 */
     61#define CHECK_INTPTR_NONNULL            /* intptr_t型の変数の非NULLチェック */
    7762#ifndef  __thumb__
    78 #define CHECK_FUNC_ALIGN        4               /* 関数のアライン単位 */
     63#define CHECK_FUNC_ALIGN        4               /* 関数のアライン単位 */
    7964#endif /* __thumb__ */
    80 #define CHECK_FUNC_NONNULL                      /* 関数の非NULLチェック */
    81 #define CHECK_STACK_ALIGN       8               /* スタック領域のアライン単位 */
    82 #define CHECK_STACK_NONNULL                     /* スタック領域の非NULLチェック */
    83 #define CHECK_MPF_ALIGN         4               /* 固定長メモリプール領域のアライン単位 */
    84 #define CHECK_MPF_NONNULL                       /* 固定長メモリプール領域の非NULLチェック */
    85 #define CHECK_MB_ALIGN          4               /* 管理領域のアライン単位 */
     65#define CHECK_FUNC_NONNULL                      /* 関数の非NULLチェック */
     66#define CHECK_STACK_ALIGN       8               /* スタック領域のアライン単位 */
     67#define CHECK_STACK_NONNULL                     /* スタック領域の非NULLチェック */
     68#define CHECK_MPF_ALIGN         4               /* 固定長メモリプール領域のアライン単位 */
     69#define CHECK_MPF_NONNULL                       /* 固定長メモリプール領域の非NULLチェック */
     70#define CHECK_MB_ALIGN          4               /* 管理領域のアライン単位 */
    8671
    8772#ifndef TOPPERS_MACRO_ONLY
    8873
    8974/*
    90  *  レディキューサーチのためのビットマップサーチ関数
    91  *
    92  *  CLZ命令は最上位ビットからサーチするため,最上位ビットを最高優å
    93 ˆåº¦ã«
    94  *  対応させる.
     75 *  レディキューサーチのためのビットマップサーチ関数
     76 *
     77 *  CLZ命令は最上位ビットからサーチするため,最上位ビットを最高優先度に
     78 *  対応させる.
    9579 */
    9680#if __TARGET_ARCH_ARM >= 6
     
    10892
    10993/*
    110  *  コンテキストの参ç
    111 §
    112  *
    113  *  ARM依存部では,タスクコンテキストと非タスクコンテキストの両方をスー
    114  *  パバイザモードで動作させるため,プロセッサモードで判断することがで
    115  *  きない.そのため,割込みハンドラ/CPU例外ハンドラのネスト段数(これ
    116  *  を,例外ネストカウントと呼ぶ)で管理し,例外ネストカウントが0の時に
    117  *  タスクコンテキスト,0より大きい場合に非タスクコンテキストであると判
    118  *  断する.
    119  */
    120 extern uint32_t excpt_nest_count;               /* 例外ネストカウント */
     94 *  コンテキストの参照
     95 *
     96 *  ARM依存部では,タスクコンテキストと非タスクコンテキストの両方をスー
     97 *  パバイザモードで動作させるため,プロセッサモードで判断することがで
     98 *  きない.そのため,割込みハンドラ/CPU例外ハンドラのネスト段数(これ
     99 *  を,例外ネストカウントと呼ぶ)で管理し,例外ネストカウントが0の時に
     100 *  タスクコンテキスト,0より大きい場合に非タスクコンテキストであると判
     101 *  断する.
     102 */
     103extern uint32_t excpt_nest_count;               /* 例外ネストカウント */
    121104
    122105Inline bool_t
     
    129112
    130113/*
    131  *  TOPPERS標準割込み処理モデルの実現
    132  *
    133  *  ARMコア依存部では,割込みの扱いに関して,次の2つの方法をサポートす
    134  *  る.
    135  *
    136  *  (1) カーネルを単体で使用する場合やSafeGのノンセキュアモードで使用す
    137  *  る場合:IRQをカーネル管理の割込み,FIQをカーネル管理外の割込みとす
    138  *  る.デフォルトでは,この方法が使用される.
    139  *
    140  *  (2) SafeGのセキュアモードで使用する場合:FIQをカーネル管理の割込み
    141  *  とし,カーネルの動作中はIRQを常にマスクする.この方法を使用する場合
    142  *  には,TOPPERS_SAFEG_SECUREをマクロ定義する.
    143  *
    144  *  TOPPERS標準割込み処理モデルの中で,割込み優å
    145 ˆåº¦ãƒžã‚¹ã‚¯ã¨å‰²è¾¼ã¿è¦æ±‚禁
    146  *  止フラグに関しては,割込みコントローラによって実現方法が異なるため,
    147  *  ARMコア依存部では扱わない.
    148  */
    149 
    150 /*
    151  *  FIQとIRQの両方を禁止するCPSRのビットパターン
     114 *  TOPPERS標準割込み処理モデルの実現
     115 *
     116 *  ARMコア依存部では,割込みの扱いに関して,次の2つの方法をサポートす
     117 *  る.
     118 *
     119 *  (1) カーネルを単体で使用する場合やSafeGのノンセキュアモードで使用す
     120 *  る場合:IRQをカーネル管理の割込み,FIQをカーネル管理外の割込みとす
     121 *  る.デフォルトでは,この方法が使用される.
     122 *
     123 *  (2) SafeGのセキュアモードで使用する場合:FIQをカーネル管理の割込み
     124 *  とし,カーネルの動作中はIRQを常にマスクする.この方法を使用する場合
     125 *  には,TOPPERS_SAFEG_SECUREをマクロ定義する.
     126 *
     127 *  TOPPERS標準割込み処理モデルの中で,割込み優先度マスクと割込み要求禁
     128 *  止フラグに関しては,割込みコントローラによって実現方法が異なるため,
     129 *  ARMコア依存部では扱わない.
     130 */
     131
     132/*
     133 *  FIQとIRQの両方を禁止するCPSRのビットパターン
    152134 */
    153135#ifndef TOPPERS_MACRO_ONLY
     
    158140
    159141/*
    160  *  CPUロック・割込みロックでない状æ
    161 ‹ã§ã®CPSRのビットパターン
     142 *  CPUロック・割込みロックでない状態でのCPSRのビットパターン
    162143 */
    163144#ifndef TOPPERS_SAFEG_SECURE
     
    168149
    169150/*
    170  *  CPUロック状æ
    171 ‹ã§ã®CPSRのビットパターン
     151 *  CPUロック状態でのCPSRのビットパターン
    172152 */
    173153#ifndef TOPPERS_SAFEG_SECURE
     
    178158
    179159/*
    180  *  割込みロック状æ
    181 ‹ã§ã®CPSRのビットパターン
     160 *  割込みロック状態でのCPSRのビットパターン
    182161 */
    183162#define CPSR_INTLOCK            CPSR_FIQ_IRQ_BIT
     
    186165
    187166/*
    188  *  CPUロック状æ
    189 ‹ã¸ã®é·ç§»
     167 *  CPUロック状態への遷移
    190168 */
    191169Inline void
     
    203181
    204182        /*
    205          *  メモリ参ç
    206 §ãŒï¼Œã“の関数をè¶
    207 ãˆã¦æœ€é©åŒ–されることを抑止
     183         *  メモリ参照が,この関数を超えて最適化されることを抑止
    208184         */
    209185        ARM_MEMORY_CHANGED;
     
    211187
    212188/*
    213  *  CPUロック状æ
    214 ‹ã¸ã®ç§»è¡Œï¼ˆãƒ‡ã‚£ã‚¹ãƒ‘ッチできる状æ
    215 ‹ï¼‰
     189 *  CPUロック状態への移行(ディスパッチできる状態)
    216190 */
    217191#define lock_cpu_dsp()          lock_cpu()
    218192
    219193/*
    220  *  CPUロック状æ
    221 ‹ã®è§£é™¤
     194 *  CPUロック状態の解除
    222195 */
    223196Inline void
     
    225198{
    226199        /*
    227          *  メモリ参ç
    228 §ãŒï¼Œã“の関数をè¶
    229 ãˆã¦æœ€é©åŒ–されることを抑止
     200         *  メモリ参照が,この関数を超えて最適化されることを抑止
    230201         */
    231202        ARM_MEMORY_CHANGED;
     
    243214
    244215/*
    245  *  CPUロック状æ
    246 ‹ã®è§£é™¤ï¼ˆãƒ‡ã‚£ã‚¹ãƒ‘ッチできる状æ
    247 ‹ï¼‰
     216 *  CPUロック状態の解除(ディスパッチできる状態)
    248217 */
    249218#define unlock_cpu_dsp()        unlock_cpu()
    250219
    251220/*
    252  *  CPUロック状æ
    253 ‹ã®å‚ç
    254 §
     221 *  CPUロック状態の参照
    255222 */
    256223Inline bool_t
     
    265232
    266233/*
    267  *  割込みを受け付けるためのé
    268 å»¶å‡¦ç†
     234 *  割込みを受け付けるための遅延処理
    269235 */
    270236Inline void
     
    274240
    275241/*
    276  *  非タスクコンテキスト用のスタック初期値
     242 *  非タスクコンテキスト用のスタック初期値
    277243 */
    278244#define TOPPERS_ISTKPT(istk, istksz)    ((STK_T *)((char *)(istk) + (istksz)))
    279245
    280246/*
    281  *  タスクコンテキストブロックの定義
     247 *  タスクコンテキストブロックの定義
    282248 */
    283249typedef struct task_context_block {
    284         void    *sp;            /* スタックポインタ */
    285         FP              pc;                     /* 実行再開番地 */
     250        void    *sp;            /* スタックポインタ */
     251        FP              pc;                     /* 実行再開番地 */
    286252} TSKCTXB;
    287253
    288254/*
    289  *  タスクディスパッチャ
    290  */
    291 
    292 /*
    293  *  最高優å
    294 ˆé †ä½ã‚¿ã‚¹ã‚¯ã¸ã®ãƒ‡ã‚£ã‚¹ãƒ‘ッチ(core_support.S)
    295  *
    296  *  dispatchは,タスクコンテキストから呼び出されたサービスコール処理か
    297  *  ら呼び出すべきもので,タスクコンテキスト・CPUロック状æ
    298 ‹ãƒ»ãƒ‡ã‚£ã‚¹ãƒ‘ッ
    299  *  チ許可状æ
    300 ‹ãƒ»ï¼ˆãƒ¢ãƒ‡ãƒ«ä¸Šã®ï¼‰å‰²è¾¼ã¿å„ªå
    301 ˆåº¦ãƒžã‚¹ã‚¯å
    302 ¨è§£é™¤çŠ¶æ
    303 ‹ã§å‘¼ã³å‡ºã•ãª
    304  *  ければならない.
     255 *  タスクディスパッチャ
     256 */
     257
     258/*
     259 *  最高優先順位タスクへのディスパッチ(core_support.S)
     260 *
     261 *  dispatchは,タスクコンテキストから呼び出されたサービスコール処理か
     262 *  ら呼び出すべきもので,タスクコンテキスト・CPUロック状態・ディスパッ
     263 *  チ許可状態・(モデル上の)割込み優先度マスク全解除状態で呼び出さな
     264 *  ければならない.
    305265 */
    306266extern void dispatch(void);
    307267
    308268/*
    309  *  非タスクコンテキストからのディスパッチ要求
     269 *  非タスクコンテキストからのディスパッチ要求
    310270 */
    311271#define request_dispatch()
    312272
    313273/*
    314  *  ディスパッチャの動作開始(core_support.S)
    315  *
    316  *  start_dispatchは,カーネル起動時に呼び出すべきもので,すべての割込
    317  *  みを禁止した状æ
    318 ‹ï¼ˆå‰²è¾¼ã¿ãƒ­ãƒƒã‚¯çŠ¶æ
    319 ‹ã¨åŒç­‰ã®çŠ¶æ
    320 ‹ï¼‰ã§å‘¼ã³å‡ºã•ãªã‘れば
    321  *  ならない.
     274 *  ディスパッチャの動作開始(core_support.S)
     275 *
     276 *  start_dispatchは,カーネル起動時に呼び出すべきもので,すべての割込
     277 *  みを禁止した状態(割込みロック状態と同等の状態)で呼び出さなければ
     278 *  ならない.
    322279 */
    323280extern void start_dispatch(void) NoReturn;
    324281
    325282/*
    326  *  現在のコンテキストを捨ててディスパッチ(core_support.S)
    327  *
    328  *  exit_and_dispatchは,ext_tskから呼び出すべきもので,タスクコンテキ
    329  *  スト・CPUロック状æ
    330 ‹ãƒ»ãƒ‡ã‚£ã‚¹ãƒ‘ッチ許可状æ
    331 ‹ãƒ»ï¼ˆãƒ¢ãƒ‡ãƒ«ä¸Šã®ï¼‰å‰²è¾¼ã¿å„ªå
    332 ˆ
    333  *  度マスクå
    334 ¨è§£é™¤çŠ¶æ
    335 ‹ã§å‘¼ã³å‡ºã•ãªã‘ればならない.
     283 *  現在のコンテキストを捨ててディスパッチ(core_support.S)
     284 *
     285 *  exit_and_dispatchは,ext_tskから呼び出すべきもので,タスクコンテキ
     286 *  スト・CPUロック状態・ディスパッチ許可状態・(モデル上の)割込み優先
     287 *  度マスク全解除状態で呼び出さなければならない.
    336288 */
    337289extern void exit_and_dispatch(void) NoReturn;
    338290
    339291/*
    340  *  カーネルの終了処理の呼出し(core_support.S)
    341  *
    342  *  call_exit_kernelは,カーネルの終了時に呼び出すべきもので,非タスク
    343  *  コンテキストに切り換えて,カーネルの終了処理(exit_kernel)を呼び出
    344  *  す.
     292 *  カーネルの終了処理の呼出し(core_support.S)
     293 *
     294 *  call_exit_kernelは,カーネルの終了時に呼び出すべきもので,非タスク
     295 *  コンテキストに切り換えて,カーネルの終了処理(exit_kernel)を呼び出
     296 *  す.
    345297 */
    346298extern void call_exit_kernel(void) NoReturn;
    347299     
    348300/*
    349  *  タスクコンテキストの初期化
    350  *
    351  *  タスクが休止状æ
    352 ‹ã‹ã‚‰å®Ÿè¡Œã§ãã‚‹çŠ¶æ
    353 ‹ã«é·ç§»ã™ã‚‹æ™‚に呼ばれる.この時点
    354  *  でスタック領域を使ってはならない.
    355  *
    356  *  activate_contextを,インライン関数ではなくマクロ定義としているのは,
    357  *  この時点ではTCBが定義されていないためである.
     301 *  タスクコンテキストの初期化
     302 *
     303 *  タスクが休止状態から実行できる状態に遷移する時に呼ばれる.この時点
     304 *  でスタック領域を使ってはならない.
     305 *
     306 *  activate_contextを,インライン関数ではなくマクロ定義としているのは,
     307 *  この時点ではTCBが定義されていないためである.
    358308 */
    359309extern void start_r(void);
     
    367317
    368318/*
    369  *  標準の割込み管理機能の初期化処理を用いない
     319 *  標準の割込み管理機能の初期化処理を用いない
    370320 */
    371321#define OMIT_INITIALIZE_INTERRUPT
    372322
    373323/*
    374  *  割込みハンドラテーブル(kernel_cfg.c)
     324 *  割込みハンドラテーブル(kernel_cfg.c)
    375325 */
    376326extern FP inh_table[TNUM_INHNO];
    377327
    378328/*
    379  *  割込み要求ライン設定テーブル(kernel_cfg.c)
    380  *
    381  *  割込み要求ラインに対して割込み属性が設定されていれば1,設定されてい
    382  *  なければ0を保持するテーブル.
     329 *  割込み要求ライン設定テーブル(kernel_cfg.c)
     330 *
     331 *  割込み要求ラインに対して割込み属性が設定されていれば1,設定されてい
     332 *  なければ0を保持するテーブル.
    383333 */
    384334#ifdef USE_INTCFG_TABLE
     
    387337
    388338/*
    389  *  標準の例外管理機能の初期化処理を用いない
     339 *  標準の例外管理機能の初期化処理を用いない
    390340 */
    391341#define OMIT_INITIALIZE_EXCEPTION
    392342
    393343/*
    394  *  CPU例外ハンドラテーブル(kernel_cfg.c)
     344 *  CPU例外ハンドラテーブル(kernel_cfg.c)
    395345 */
    396346extern const FP exc_table[TNUM_EXCNO];
    397347
    398348/*
    399  *  CPU例外ハンドラの初期化
     349 *  CPU例外ハンドラの初期化
    400350 */
    401351Inline void
     
    405355
    406356/*
    407  *  CPU例外の発生した時のコンテキストの参ç
    408 §
    409  *
    410  *  CPU例外の発生した時のコンテキストが,タスクコンテキストの時にfalse,
    411  *  そうでない時にtrueを返す.
     357 *  CPU例外の発生した時のコンテキストの参照
     358 *
     359 *  CPU例外の発生した時のコンテキストが,タスクコンテキストの時にfalse,
     360 *  そうでない時にtrueを返す.
    412361 */
    413362Inline bool_t
     
    418367
    419368/*
    420  *  CPU例外の発生した時の割込み優å
    421 ˆåº¦ãƒžã‚¹ã‚¯ã®å‚ç
    422 §
     369 *  CPU例外の発生した時の割込み優先度マスクの参照
    423370 */
    424371Inline PRI
     
    429376
    430377/*
    431  *  CPUロック状æ
    432 ‹ã¾ãŸã¯å‰²è¾¼ã¿ãƒ­ãƒƒã‚¯çŠ¶æ
    433 ‹ã‹ã®å‚ç
    434 §
     378 *  CPUロック状態または割込みロック状態かの参照
    435379 */
    436380Inline bool_t
     
    446390
    447391/*
    448  *  CPU例外の発生した時のコンテキストと割込みのマスク状æ
    449 ‹ã®å‚ç
    450 §
    451  *
    452  *  CPU例外の発生した時のシステム状æ
    453 ‹ãŒï¼Œã‚«ãƒ¼ãƒãƒ«å®Ÿè¡Œä¸­ã§ãªãï¼Œã‚¿ã‚¹ã‚¯ã‚³
    454  *  ンテキストであり,å
    455 ¨å‰²è¾¼ã¿ãƒ­ãƒƒã‚¯çŠ¶æ
    456 ‹ã§ãªãï¼ŒCPUロック状æ
    457 ‹ã§ãªãï¼Œå‰²
    458  *  込み優å
    459 ˆåº¦ãƒžã‚¹ã‚¯å
    460 ¨è§£é™¤çŠ¶æ
    461 ‹ã§ã‚る時にtrue,そうでない時にfalseを返す
    462  *  (CPU例外がカーネル管理外の割込み処理中で発生した場合にもfalseを返
    463  *  す).
     392 *  CPU例外の発生した時のコンテキストと割込みのマスク状態の参照
     393 *
     394 *  CPU例外の発生した時のシステム状態が,カーネル実行中でなく,タスクコ
     395 *  ンテキストであり,全割込みロック状態でなく,CPUロック状態でなく,割
     396 *  込み優先度マスク全解除状態である時にtrue,そうでない時にfalseを返す
     397 *  (CPU例外がカーネル管理外の割込み処理中で発生した場合にもfalseを返
     398 *  す).
    464399 *
    465400 */
     
    475410
    476411/*
    477  *  MMU関連の操作(VMSA)
     412 *  MMU関連の操作(VMSA)
    478413 */
    479414#ifdef USE_ARM_MMU
    480415
    481416/*
    482  *  変換テーブルベースレジスタ(TTBR)の設定値
     417 *  変換テーブルベースレジスタ(TTBR)の設定値
    483418 */
    484419#if __TARGET_ARCH_ARM < 6
     
    495430
    496431/*
    497  *  MMUの設定æƒ
    498 å ±ã®ãƒ‡ãƒ¼ã‚¿åž‹
     432 *  MMUの設定情報のデータ型
    499433 */
    500434typedef struct arm_mmu_config {
    501         uint32_t        vaddr;                  /* 仮想アドレス */
    502         uint32_t        paddr;                  /* 物理アドレス */
    503         uint32_t        size;                   /* サイズ */
    504         uint32_t        attr;                   /* セクション属性 */
     435        uint32_t        vaddr;                  /* 仮想アドレス */
     436        uint32_t        paddr;                  /* 物理アドレス */
     437        uint32_t        size;                   /* サイズ */
     438        uint32_t        attr;                   /* セクション属性 */
    505439} ARM_MMU_CONFIG;
    506440
    507441/*
    508  *  MMUの設定æƒ
    509 å ±ã®æ•°ï¼ˆãƒ¡ãƒ¢ãƒªã‚¨ãƒªã‚¢ã®æ•°ï¼‰ï¼ˆtarget_kernel_impl.c)
     442 *  MMUの設定情報の数(メモリエリアの数)(target_kernel_impl.c)
    510443 */
    511444extern const uint_t arm_tnum_memory_area;
    512445
    513446/*
    514  *  MMUの設定æƒ
    515 å ±ï¼ˆãƒ¡ãƒ¢ãƒªã‚¨ãƒªã‚¢ã®æƒ
    516 å ±ï¼‰ï¼ˆtarget_kernel_impl.c)
     447 *  MMUの設定情報(メモリエリアの情報)(target_kernel_impl.c)
    517448 */
    518449extern ARM_MMU_CONFIG arm_memory_area[];
    519450
    520451/*
    521  *  MMUの初期化
     452 *  MMUの初期化
    522453 */
    523454extern void arm_mmu_initialize(void);
     
    529460
    530461/*
    531  *  コア依存の初期化
     462 *  コア依存の初期化
    532463 */
    533464extern void core_initialize(void);
    534465
    535466/*
    536  *  コア依存の終了処理
     467 *  コア依存の終了処理
    537468 */
    538469extern void core_terminate(void);
    539470
    540471/*
    541  *  CPU例外の発生状況のログ出力
     472 *  CPU例外の発生状況のログ出力
    542473 */
    543474#ifndef OMIT_XLOG_SYS
     
    547478
    548479/*
    549  *  未定義の割込みがå
    550 ¥ã£ãŸå ´åˆã®å‡¦ç†
     480 *  未定義の割込みが入った場合の処理
    551481 */
    552482extern void default_int_handler(void);
    553483
    554484/*
    555  *  未定義の例外がå
    556 ¥ã£ãŸå ´åˆã®å‡¦ç†
     485 *  未定義の例外が入った場合の処理
    557486 */
    558487extern void default_exc_handler(void *p_excinf, EXCNO excno);
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_offset.trb

    • Property svn:mime-type changed from text/x-ruby to text/x-ruby;charset=UTF-8
    r270 r321  
    11# -*- coding: utf-8 -*-
    22#
    3 #               ã‚ªãƒ•ã‚»ãƒƒãƒˆãƒ•ã‚¡ã‚¤ãƒ«ç”Ÿæˆç”¨Rubyテンプレート(ARM用)
     3#               オフセットファイル生成用Rubyテンプレート(ARM用)
    44#
    5 #  $Id: core_offset.trb 572 2016-02-01 14:40:09Z ertl-hiro $
     5#  $Id$
    66#
    77
    88#
    9 ã‚¿ãƒ¼ã‚²ãƒƒãƒˆéžä¾å­˜éƒ¨ã®ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰
     9ターゲット非依存部のインクルード
    1010#
    1111IncludeTrb("kernel/genoffset.trb")
    1212
    1313#
    14 ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã®ã‚ªãƒ•ã‚»ãƒƒãƒˆã®å®šç¾©ã®ç”Ÿæˆ
     14フィールドのオフセットの定義の生成
    1515#
    1616GenerateDefine("TCB_p_tinib", $offsetof_TCB_p_tinib)
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_pl310.c

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-csrc to text/x-csrc;charset=UTF-8
    r270 r321  
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
    8  *  上記著作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    11  *  変・再é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    15  *      スコード中に含まれていること.
    16  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17  *      用できる形で再é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20  *      è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22  *      の無保証規定を掲載すること.
    23  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24  *      用できない形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26  *      と.
    27  *    (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    31  *    (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34  *        報告すること.
    35  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36  *      害からも,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    40  *      由に基づく請求からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42  *      å
    43 è²¬ã™ã‚‹ã“と.
     8 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13 *      スコード中に含まれていること.
     14 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17 *      の無保証規定を掲載すること.
     18 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20 *      と.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24 *        報告すること.
     25 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29 *      免責すること.
    4430 *
    45  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    46 ãŠ
    47  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    49  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    50  *  の責任を負わない.
     31 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35 *  の責任を負わない.
    5136 *
    5237 *  $Id$
     
    5439
    5540/*
    56  *              L2キャッシュコントローラ(PL310)の操作ライブラリ
     41 *              L2キャッシュコントローラ(PL310)の操作ライブラリ
    5742 */
    5843
     
    6752        aux = sil_rew_mem(PL310_AUX_CTRL);
    6853        if ((aux & PL310_AUX_CTRL_ASSOCIATIVITY) != 0U) {
    69                 /* 16ウェイ */
     54                /* 16ウェイ */
    7055                return(0x0000ffffU);
    7156        }
    7257        else {
    73                 /* 8ウェイ */
     58                /* 8ウェイ */
    7459                return(0x000000ffU);
    7560        }
     
    8772        uint32_t        way_mask = get_way_mask();
    8873
    89         /* すべてのウェイを無効化する */
     74        /* すべてのウェイを無効化する */
    9075        sil_wrw_mem(PL310_INV_WAY, 0xffff);
    9176        while ((sil_rew_mem(PL310_INV_WAY) & way_mask) != 0U) ;
     
    10085
    10186/*
    102  *  PL310の初期化
     87 *  PL310の初期化
    10388 */
    10489void
     
    10994        uint32_t        prefetch_val = 0U;
    11095
    111         /* L2キャッシュがディスエーブルの場合のみ初期化を行う */
     96        /* L2キャッシュがディスエーブルの場合のみ初期化を行う */
    11297        if ((sil_rew_mem(PL310_CTRL) & 0x01) == 0U) {
    113                 /* å
    114 ±æœ‰å±žæ€§ã‚’無視する */
     98                /* 共有属性を無視する */
    11599                aux_val |= PL310_AUX_CTRL_IGNORE_SHARE;
    116100
    117                 /* 命令プリフェッチをイネーブル */
     101                /* 命令プリフェッチをイネーブル */
    118102                aux_val |= PL310_AUX_CTRL_INST_PREFETCH;
    119103                prefetch_val |= PL310_AUX_CTRL_INST_PREFETCH;
    120104
    121                 /* データプリフェッチをイネーブル */
     105                /* データプリフェッチをイネーブル */
    122106                aux_val |= PL310_AUX_CTRL_DATA_PREFETCH;
    123107                prefetch_val |= PL310_AUX_CTRL_DATA_PREFETCH;
    124108
    125                 /* ダブルラインフィルをイネーブル */
     109                /* ダブルラインフィルをイネーブル */
    126110                prefetch_val |= PL310_PREFETCH_CTRL_DLINEFILL;
    127111                prefetch_val |= PL310_PREFETCH_CTRL_INCR_DLINEFILL;
    128112               
    129                 /* 補助制御レジスタを設定 */
     113                /* 補助制御レジスタを設定 */
    130114                aux = sil_rew_mem(PL310_AUX_CTRL);
    131115                sil_wrw_mem(PL310_AUX_CTRL, ((aux & aux_mask) | aux_val));
    132116
    133                 /* プリフェッチ制御レジスタを設定 */
     117                /* プリフェッチ制御レジスタを設定 */
    134118                prefetch = sil_rew_mem(PL310_PREFETCH_CTRL);
    135119                sil_wrw_mem(PL310_PREFETCH_CTRL, (prefetch | prefetch_val));
    136120
    137                 /* L2キャッシュのå
    138 ¨ä½“の無効化 */
     121                /* L2キャッシュの全体の無効化 */
    139122                pl310_inv_all();
    140123       
    141                 /* クロックゲーティングとスタンバイモードをイネーブル */
     124                /* クロックゲーティングとスタンバイモードをイネーブル */
    142125                sil_wrw_mem(PL310_POWER_CTRL, 0x03);
    143126       
    144                 /* L2キャッシュのイネーブル */
     127                /* L2キャッシュのイネーブル */
    145128                sil_wrw_mem(PL310_CTRL, 0x01);
    146129        }   
     
    148131
    149132/*
    150  *  L2キャッシュのディスエーブル
     133 *  L2キャッシュのディスエーブル
    151134 */
    152135void
     
    158141
    159142/*
    160  *  L2キャッシュå
    161 ¨ä½“の無効化(書き戻さない)
     143 *  L2キャッシュ全体の無効化(書き戻さない)
    162144 */
    163145void
     
    170152
    171153/*
    172  *  L2キャッシュå
    173 ¨ä½“のクリーンと無効化
     154 *  L2キャッシュ全体のクリーンと無効化
    174155 */
    175156void
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_pl310.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;charset=UTF-8
    r270 r321  
    66 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    77 *
    8  *  上記著作権è€
    9 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    10  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    11  *  変・再é
    12 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    13  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    14  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    15  *      スコード中に含まれていること.
    16  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    17  *      用できる形で再é
    18 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    19 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    20  *      è€
    21 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    22  *      の無保証規定を掲載すること.
    23  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    24  *      用できない形で再é
    25 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    26  *      と.
    27  *    (a) 再é
    28 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    29 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    30  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    31  *    (b) 再é
    32 å¸ƒã®å½¢æ
    33 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    34  *        報告すること.
    35  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    36  *      害からも,上記著作権è€
    37 ãŠã‚ˆã³TOPPERSプロジェクトをå
    38 è²¬ã™ã‚‹ã“と.
    39  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    40  *      由に基づく請求からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトを
    42  *      å
    43 è²¬ã™ã‚‹ã“と.
     8 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     9 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     10 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     11 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     12 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     13 *      スコード中に含まれていること.
     14 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     15 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     16 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     17 *      の無保証規定を掲載すること.
     18 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     19 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     20 *      と.
     21 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     22 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     23 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     24 *        報告すること.
     25 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     26 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     27 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     28 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     29 *      免責すること.
    4430 *
    45  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    46 ãŠ
    47  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    49  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    50  *  の責任を負わない.
     31 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35 *  の責任を負わない.
    5136 *
    5237 *  $Id$
     
    5439
    5540/*
    56  *              L2キャッシュコントローラ(PL310)に関する定義
     41 *              L2キャッシュコントローラ(PL310)に関する定義
    5742 */
    5843
     
    6146
    6247/*
    63  *  型キャストを行うマクロの定義
     48 *  型キャストを行うマクロの定義
    6449 */
    6550#ifndef CAST
     
    6853
    6954/*
    70  *  PL310のレジスタの番地の定義
     55 *  PL310のレジスタの番地の定義
    7156 */
    7257#define PL310_CACHE_ID                  CAST(uint32_t *, PL310_BASE + 0x000)
     
    10186
    10287/*
    103  *  キャッシュ補助制御レジスタ(PL310_AUX_CTRL)の設定値
     88 *  キャッシュ補助制御レジスタ(PL310_AUX_CTRL)の設定値
    10489 */
    10590#define PL310_AUX_CTRL_ASSOCIATIVITY            0x00010000
     
    11499
    115100/*
    116  *  プリフェッチ制御レジスタ(PL310_PREFETCH_CTRL)の設定値
     101 *  プリフェッチ制御レジスタ(PL310_PREFETCH_CTRL)の設定値
    117102 */
    118103#define PL310_PREFETCH_CTRL_INCR_DLINEFILL      0x00800000
     
    124109
    125110/*
    126  *  L2キャッシュの初期化とイネーブル
     111 *  L2キャッシュの初期化とイネーブル
    127112 */
    128113extern void pl310_initialize(uint32_t aux_val, uint32_t aux_mask);
    129114
    130115/*
    131  *  L2キャッシュのディスエーブル
     116 *  L2キャッシュのディスエーブル
    132117 */
    133118extern void pl310_disable(void);
    134119
    135120/*
    136  *  L2キャッシュå
    137 ¨ä½“の無効化(書き戻さない)
     121 *  L2キャッシュ全体の無効化(書き戻さない)
    138122 */
    139123extern void pl310_invalidate_all(void);
    140124
    141125/*
    142  *  L2キャッシュå
    143 ¨ä½“のクリーンと無効化
     126 *  L2キャッシュ全体のクリーンと無効化
    144127 */
    145128extern void pl310_clean_and_invalidate_all(void);
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_rename.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;charset=UTF-8
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_sil.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;charset=UTF-8
    r270 r321  
    88 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    99 *
    10  *  上記著作権è€
    11 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    12  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    13  *  変・再é
    14 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    28  *      と.
    29  *    (a) 再é
    30 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    31 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    32  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    33  *    (b) 再é
    34 å¸ƒã®å½¢æ
    35 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    36  *        報告すること.
    37  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    38  *      害からも,上記著作権è€
    39 ãŠã‚ˆã³TOPPERSプロジェクトをå
    40 è²¬ã™ã‚‹ã“と.
    41  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    42  *      由に基づく請求からも,上記著作権è€
    43 ãŠã‚ˆã³TOPPERSプロジェクトを
    44  *      å
    45 è²¬ã™ã‚‹ã“と.
     10 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     11 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15 *      スコード中に含まれていること.
     16 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19 *      の無保証規定を掲載すること.
     20 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22 *      と.
     23 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     25 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26 *        報告すること.
     27 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31 *      免責すること.
    4632 *
    47  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    48 ãŠ
    49  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    50  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    51  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    52  *  の責任を負わない.
     33 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37 *  の責任を負わない.
    5338 *
    5439 *  $Id$
     
    5641
    5742/*
    58  *              sil.hのコア依存部(ARM用)
     43 *              sil.hのコア依存部(ARM用)
    5944 *
    60  *  このヘッダファイルは,target_sil.h(または,そこからインクルードさ
    61  *  れるファイル)のみからインクルードされる.他のファイルから直接イン
    62  *  クルードしてはならない.
     45 *  このヘッダファイルは,target_sil.h(または,そこからインクルードさ
     46 *  れるファイル)のみからインクルードされる.他のファイルから直接イン
     47 *  クルードしてはならない.
    6348 */
    6449
     
    7257
    7358/*
    74  *  ステータスレジスタ(CPSR)の現在値の読出し
     59 *  ステータスレジスタ(CPSR)の現在値の読出し
    7560 */
    7661Inline uint32_t
     
    8469
    8570/*
    86  *  ステータスレジスタ(CPSR)の現在値の変更
     71 *  ステータスレジスタ(CPSR)の現在値の変更
    8772 */
    8873Inline void
     
    9479#else /* __thumb__ */
    9580/*
    96  *  Thumbモードではmrs/msr命令が使用できないため,関数として実現して,
    97  *  ARMモードに移行して実行する.
     81 *  Thumbモードではmrs/msr命令が使用できないため,関数として実現して,
     82 *  ARMモードに移行して実行する.
    9883 */
    9984
    10085/*
    101  *  ステータスレジスタ(CPSR)の現在値の読出し
     86 *  ステータスレジスタ(CPSR)の現在値の読出し
    10287 */
    10388extern uint32_t current_cpsr(void);
     
    10590
    10691/*
    107  *  ステータスレジスタ(CPSR)の現在値の変更
     92 *  ステータスレジスタ(CPSR)の現在値の変更
    10893 */
    10994extern void set_cpsr(uint32_t cpsr);
     
    11398
    11499/*
    115  *  すべての割込み(FIQとIRQ)の禁止
     100 *  すべての割込み(FIQとIRQ)の禁止
    116101 */
    117102Inline uint32_t
     
    133118
    134119/*
    135  *  FIQとIRQの禁止ビットの復帰
     120 *  FIQとIRQの禁止ビットの復帰
    136121 */
    137122Inline void
     
    147132
    148133/*
    149  *  å
    150 ¨å‰²è¾¼ã¿ãƒ­ãƒƒã‚¯çŠ¶æ
    151 ‹ã®åˆ¶å¾¡
     134 *  全割込みロック状態の制御
    152135 */
    153136#define SIL_PRE_LOC             uint32_t TOPPERS_fiq_irq_mask
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_stddef.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;charset=UTF-8
    r270 r321  
    88 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    99 *
    10  *  上記著作権è€
    11 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    12  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    13  *  変・再é
    14 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    28  *      と.
    29  *    (a) 再é
    30 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    31 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    32  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    33  *    (b) 再é
    34 å¸ƒã®å½¢æ
    35 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    36  *        報告すること.
    37  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    38  *      害からも,上記著作権è€
    39 ãŠã‚ˆã³TOPPERSプロジェクトをå
    40 è²¬ã™ã‚‹ã“と.
    41  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    42  *      由に基づく請求からも,上記著作権è€
    43 ãŠã‚ˆã³TOPPERSプロジェクトを
    44  *      å
    45 è²¬ã™ã‚‹ã“と.
     10 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     11 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15 *      スコード中に含まれていること.
     16 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19 *      の無保証規定を掲載すること.
     20 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22 *      と.
     23 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     25 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26 *        報告すること.
     27 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31 *      免責すること.
    4632 *
    47  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    48 ãŠ
    49  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    50  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    51  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    52  *  の責任を負わない.
     33 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37 *  の責任を負わない.
    5338 *
    5439 *  $Id$
     
    5641
    5742/*
    58  *              t_stddef.hのコア依存部(ARM用)
     43 *              t_stddef.hのコア依存部(ARM用)
    5944 *
    60  *  このヘッダファイルは,target_stddef.h(または,そこからインクルード
    61  *  されるファイル)のみからインクルードされる.他のファイルから直接イ
    62  *  ンクルードしてはならない.
     45 *  このヘッダファイルは,target_stddef.h(または,そこからインクルード
     46 *  されるファイル)のみからインクルードされる.他のファイルから直接イ
     47 *  ンクルードしてはならない.
    6348 */
    6449
     
    6752
    6853/*
    69  *  ターゲットを識別するためのマクロの定義
     54 *  ターゲットを識別するためのマクロの定義
    7055 */
    71 #define TOPPERS_ARM                                             /* コア略称 */
     56#define TOPPERS_ARM                                             /* コア略称 */
    7257
    7358#endif /* TOPPERS_CORE_STDDEF_H */
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_support.S

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/plain to text/plain;charset=UTF-8
    r279 r321  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    11  *  上記著作権è€
    12 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    13  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    14  *  変・再é
    15 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    16  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    17  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    18  *      スコード中に含まれていること.
    19  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    20  *      用できる形で再é
    21 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    22 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    23  *      è€
    24 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    25  *      の無保証規定を掲載すること.
    26  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    27  *      用できない形で再é
    28 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    29  *      と.
    30  *    (a) 再é
    31 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    32 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    33  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    34  *    (b) 再é
    35 å¸ƒã®å½¢æ
    36 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    37  *        報告すること.
    38  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    39  *      害からも,上記著作権è€
    40 ãŠã‚ˆã³TOPPERSプロジェクトをå
    41 è²¬ã™ã‚‹ã“と.
    42  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    43  *      由に基づく請求からも,上記著作権è€
    44 ãŠã‚ˆã³TOPPERSプロジェクトを
    45  *      å
    46 è²¬ã™ã‚‹ã“と.
     11 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     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 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     32 *      免責すること.
    4733 *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              カーネルのコア依存部のアセンブリ言語部(ARM用)
     44 *              カーネルのコア依存部のアセンブリ言語部(ARM用)
    6045 */
    6146
    6247#define TOPPERS_MACRO_ONLY
    6348#define TOPPERS_ASM_MACRO
    64 #define UINT_C(val)                     (val)           /* uint_t型の定数を作るマクロ */
    65 #define ULONG_C(val)            (val)           /* ulong_t型の定数を作るマクロ */
    66 #define CAST(type, val)         (val)           /* 型キャストを行うマクロ */
     49#define UINT_C(val)                     (val)           /* uint_t型の定数を作るマクロ */
     50#define ULONG_C(val)            (val)           /* ulong_t型の定数を作るマクロ */
     51#define CAST(type, val)         (val)           /* 型キャストを行うマクロ */
    6752#include "kernel_impl.h"
    6853#include "offset.h"
     
    7055
    7156/*
    72  *  例外ベクタ
     57 *  例外ベクタ
    7358 */
    7459        ASECTION(.vector)
     
    7661        AGLOBAL(vector_table)
    7762ALABEL(vector_table)
    78         ldr             pc, reset_vector                /* リセット */
    79         ldr             pc, undef_vector                /* 未定義命令 */
    80         ldr             pc, svc_vector                  /* ソフトウェア割込み */
    81         ldr             pc, pabort_vector               /* プリフェッチアボート */
    82         ldr             pc, dabort_vector               /* データアボート */
    83         ldr             pc, reset_vector                /* 未使用 */
     63        ldr             pc, reset_vector                /* リセット */
     64        ldr             pc, undef_vector                /* 未定義命令 */
     65        ldr             pc, svc_vector                  /* ソフトウェア割込み */
     66        ldr             pc, pabort_vector               /* プリフェッチアボート */
     67        ldr             pc, dabort_vector               /* データアボート */
     68        ldr             pc, reset_vector                /* 未使用 */
    8469        ldr             pc, irq_vector                  /* IRQ */
    8570        ldr             pc, fiq_vector                  /* FIQ */
    8671
    8772/*
    88  *  例外ベクタの命令から参ç
    89 §ã•ã‚Œã‚‹ã‚¸ãƒ£ãƒ³ãƒ—å
    90 ˆã‚¢ãƒ‰ãƒ¬ã‚¹
     73 *  例外ベクタの命令から参照されるジャンプ先アドレス
    9174 */
    9275        AGLOBAL(vector_ref_table)
     
    10891
    10992/*
    110  *  タスクディスパッチャ
     93 *  タスクディスパッチャ
    11194 */
    11295        ATEXT
     
    11598ALABEL(dispatch)
    11699        /*
    117          *  このルーチンは,タスクコンテキスト・CPUロック状æ
    118 ‹ãƒ»å‰²è¾¼ã¿å„ªå
    119 ˆåº¦
    120          *  マスクå
    121 ¨è§£é™¤çŠ¶æ
    122 ‹ãƒ»ãƒ‡ã‚£ã‚¹ãƒ‘ッチ許可状æ
    123 ‹ã§å‘¼ã³å‡ºã•ã‚Œã‚‹ï¼Ž
    124          */
    125         push    {r12,lr}                                /* 戻り番地を保存,r12はダミー */
     100         *  このルーチンは,タスクコンテキスト・CPUロック状態・割込み優先度
     101         *  マスク全解除状態・ディスパッチ許可状態で呼び出される.
     102         */
     103        push    {r12,lr}                                /* 戻り番地を保存,r12はダミー */
    126104#ifdef TOPPERS_SUPPORT_OVRHDR
    127105        bl              ovrtimer_stop
    128106#endif /* TOPPERS_SUPPORT_OVRHDR */
    129         stmfd   sp!, {r4-r11}                   /* 非スクラッチレジスタの保存 */
    130         ldr             r0, =p_runtsk                   /* p_runtsk → r0 */
     107        stmfd   sp!, {r4-r11}                   /* 非スクラッチレジスタの保存 */
     108        ldr             r0, =p_runtsk                   /* p_runtsk r0 */
    131109        ldr             r0, [r0]
    132         str             sp, [r0,#TCB_sp]                /* スタックポインタを保存 */
     110        str             sp, [r0,#TCB_sp]                /* スタックポインタを保存 */
    133111        adr             r1, dispatch_r
    134         str             r1, [r0,#TCB_pc]                /* 実行再開番地を保存 */
    135         b               dispatcher                              /* r0にはp_runtskが格納されている */
     112        str             r1, [r0,#TCB_pc]                /* 実行再開番地を保存 */
     113        b               dispatcher                              /* r0にはp_runtskが格納されている */
    136114
    137115ALABEL(dispatch_r)
    138         ldmfd   sp!, {r4-r11}                   /* 非スクラッチレジスタの復帰 */
     116        ldmfd   sp!, {r4-r11}                   /* 非スクラッチレジスタの復帰 */
    139117#ifdef TOPPERS_SUPPORT_OVRHDR
    140118        bl              ovrtimer_start
    141119#endif /* TOPPERS_SUPPORT_OVRHDR */
    142         pop             {r12,lr}                                /* 戻り番地を復帰 */
     120        pop             {r12,lr}                                /* 戻り番地を復帰 */
    143121        bx              lr
    144122
    145123/*
    146  *  ディスパッチャの動作開始
     124 *  ディスパッチャの動作開始
    147125 */
    148126        AGLOBAL(start_dispatch)
    149127ALABEL(start_dispatch)
    150128        /*
    151          *  このルーチンは,カーネル起動時に,非タスクコンテキストで,NMIを
    152          *  除くすべての割込みを禁止した状æ
    153 ‹ï¼ˆå
    154 ¨å‰²è¾¼ã¿ãƒ­ãƒƒã‚¯çŠ¶æ
    155 ‹ã¨åŒç­‰ï¼‰ã§
    156          *  呼び出される.
     129         *  このルーチンは,カーネル起動時に,非タスクコンテキストで,NMIを
     130         *  除くすべての割込みを禁止した状態(全割込みロック状態と同等)で
     131         *  呼び出される.
    157132         *
    158          *  dispatcher_0へ分岐する前に,タスクコンテキスト・CPUロック状æ
    159 ‹ãƒ»
    160          *  割込み優å
    161 ˆåº¦ãƒžã‚¹ã‚¯å
    162 ¨è§£é™¤çŠ¶æ
    163 ‹ã«ã—,使用するスタックを,IDが1のタ
    164          *  スクのスタック領域に切り換えなければならない.
    165          */
    166 
    167         /*
    168          *      タスクコンテキストに切り換える.
    169          */
    170         ldr             r2, =excpt_nest_count   /* 例外ネストカウントを0に */
     133         *  dispatcher_0へ分岐する前に,タスクコンテキスト・CPUロック状態・
     134         *  割込み優先度マスク全解除状態にし,使用するスタックを,IDが1のタ
     135         *  スクのスタック領域に切り換えなければならない.
     136         */
     137
     138        /*
     139         *      タスクコンテキストに切り換える.
     140         */
     141        ldr             r2, =excpt_nest_count   /* 例外ネストカウントを0に */
    171142        mov             r0, #0
    172143        str             r0, [r2]
    173144
    174145        /*
    175          *  IDが1のタスクのスタック領域に切り換える.
    176          */
    177         ldr             r0, =tcb_table                  /* tcb_table[0] → r0 */
    178         ldr             r2, [r0,#TCB_p_tinib]   /* tcb_table[0].p_tinib → r2 */
     146         *  IDが1のタスクのスタック領域に切り換える.
     147         */
     148        ldr             r0, =tcb_table                  /* tcb_table[0] r0 */
     149        ldr             r2, [r0,#TCB_p_tinib]   /* tcb_table[0].p_tinib r2 */
    179150        ldr             r0, [r2,#TINIB_stk]
    180151        ldr             r1, [r2,#TINIB_stksz]
     
    182153
    183154        /*
    184          *  CPUロック状æ
    185 ‹ã«ã—て,ディスパッチャ本体へ分岐する.
     155         *  CPUロック状態にして,ディスパッチャ本体へ分岐する.
    186156         */
    187157        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_CPULOCK)
     
    189159
    190160/*
    191  *  現在のコンテキストを捨ててディスパッチ
     161 *  現在のコンテキストを捨ててディスパッチ
    192162 */
    193163        AGLOBAL(exit_and_dispatch)
    194164ALABEL(exit_and_dispatch)
    195165        /*
    196          *  このルーチンは,タスクコンテキスト・CPUロック状æ
    197 ‹ãƒ»å‰²è¾¼ã¿å„ªå
    198 ˆåº¦
    199          *  マスクå
    200 ¨è§£é™¤çŠ¶æ
    201 ‹ãƒ»ãƒ‡ã‚£ã‚¹ãƒ‘ッチ許可状æ
    202 ‹ã§å‘¼ã³å‡ºã•ã‚Œã‚‹ï¼Ž
     166         *  このルーチンは,タスクコンテキスト・CPUロック状態・割込み優先度
     167         *  マスク全解除状態・ディスパッチ許可状態で呼び出される.
    203168         */
    204169#ifdef LOG_DSP_ENTER
    205         ldr             r0, =p_runtsk                   /* p_runtsk → r0 */
     170        ldr             r0, =p_runtsk                   /* p_runtsk r0 */
    206171        ldr             r0, [r0]
    207172#endif /* LOG_DSP_ENTER */
    208         /* ディスパッチャ本体(dispatcher)へ */
    209 
    210 /*
    211  *  ディスパッチャ本体
     173        /* ディスパッチャ本体(dispatcher)へ */
     174
     175/*
     176 *  ディスパッチャ本体
    212177 */
    213178ALABEL(dispatcher)
    214179#ifdef LOG_DSP_ENTER
    215180        /*
    216          * 【この時点のレジスタ状æ
    217 ‹ã€‘
    218          *  r0:p_runtsk(タスク切換え前)
     181         * 【この時点のレジスタ状態】
     182         *  r0:p_runtsk(タスク切換え前)
    219183         */
    220184        bl              log_dsp_enter
     
    223187ALABEL(dispatcher_0)
    224188        /*
    225          *  このルーチンは,タスクコンテキスト・CPUロック状æ
    226 ‹ãƒ»å‰²è¾¼ã¿å„ªå
    227 ˆåº¦
    228          *  マスクå
    229 ¨è§£é™¤çŠ¶æ
    230 ‹ãƒ»ãƒ‡ã‚£ã‚¹ãƒ‘ッチ許可状æ
    231 ‹ã§å‘¼ã³å‡ºã•ã‚Œã‚‹ï¼Žå®Ÿè¡Œå†é–‹ç•ª
    232          *  地へもこの状æ
    233 ‹ã®ã¾ã¾åˆ†å²ã™ã‚‹ï¼Ž
    234          */
    235         ldr             r0, =p_schedtsk         /* p_schedtsk → r4 → p_runtsk */
     189         *  このルーチンは,タスクコンテキスト・CPUロック状態・割込み優先度
     190         *  マスク全解除状態・ディスパッチ許可状態で呼び出される.実行再開番
     191         *  地へもこの状態のまま分岐する.
     192         */
     193        ldr             r0, =p_schedtsk         /* p_schedtsk → r4 → p_runtsk */
    236194        ldr             r4, [r0]
    237195        ldr             r1, =p_runtsk
    238196        str             r4, [r1]
    239         tst             r4, r4                          /* p_runtskがNULLならdispatcher_1へ */
     197        tst             r4, r4                          /* p_runtskがNULLならdispatcher_1へ */
    240198        beq             dispatcher_1
    241         ldr             sp, [r4,#TCB_sp]        /* タスクスタックを復帰 */
     199        ldr             sp, [r4,#TCB_sp]        /* タスクスタックを復帰 */
    242200#ifdef LOG_DSP_LEAVE
    243         mov             r0, r4                          /* p_runtskをパラメータに渡す */
     201        mov             r0, r4                          /* p_runtskをパラメータに渡す */
    244202        bl              log_dsp_leave
    245203#endif /* LOG_DSP_LEAVE */
    246         ldr             r0, [r4,#TCB_pc]        /* 実行再開番地を復帰 */
    247         bx              r0                                      /* p_runtskをr4にå
    248 ¥ã‚ŒãŸçŠ¶æ
    249 ‹ã§åˆ†å²ã™ã‚‹ */
    250 
    251         /*
    252          *  アイドル処理
     204        ldr             r0, [r4,#TCB_pc]        /* 実行再開番地を復帰 */
     205        bx              r0                                      /* p_runtskをr4に入れた状態で分岐する */
     206
     207        /*
     208         *  アイドル処理
    253209         *
    254          *  割込みをすべて許可し,CPUロック解除状æ
    255 ‹ã«ã—て割込みをå¾
    256 ã¤ï¼Ž
     210         *  割込みをすべて許可し,CPUロック解除状態にして割込みを待つ.
    257211         *
    258          *  ターゲットによっては,省電力モード等に移行するため,標準の方法
    259          *  と異なる手順がå¿
    260 è¦ãªå ´åˆãŒã‚る.そのようなターゲットでは,ター
    261          *  ゲット依存部でTOPPERS_CUSTOM_IDLEを定義し,アセンブラマクロとし
    262          *  て,toppers_asm_custom_idleを用意すればよい.
     212         *  ターゲットによっては,省電力モード等に移行するため,標準の方法
     213         *  と異なる手順が必要な場合がある.そのようなターゲットでは,ター
     214         *  ゲット依存部でTOPPERS_CUSTOM_IDLEを定義し,アセンブラマクロとし
     215         *  て,toppers_asm_custom_idleを用意すればよい.
    263216         */
    264217ALABEL(dispatcher_1)
     
    266219        toppers_asm_custom_idle
    267220#else /* TOPPERS_CUSTOM_IDLE */
    268         msr             cpsr_c, #CPSR_SVC_MODE  /* 割込みを許可(スーパバイザモード)*/
     221        msr             cpsr_c, #CPSR_SVC_MODE  /* 割込みを許可(スーパバイザモード)*/
    269222#endif /* TOPPERS_CUSTOM_IDLE */
    270         b               dispatcher_1                    /* 割込みå¾
    271 ã¡ */
    272 
    273 /*
    274  *  カーネルの終了処理の呼出し
     223        b               dispatcher_1                    /* 割込み待ち */
     224
     225/*
     226 *  カーネルの終了処理の呼出し
    275227 *
    276  *  割込みロック状æ
    277 ‹ã«ã—,使用するスタックを非タスクコンテキスト用のスタッ
    278  *  ク領域に切り替え,exit_kernelを呼び出す.
     228 *  割込みロック状態にし,使用するスタックを非タスクコンテキスト用のスタッ
     229 *  ク領域に切り替え,exit_kernelを呼び出す.
    279230 */
    280231        AGLOBAL(call_exit_kernel)
    281232ALABEL(call_exit_kernel)
    282233        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_INTLOCK)
    283         ldr             r0, =istkpt                             /* 非タスクコンテキストのスタックへ */
     234        ldr             r0, =istkpt                             /* 非タスクコンテキストのスタックへ */
    284235        ldr             sp, [r0]
    285236        b               exit_kernel
    286237
    287238/*
    288  *  タスクの実行開始時処理
     239 *  タスクの実行開始時処理
    289240 */
    290241        ATEXT
     
    292243        AGLOBAL(start_r)
    293244        /*
    294          *  ディスパッチャ本体から呼び出されるため,p_runtskはr4にå
    295 ¥ã£ã¦ã„る.
     245         *  ディスパッチャ本体から呼び出されるため,p_runtskはr4に入っている.
    296246         */
    297247ALABEL(start_r)
     
    300250#endif /* TOPPERS_SUPPORT_OVRHDR */
    301251        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_UNLOCK)
    302                                                                         /* CPUロック解除状æ
    303 ‹ã« */
    304         ldr             lr, =ext_tsk                    /* タスク本体からの戻り番地を設定 */
    305         ldr             r2, [r4,#TCB_p_tinib]   /* p_runtsk->p_tinib → r2 */
    306         ldr             r0, [r2,#TINIB_exinf]   /* exinfをパラメータに */
    307         ldr             r1, [r2,#TINIB_task]    /* タスク起動番地にジャンプ */
     252                                                                        /* CPUロック解除状態に */
     253        ldr             lr, =ext_tsk                    /* タスク本体からの戻り番地を設定 */
     254        ldr             r2, [r4,#TCB_p_tinib]   /* p_runtsk->p_tinib → r2 */
     255        ldr             r0, [r2,#TINIB_exinf]   /* exinfをパラメータに */
     256        ldr             r1, [r2,#TINIB_task]    /* タスク起動番地にジャンプ */
    308257        bx              r1
    309258
    310259/*
    311  *  割込みハンドラの出å
    312 ¥å£å‡¦ç†
     260 *  割込みハンドラの出入口処理
    313261 */
    314262#ifndef OMIT_IRQ_HANDLER
     
    318266ALABEL(irq_handler)
    319267        /*
    320          *  ここには,IRQモードで分岐してくる.
    321          */
    322 #if __TARGET_ARCH_ARM < 6
    323         /*
    324          *  スーパバイザモードに切り換え,スクラッチレジスタを保存する.
     268         *  ここには,IRQモードで分岐してくる.
     269         */
     270#if __TARGET_ARCH_ARM < 6
     271        /*
     272         *  スーパバイザモードに切り換え,スクラッチレジスタを保存する.
    325273         */
    326274        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_IRQ_BIT)
    327         stmfd   sp!, {r0-r5,r12,lr,pc}          /* pcはスペース確保のため */
    328 
    329         /*
    330          *  IRQモードに戻して,戻り番地とspsr(戻りå
    331 ˆã®cpsr)を取得する.
     275        stmfd   sp!, {r0-r5,r12,lr,pc}          /* pcはスペース確保のため */
     276
     277        /*
     278         *  IRQモードに戻して,戻り番地とspsr(戻り先のcpsr)を取得する.
    332279         */
    333280        msr             cpsr_c, #(CPSR_IRQ_MODE AOR CPSR_IRQ_BIT)
     
    336283
    337284        /*
    338          *  スーパバイザモードに切り換え,戻り番地とspsrを保存する.
     285         *  スーパバイザモードに切り換え,戻り番地とspsrを保存する.
    339286         */
    340287        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_IRQ_BIT)
    341         str             r2, [sp,#0x20]                  /* 戻り番地をスタックに保存 */
    342         push    {r1}                                    /* spsrをスタックに保存 */
    343 #else /* __TARGET_ARCH_ARM < 6 */
    344         /*
    345          *  戻りå
    346 ˆï¼ˆlr)とspsr(cpsr_svc)をスーパバイザモードのスタックに
    347          *  保存する.
    348          */
    349         sub             lr, lr, #4                              /* 戻り番地の算出 */
     288        str             r2, [sp,#0x20]                  /* 戻り番地をスタックに保存 */
     289        push    {r1}                                    /* spsrをスタックに保存 */
     290#else /* __TARGET_ARCH_ARM < 6 */
     291        /*
     292         *  戻り先(lr)とspsr(cpsr_svc)をスーパバイザモードのスタックに
     293         *  保存する.
     294         */
     295        sub             lr, lr, #4                              /* 戻り番地の算出 */
    350296        srsfd   #CPSR_SVC_MODE!
    351297
    352298        /*
    353          *  スーパバイザモードに切り換え,スクラッチレジスタを保存する.
     299         *  スーパバイザモードに切り換え,スクラッチレジスタを保存する.
    354300         */
    355301        cps             #CPSR_SVC_MODE
     
    358304
    359305        /*
    360          *  スタックポインタの調整
     306         *  スタックポインタの調整
    361307         */
    362308        and             r1, sp, #4
    363309        sub             sp, sp, r1
    364         push    {r0,r1}                                 /* r0はスペース確保のため */
    365 
    366         /*
    367          *  例外ネストカウントをインクリメントする.割込みが非タスクコンテキ
    368          *  ストで発生した場合には,irq_handler_1へ分岐する.
     310        push    {r0,r1}                                 /* r0はスペース確保のため */
     311
     312        /*
     313         *  例外ネストカウントをインクリメントする.割込みが非タスクコンテキ
     314         *  ストで発生した場合には,irq_handler_1へ分岐する.
    369315         */
    370316        ldr             r2, =excpt_nest_count
     
    372318        add             r3, r3, #1
    373319        str             r3, [r2]
    374         teq             r3, #1                                  /* 割込みが非タスクコンテキストで発生 */
    375         bne             irq_handler_1                   /*                        ならirq_handler_1に分岐 */
     320        teq             r3, #1                                  /* 割込みが非タスクコンテキストで発生 */
     321        bne             irq_handler_1                   /*                        ならirq_handler_1に分岐 */
    376322
    377323#ifdef TOPPERS_SUPPORT_OVRHDR
    378324        /*
    379          *  オーバランタイマを停止する.
     325         *  オーバランタイマを停止する.
    380326         */
    381327        bl              ovrtimer_stop
     
    383329
    384330        /*
    385          *  非タスクコンテキスト用のスタックに切り換える.
    386          */
    387         mov             r3, sp                                  /* この時点のスタックポインタをr3に */
    388         ldr             r2, =istkpt                             /* 非タスクコンテキスト用のスタックに */
     331         *  非タスクコンテキスト用のスタックに切り換える.
     332         */
     333        mov             r3, sp                                  /* この時点のスタックポインタをr3に */
     334        ldr             r2, =istkpt                             /* 非タスクコンテキスト用のスタックに */
    389335        ldr             sp, [r2]
    390         push    {r0,r3}                                 /* 切換え前のスタックポインタを保存 */
    391                                                                         /* r0はスペース確保のため */
     336        push    {r0,r3}                                 /* 切換え前のスタックポインタを保存 */
     337                                                                        /* r0はスペース確保のため */
    392338ALABEL(irq_handler_1)
    393339        /*
    394          *  割込みコントローラを操作し,割込み番号を取得する.
     340         *  割込みコントローラを操作し,割込み番号を取得する.
    395341         */
    396342        bl              irc_begin_int
    397343#if TNUM_INHNO <= 256 || __TARGET_ARCH_ARM <= 6
    398         cmp             r4, #TNUM_INHNO                 /* TNUM_INHNOの値によってはエラーになる */
     344        cmp             r4, #TNUM_INHNO                 /* TNUM_INHNOの値によってはエラーになる */
    399345#else /* TNUM_INHNO <= 256 || __TARGET_ARCH_ARM <= 6 */
    400346        movw    r3, #TNUM_INHNO
    401347        cmp             r4, r3                 
    402348#endif /* TNUM_INHNO <= 256 || __TARGET_ARCH_ARM <= 6 */
    403         bhs             irq_handler_2                   /* スプリアス割込みなら */
    404                                                                         /*  irq_handler_2に分岐 */
    405         /*
    406          *  CPUロック解除状æ
    407 ‹ã«ã™ã‚‹ï¼Ž
     349        bhs             irq_handler_2                   /* スプリアス割込みなら */
     350                                                                        /*  irq_handler_2に分岐 */
     351        /*
     352         *  CPUロック解除状態にする.
    408353         */
    409354#if __TARGET_ARCH_ARM < 6
     
    419364#ifdef LOG_INH_ENTER
    420365        /*
    421          *  ログ出力の呼出し
    422          */
    423         mov             r0, r4                                  /* 割込み番号をパラメータに渡す */
     366         *  ログ出力の呼出し
     367         */
     368        mov             r0, r4                                  /* 割込み番号をパラメータに渡す */
    424369        bl              log_inh_enter
    425370#endif /* LOG_INH_ENTER */
    426371
    427372        /*
    428          *  割込みハンドラの呼出し
    429          */
    430         ldr             r2, =inh_table                  /* 割込みハンドラテーブルの読込み */
    431         ldr             r1, [r2,r4,lsl #2]              /* 割込みハンドラの番地 → r1 */
    432         mov             lr, pc                                  /* 割込みハンドラの呼出し */
     373         *  割込みハンドラの呼出し
     374         */
     375        ldr             r2, =inh_table                  /* 割込みハンドラテーブルの読込み */
     376        ldr             r1, [r2,r4,lsl #2]              /* 割込みハンドラの番地 → r1 */
     377        mov             lr, pc                                  /* 割込みハンドラの呼出し */
    433378        bx              r1
    434379
    435380#ifdef LOG_INH_LEAVE
    436381        /*
    437          *  ログ出力の呼出し
    438          */
    439         mov             r0, r4                                  /* 割込み番号をパラメータに渡す */
     382         *  ログ出力の呼出し
     383         */
     384        mov             r0, r4                                  /* 割込み番号をパラメータに渡す */
    440385        bl              log_inh_leave
    441386#endif /* LOG_INH_LEAVE */
    442387
    443388        /*
    444          *  カーネル管理の割込みを禁止する.
     389         *  カーネル管理の割込みを禁止する.
    445390         */
    446391#if __TARGET_ARCH_ARM < 6
     
    455400
    456401        /*
    457          *  割込みコントローラを操作する.
     402         *  割込みコントローラを操作する.
    458403         */
    459404ALABEL(irq_handler_2)
     
    461406
    462407        /*
    463          *  例外ネストカウントをデクリメントする.
     408         *  例外ネストカウントをデクリメントする.
    464409         */
    465410        ldr             r2, =excpt_nest_count
    466411        ldr             r3, [r2]
    467412        subs    r3, r3, #1
    468         str             r3, [r2]                                /* 戻りå
    469 ˆãŒéžã‚¿ã‚¹ã‚¯ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆãªã‚‰ */
    470         bne             irq_handler_5                   /*                              irq_handler_5に分岐 */
    471 
    472         /*
    473          *  タスク用のスタックに戻す.
     413        str             r3, [r2]                                /* 戻り先が非タスクコンテキストなら */
     414        bne             irq_handler_5                   /*                              irq_handler_5に分岐 */
     415
     416        /*
     417         *  タスク用のスタックに戻す.
    474418         */
    475419        pop             {r0,r3}
     
    477421
    478422        /*
    479          *  p_runtskがNULLか判定する.
    480          */
    481         ldr             r0, =p_runtsk                   /* p_runtsk → r0 */
     423         *  p_runtskがNULLか判定する.
     424         */
     425        ldr             r0, =p_runtsk                   /* p_runtsk r0 */
    482426        ldr             r0, [r0]
    483         tst             r0, r0                                  /* p_runtskがNULLでなければ */
    484         bne             irq_handler_3                   /*              irq_handler_3に分岐 */
    485 
    486         /*
    487          *  タスクのスタックに保存したスクラッチレジスタ等を捨てる.
    488          */
    489         pop             {r0,r1}                                 /* スタックポインタの調整をå
    490 ƒã«æˆ»ã™ */
     427        tst             r0, r0                                  /* p_runtskがNULLでなければ */
     428        bne             irq_handler_3                   /*              irq_handler_3に分岐 */
     429
     430        /*
     431         *  タスクのスタックに保存したスクラッチレジスタ等を捨てる.
     432         */
     433        pop             {r0,r1}                                 /* スタックポインタの調整を元に戻す */
    491434        add             sp, sp, r1
    492         add             sp, sp, #40                             /* スクラッチレジスタを捨てる */
     435        add             sp, sp, #40                             /* スクラッチレジスタを捨てる */
    493436        b               dispatcher_0
    494437
    495438        /*
    496          *  ディスパッチがå¿
    497 è¦ã‹åˆ¤å®šã™ã‚‹ï¼Ž
     439         *  ディスパッチが必要か判定する.
    498440         */
    499441ALABEL(irq_handler_3)
    500         ldr             r1, =p_schedtsk                 /* p_schedtsk → r1 */
     442        ldr             r1, =p_schedtsk                 /* p_schedtsk r1 */
    501443        ldr             r1, [r1]
    502         teq             r0, r1                                  /* p_runtskとp_schedtskが同じなら */
    503         beq             irq_handler_4                   /*                                irq_handler_4へ */
    504 
    505         /*
    506          *  コンテキストを保存する.
    507          */
    508         stmfd   sp!, {r6-r11}                   /* 非スクラッチレジスタの保存 */
    509         str             sp, [r0,#TCB_sp]                /* スタックポインタを保存 */
    510         adr             r1, ret_int_r                   /* 実行再開番地を保存 */
     444        teq             r0, r1                                  /* p_runtskとp_schedtskが同じなら */
     445        beq             irq_handler_4                   /*                                irq_handler_4 */
     446
     447        /*
     448         *  コンテキストを保存する.
     449         */
     450        stmfd   sp!, {r6-r11}                   /* 非スクラッチレジスタの保存 */
     451        str             sp, [r0,#TCB_sp]                /* スタックポインタを保存 */
     452        adr             r1, ret_int_r                   /* 実行再開番地を保存 */
    511453        str             r1, [r0,#TCB_pc]
    512         b               dispatcher                              /* r0にはp_runtskが格納されている */
     454        b               dispatcher                              /* r0にはp_runtskが格納されている */
    513455
    514456ALABEL(ret_int_r)
    515457        /*
    516          *  コンテキストを復帰する.
    517          */
    518         ldmfd   sp!, {r6-r11}                   /* 非スクラッチレジスタの復帰 */
     458         *  コンテキストを復帰する.
     459         */
     460        ldmfd   sp!, {r6-r11}                   /* 非スクラッチレジスタの復帰 */
    519461
    520462ALABEL(irq_handler_4)
    521463#ifdef TOPPERS_SUPPORT_OVRHDR
    522464        /*
    523          *  オーバランタイマを動作開始する.
     465         *  オーバランタイマを動作開始する.
    524466         */
    525467        bl              ovrtimer_start
     
    527469
    528470        /*
    529          *  割込み/CPU例外処理からのリターン
     471         *  割込み/CPU例外処理からのリターン
    530472         *
    531          *  割込み/CPU例外処理からのリターンにより,CPUロック解除状æ
    532 ‹ã«é·
    533          *  移するようにするå¿
    534 è¦ãŒã‚るが,ARMはCPSRのビットによってCPUロッ
    535          *  ク状æ
    536 ‹ã‚’表しているため,CPSRをå
    537 ƒã«æˆ»ã—てリターンすればよい.
     473         *  割込み/CPU例外処理からのリターンにより,CPUロック解除状態に遷
     474         *  移するようにする必要があるが,ARMはCPSRのビットによってCPUロッ
     475         *  ク状態を表しているため,CPSRを元に戻してリターンすればよい.
    538476         */
    539477ALABEL(irq_handler_5)
    540         pop             {r0,r1}                                 /* スタックポインタの調整をå
    541 ƒã«æˆ»ã™ */
     478        pop             {r0,r1}                                 /* スタックポインタの調整を元に戻す */
    542479        add             sp, sp, r1
    543480
    544481#if __TARGET_ARCH_ARM < 6
    545         ldmfd   sp!, {r0}                               /* 戻りå
    546 ˆã®cpsrをspsrに設定 */
     482        ldmfd   sp!, {r0}                               /* 戻り先のcpsrをspsrに設定 */
    547483        msr             spsr_cxsf, r0
    548         ldmfd   sp!, {r0-r5,r12,lr,pc}^ /* コンテキストの復帰 */
    549                                                                         /* ^付きなので,spsr → cpsr */
     484        ldmfd   sp!, {r0-r5,r12,lr,pc}^ /* コンテキストの復帰 */
     485                                                                        /* ^付きなので,spsr → cpsr */
    550486#else /* __TARGET_ARCH_ARM < 6 */
    551487        ldmfd   sp!, {r0-r5,r12,lr}
     
    555491
    556492/*
    557  *  CPU例外ハンドラ出å
    558 ¥å£å‡¦ç†
     493 *  CPU例外ハンドラ出入口処理
    559494 */
    560495ALABEL(start_exc_entry)
    561496
    562497/*
    563  *  未定義命令
     498 *  未定義命令
    564499 */
    565500#ifndef OMIT_UNDEF_HANDLER
     
    569504ALABEL(undef_handler)
    570505        /*
    571          *  ここには,未定義モードで分岐してくる.
    572          */
    573 #if __TARGET_ARCH_ARM < 6
    574         /*
    575          *  IビットとFビットをセットし,スーパバイザモードに切り換え,スク
    576          *  ラッチレジスタを保存する.
     506         *  ここには,未定義モードで分岐してくる.
     507         */
     508#if __TARGET_ARCH_ARM < 6
     509        /*
     510         *  IビットとFビットをセットし,スーパバイザモードに切り換え,スク
     511         *  ラッチレジスタを保存する.
    577512         */
    578513        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT)
    579         stmfd   sp!, {r0-r5,r12,lr,pc}          /* pcはスペース確保のため */
    580 
    581         /*
    582          *  未定義モードに戻して,戻り番地とspsrを取得する.
     514        stmfd   sp!, {r0-r5,r12,lr,pc}          /* pcはスペース確保のため */
     515
     516        /*
     517         *  未定義モードに戻して,戻り番地とspsrを取得する.
    583518         */
    584519        msr             cpsr_c, #(CPSR_UND_MODE AOR CPSR_FIQ_IRQ_BIT)
     
    587522
    588523        /*
    589          *  スーパバイザモードに切り換え,戻り番地とspsrを保存する.
     524         *  スーパバイザモードに切り換え,戻り番地とspsrを保存する.
    590525         */
    591526        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT)
    592         str             r2, [sp,#0x20]                  /* 戻り番地をスタックに保存 */
    593         push    {r1}                                    /* spsrをスタックに保存 */
    594 #else /* __TARGET_ARCH_ARM < 6 */
    595         /*
    596          *  戻りå
    597 ˆï¼ˆlr)とspsr(cpsr_svc)をスーパバイザモードのスタックに
    598          *  保存する.
     527        str             r2, [sp,#0x20]                  /* 戻り番地をスタックに保存 */
     528        push    {r1}                                    /* spsrをスタックに保存 */
     529#else /* __TARGET_ARCH_ARM < 6 */
     530        /*
     531         *  戻り先(lr)とspsr(cpsr_svc)をスーパバイザモードのスタックに
     532         *  保存する.
    599533         */
    600534        srsfd   #CPSR_SVC_MODE!
    601535
    602536        /*
    603          *  スーパバイザモードに切り換え,スクラッチレジスタを保存する.
     537         *  スーパバイザモードに切り換え,スクラッチレジスタを保存する.
    604538         */
    605539        cps             #CPSR_SVC_MODE
     
    611545
    612546/*
    613  *  スーパバイザコール
     547 *  スーパバイザコール
    614548 */
    615549#ifndef OMIT_SVC_HANDLER
     
    619553ALABEL(svc_handler)
    620554        /*
    621          *  ここには,スーパバイザモードで分岐してくる.
    622          */
    623 #if __TARGET_ARCH_ARM < 6
    624         /*
    625          *  IビットとFビットをセットし,スクラッチレジスタを保存する.
     555         *  ここには,スーパバイザモードで分岐してくる.
     556         */
     557#if __TARGET_ARCH_ARM < 6
     558        /*
     559         *  IビットとFビットをセットし,スクラッチレジスタを保存する.
    626560         */
    627561        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT)
    628         stmfd   sp!, {r0-r5,r12,lr,pc}          /* pcはスペース確保のため */
    629 
    630         /*
    631          *  戻り番地とspsrを取得する.
     562        stmfd   sp!, {r0-r5,r12,lr,pc}          /* pcはスペース確保のため */
     563
     564        /*
     565         *  戻り番地とspsrを取得する.
    632566         */
    633567        mov             r2, lr
     
    635569
    636570        /*
    637          *  戻り番地とspsrを保存する.
    638          */
    639         str             r2, [sp,#0x20]                  /* 戻り番地をスタックに保存 */
    640         push    {r1}                                    /* spsrをスタックに保存 */
    641 #else /* __TARGET_ARCH_ARM < 6 */
    642         /*
    643          *  戻りå
    644 ˆï¼ˆlr)とspsr(cpsr_svc)をスーパバイザモードのスタックに
    645          *  保存する.
     571         *  戻り番地とspsrを保存する.
     572         */
     573        str             r2, [sp,#0x20]                  /* 戻り番地をスタックに保存 */
     574        push    {r1}                                    /* spsrをスタックに保存 */
     575#else /* __TARGET_ARCH_ARM < 6 */
     576        /*
     577         *  戻り先(lr)とspsr(cpsr_svc)をスーパバイザモードのスタックに
     578         *  保存する.
    646579         */
    647580        srsfd   #CPSR_SVC_MODE!
    648581
    649582        /*
    650          *  スーパバイザモードで,スクラッチレジスタを保存する.
    651          */
    652         cps             #CPSR_SVC_MODE                  /* 不要と思われる */
     583         *  スーパバイザモードで,スクラッチレジスタを保存する.
     584         */
     585        cps             #CPSR_SVC_MODE                  /* 不要と思われる */
    653586        stmfd   sp!, {r0-r5,r12,lr}
    654587#endif /* __TARGET_ARCH_ARM < 6 */
     
    658591
    659592/*
    660  *  プリフェッチアボート
     593 *  プリフェッチアボート
    661594 */
    662595#ifndef OMIT_PABORT_HANDLER
     
    666599ALABEL(pabort_handler)
    667600        /*
    668          *  ここには,アボートモードで分岐してくる.
    669          */
    670 #if __TARGET_ARCH_ARM < 6
    671         /*
    672          *  IビットとFビットをセットし,スーパバイザモードに切り換え,スク
    673          *  ラッチレジスタを保存する.
     601         *  ここには,アボートモードで分岐してくる.
     602         */
     603#if __TARGET_ARCH_ARM < 6
     604        /*
     605         *  IビットとFビットをセットし,スーパバイザモードに切り換え,スク
     606         *  ラッチレジスタを保存する.
    674607         */
    675608        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT)
    676         stmfd   sp!, {r0-r5,r12,lr,pc}          /* pcはスペース確保のため */
    677 
    678         /*
    679          *  アボートモードに戻して,戻り番地とspsrを取得する.
     609        stmfd   sp!, {r0-r5,r12,lr,pc}          /* pcはスペース確保のため */
     610
     611        /*
     612         *  アボートモードに戻して,戻り番地とspsrを取得する.
    680613         */
    681614        msr             cpsr_c, #(CPSR_ABT_MODE AOR CPSR_FIQ_IRQ_BIT)
     
    684617
    685618        /*
    686          *  スーパバイザモードに切り換え,戻り番地とspsrを保存する.
     619         *  スーパバイザモードに切り換え,戻り番地とspsrを保存する.
    687620         */
    688621        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT)
    689         str             r2, [sp,#0x20]                  /* 戻り番地をスタックに保存 */
    690         push    {r1}                                    /* spsrをスタックに保存 */
    691 #else /* __TARGET_ARCH_ARM < 6 */
    692         /*
    693          *  戻りå
    694 ˆï¼ˆlr)とspsr(cpsr_svc)をスーパバイザモードのスタックに
    695          *  保存する.
     622        str             r2, [sp,#0x20]                  /* 戻り番地をスタックに保存 */
     623        push    {r1}                                    /* spsrをスタックに保存 */
     624#else /* __TARGET_ARCH_ARM < 6 */
     625        /*
     626         *  戻り先(lr)とspsr(cpsr_svc)をスーパバイザモードのスタックに
     627         *  保存する.
    696628         */
    697629        srsfd   #CPSR_SVC_MODE!
    698630
    699631        /*
    700          *  スーパバイザモードに切り換え,スクラッチレジスタを保存する.
     632         *  スーパバイザモードに切り換え,スクラッチレジスタを保存する.
    701633         */
    702634        cps             #CPSR_SVC_MODE
     
    708640
    709641/*
    710  *  データアボート
     642 *  データアボート
    711643 */
    712644#ifndef OMIT_DABORT_HANDLER
     
    716648ALABEL(dabort_handler)
    717649        /*
    718          *  ここには,アボートモードで分岐してくる.
     650         *  ここには,アボートモードで分岐してくる.
    719651         *
    720          *  データアボートが,CPU例外のå
    721 ¥å£ï¼ˆstart_exc_entryとend_exc_entry
    722          *  の間)で発生した場合には,fatal_dabort_handlerに分岐する.アボー
    723          *  トモードのspを汎用レジスタの代わりに使用する.
     652         *  データアボートが,CPU例外の入口(start_exc_entryとend_exc_entry
     653         *  の間)で発生した場合には,fatal_dabort_handlerに分岐する.アボー
     654         *  トモードのspを汎用レジスタの代わりに使用する.
    724655         */
    725656        ldr             sp, =start_exc_entry+8
     
    733664#if __TARGET_ARCH_ARM < 6
    734665        /*
    735          *  IビットとFビットをセットし,スーパバイザモードに切り換え,スク
    736          *  ラッチレジスタを保存する.
     666         *  IビットとFビットをセットし,スーパバイザモードに切り換え,スク
     667         *  ラッチレジスタを保存する.
    737668         */
    738669        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT)
    739         stmfd   sp!, {r0-r5,r12,lr,pc}          /* pcはスペース確保のため */
    740 
    741         /*
    742          *  アボートモードに戻して,戻り番地とspsrを取得する.
     670        stmfd   sp!, {r0-r5,r12,lr,pc}          /* pcはスペース確保のため */
     671
     672        /*
     673         *  アボートモードに戻して,戻り番地とspsrを取得する.
    743674         */
    744675        msr             cpsr_c, #(CPSR_ABT_MODE AOR CPSR_FIQ_IRQ_BIT)
     
    747678
    748679        /*
    749          *  スーパバイザモードに切り換え,戻り番地とspsrを保存する.
     680         *  スーパバイザモードに切り換え,戻り番地とspsrを保存する.
    750681         */
    751682        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT)
    752         str             r2, [sp,#0x20]                  /* 戻り番地をスタックに保存 */
    753         push    {r1}                                    /* spsrをスタックに保存 */
    754 #else /* __TARGET_ARCH_ARM < 6 */
    755         /*
    756          *  戻りå
    757 ˆï¼ˆlr)とspsr(cpsr_svc)をスーパバイザモードのスタックに
    758          *  保存する.
     683        str             r2, [sp,#0x20]                  /* 戻り番地をスタックに保存 */
     684        push    {r1}                                    /* spsrをスタックに保存 */
     685#else /* __TARGET_ARCH_ARM < 6 */
     686        /*
     687         *  戻り先(lr)とspsr(cpsr_svc)をスーパバイザモードのスタックに
     688         *  保存する.
    759689         */
    760690        srsfd   #CPSR_SVC_MODE!
    761691
    762692        /*
    763          *  スーパバイザモードに切り換え,スクラッチレジスタを保存する.
     693         *  スーパバイザモードに切り換え,スクラッチレジスタを保存する.
    764694         */
    765695        cps             #CPSR_SVC_MODE
     
    771701
    772702/*
    773  *  CPU例外のå
    774 ¥å£ã§ç™ºç”Ÿã—たデータアボート
     703 *  CPU例外の入口で発生したデータアボート
    775704 */
    776705ALABEL(fatal_dabort_handler)
    777706#if __TARGET_ARCH_ARM < 6
    778707        /*
    779          *  IビットとFビットをセットし,スーパバイザモードに切り換え,スタッ
    780          *  クポインタを初期化し,スクラッチレジスタを保存する.
     708         *  IビットとFビットをセットし,スーパバイザモードに切り換え,スタッ
     709         *  クポインタを初期化し,スクラッチレジスタを保存する.
    781710         */
    782711        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT)
    783712        ldr             sp, =istkpt
    784713        ldr             sp, [sp]
    785         stmfd   sp!, {r0-r5,r12,lr,pc}          /* pcはスペース確保のため */
    786 
    787         /*
    788          *  アボートモードに戻して,戻り番地とspsrを取得する.
     714        stmfd   sp!, {r0-r5,r12,lr,pc}          /* pcはスペース確保のため */
     715
     716        /*
     717         *  アボートモードに戻して,戻り番地とspsrを取得する.
    789718         */
    790719        msr             cpsr_c, #(CPSR_ABT_MODE AOR CPSR_FIQ_IRQ_BIT)
     
    793722
    794723        /*
    795          *  スーパバイザモードに切り換え,戻り番地とspsrを保存する.
     724         *  スーパバイザモードに切り換え,戻り番地とspsrを保存する.
    796725         */
    797726        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT)
    798         str             r2, [sp,#0x20]                  /* 戻り番地をスタックに保存 */
    799         push    {r1}                                    /* spsrをスタックに保存 */
    800 #else /* __TARGET_ARCH_ARM < 6 */
    801         /*
    802          *  IビットとFビットをセットし,スーパバイザモードに切り換え,スタッ
    803          *  クポインタを初期化する.
     727        str             r2, [sp,#0x20]                  /* 戻り番地をスタックに保存 */
     728        push    {r1}                                    /* spsrをスタックに保存 */
     729#else /* __TARGET_ARCH_ARM < 6 */
     730        /*
     731         *  IビットとFビットをセットし,スーパバイザモードに切り換え,スタッ
     732         *  クポインタを初期化する.
    804733         */
    805734        cpsid   if, #CPSR_SVC_MODE
     
    808737
    809738        /*
    810          *  アボートモードに戻して,戻りå
    811 ˆï¼ˆlr)とspsr(cpsr_svc)をスーパ
    812          *  バイザモードのスタックに保存する.
     739         *  アボートモードに戻して,戻り先(lr)とspsr(cpsr_svc)をスーパ
     740         *  バイザモードのスタックに保存する.
    813741         */
    814742        cps             #CPSR_ABT_MODE
     
    816744
    817745        /*
    818          *  スーパバイザモードに切り換え,スクラッチレジスタを保存する.
     746         *  スーパバイザモードに切り換え,スクラッチレジスタを保存する.
    819747         */
    820748        cps             #CPSR_SVC_MODE
     
    823751
    824752        /*
    825          *  例外ネストカウントの最上位ビットを1にする.
     753         *  例外ネストカウントの最上位ビットを1にする.
    826754         */
    827755        ldr             r2, =excpt_nest_count
     
    842770ALABEL(fiq_handler)
    843771        /*
    844          *  ここには,FIQモードで分岐してくる.
    845          */
    846 #if __TARGET_ARCH_ARM < 6
    847         /*
    848          *  IビットとFビットをセットし,スーパバイザモードに切り換え,スク
    849          *  ラッチレジスタを保存する.
     772         *  ここには,FIQモードで分岐してくる.
     773         */
     774#if __TARGET_ARCH_ARM < 6
     775        /*
     776         *  IビットとFビットをセットし,スーパバイザモードに切り換え,スク
     777         *  ラッチレジスタを保存する.
    850778         */
    851779        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT)
    852         stmfd   sp!, {r0-r5,r12,lr,pc}          /* pcはスペース確保のため */
    853 
    854         /*
    855          *  FIQモードに戻して,戻り番地とspsrを取得する.
     780        stmfd   sp!, {r0-r5,r12,lr,pc}          /* pcはスペース確保のため */
     781
     782        /*
     783         *  FIQモードに戻して,戻り番地とspsrを取得する.
    856784         */
    857785        msr             cpsr_c, #(CPSR_FIQ_MODE AOR CPSR_FIQ_IRQ_BIT)
     
    860788
    861789        /*
    862          *  スーパバイザモードに切り換え,戻り番地とspsrを保存する.
     790         *  スーパバイザモードに切り換え,戻り番地とspsrを保存する.
    863791         */
    864792        msr             cpsr_c, #(CPSR_SVC_MODE AOR CPSR_FIQ_IRQ_BIT)
    865         str             r2, [sp,#0x20]                  /* 戻り番地をスタックに保存 */
    866         push    {r1}                                    /* spsrをスタックに保存 */
    867 #else /* __TARGET_ARCH_ARM < 6 */
    868         /*
    869          *  戻りå
    870 ˆï¼ˆlr)とspsr(cpsr_svc)をスーパバイザモードのスタックに
    871          *  保存する.
     793        str             r2, [sp,#0x20]                  /* 戻り番地をスタックに保存 */
     794        push    {r1}                                    /* spsrをスタックに保存 */
     795#else /* __TARGET_ARCH_ARM < 6 */
     796        /*
     797         *  戻り先(lr)とspsr(cpsr_svc)をスーパバイザモードのスタックに
     798         *  保存する.
    872799         */
    873800        srsfd   #CPSR_SVC_MODE!
    874801
    875802        /*
    876          *  スーパバイザモードに切り換え,スクラッチレジスタを保存する.
     803         *  スーパバイザモードに切り換え,スクラッチレジスタを保存する.
    877804         */
    878805        cps             #CPSR_SVC_MODE
     
    886813
    887814/*
    888  *  CPU例外ハンドラ出å
    889 ¥å£å‡¦ç†ã®å
    890 ±é€šéƒ¨åˆ†
     815 *  CPU例外ハンドラ出入口処理の共通部分
    891816 *
    892  * 【この時点のレジスタ状æ
    893 ‹ã€‘
    894  *  r4:CPU例外ハンドラ番号
     817 * 【この時点のレジスタ状態】
     818 *  r4:CPU例外ハンドラ番号
    895819 */
    896820ALABEL(exc_handler_1)
    897821        /*
    898          *  CPU例外が発生した状況の判断に用いるために,CPU例外発生前の割
    899          *  込み優å
    900 ˆåº¦ãƒžã‚¹ã‚¯ã¨ä¾‹å¤–ネストカウントをスタックに保存する.
     822         *  CPU例外が発生した状況の判断に用いるために,CPU例外発生前の割
     823         *  込み優先度マスクと例外ネストカウントをスタックに保存する.
    901824         */
    902825        bl              irc_get_intpri
    903         push    {r0}                                    /* 割込み優å
    904 ˆåº¦ãƒžã‚¹ã‚¯ã‚’保存 */
     826        push    {r0}                                    /* 割込み優先度マスクを保存 */
    905827        ldr             r2, =excpt_nest_count
    906828        ldr             r3, [r2]
    907         push    {r3}                                    /* 例外ネストカウントを保存 */
    908         mov             r5, sp                                  /* CPU例外のæƒ
    909 å ±ã‚’記憶している領域の */
    910                                                                         /*                                å
    911 ˆé ­ç•ªåœ°ã‚’r5に保存 */
    912         /*
    913          *  スタックポインタの調整
     829        push    {r3}                                    /* 例外ネストカウントを保存 */
     830        mov             r5, sp                                  /* CPU例外の情報を記憶している領域の */
     831                                                                        /*                                先頭番地をr5に保存 */
     832        /*
     833         *  スタックポインタの調整
    914834         */
    915835        and             r1, sp, #4
    916836        sub             sp, sp, r1
    917         push    {r0,r1}                                 /* r0はスペース確保のため */
    918 
    919         /*
    920          *  カーネル管理外のCPU例外か判定する
     837        push    {r0,r1}                                 /* r0はスペース確保のため */
     838
     839        /*
     840         *  カーネル管理外のCPU例外か判定する
    921841         *
    922          *  カーネル管理外のCPU例外は,カーネル実行中,å
    923 ¨å‰²è¾¼ã¿ãƒ­ãƒƒã‚¯çŠ¶æ
    924 ‹ï¼Œ
    925          *  CPUロック状æ
    926 ‹ï¼Œã‚«ãƒ¼ãƒãƒ«ç®¡ç†å¤–の割込みハンドラ実行中に発生した
    927          *  CPU例外である.ARMコアの場合は,戻りå
    928 ˆã®CPSRのIビットかFビット
    929          *  のいずれかがセットされているなら,これ該当する.
    930          */
    931         ldr             r1, [r5,#T_EXCINF_cpsr]         /* 例外フレームからcpsrを取得 */
     842         *  カーネル管理外のCPU例外は,カーネル実行中,全割込みロック状態,
     843         *  CPUロック状態,カーネル管理外の割込みハンドラ実行中に発生した
     844         *  CPU例外である.ARMコアの場合は,戻り先のCPSRのIビットかFビット
     845         *  のいずれかがセットされているなら,これ該当する.
     846         */
     847        ldr             r1, [r5,#T_EXCINF_cpsr]         /* 例外フレームからcpsrを取得 */
    932848        ands    r1, r1, #CPSR_FIQ_IRQ_BIT
    933         bne             nk_exc_handler_1                /* カーネル管理外のCPU例外の処理へ */
    934 
    935         /*
    936          * 【この時点のレジスタ状æ
    937 ‹ã€‘
    938          *  r2:excpt_nest_countの番地
    939          *  r3:excpt_nest_countの値
    940          *  r4:CPU例外ハンドラ番号
    941          *  r5:CPU例外のæƒ
    942 å ±ã‚’記憶している領域のå
    943 ˆé ­ç•ªåœ°
    944          */
    945 
    946         /*
    947          *  例外ネストカウントをインクリメントする.
     849        bne             nk_exc_handler_1                /* カーネル管理外のCPU例外の処理へ */
     850
     851        /*
     852         * 【この時点のレジスタ状態】
     853         *  r2:excpt_nest_countの番地
     854         *  r3:excpt_nest_countの値
     855         *  r4:CPU例外ハンドラ番号
     856         *  r5:CPU例外の情報を記憶している領域の先頭番地
     857         */
     858
     859        /*
     860         *  例外ネストカウントをインクリメントする.
    948861         */
    949862        add             r3, r3, #1
    950863        str             r3, [r2]
    951         teq             r3, #1                                  /* CPU例外発生前が非タスクコンテキスト */
    952         bne             exc_handler_2                   /*                         ãªã‚‰exc_handler_2に分岐 */
     864        teq             r3, #1                                  /* CPU例外発生前が非タスクコンテキスト */
     865        bne             exc_handler_2                   /*                         ならexc_handler_2に分岐 */
    953866
    954867#ifdef TOPPERS_SUPPORT_OVRHDR
    955868        /*
    956          *  オーバランタイマを停止する.
     869         *  オーバランタイマを停止する.
    957870         */
    958871        bl              ovrtimer_stop
     
    960873
    961874        /*
    962          *  非タスクコンテキスト用のスタックに切り換える.
    963          */
    964         mov             r3, sp                                  /* この時点のスタックポインタをr3に */
    965         ldr             r2, =istkpt                             /* 非タスクコンテキスト用のスタックに */
     875         *  非タスクコンテキスト用のスタックに切り換える.
     876         */
     877        mov             r3, sp                                  /* この時点のスタックポインタをr3に */
     878        ldr             r2, =istkpt                             /* 非タスクコンテキスト用のスタックに */
    966879        ldr             sp, [r2]
    967         push    {r0,r3}                                 /* 切換え前のスタックポインタを保存 */
    968                                                                         /* r0はスペース確保のため */
     880        push    {r0,r3}                                 /* 切換え前のスタックポインタを保存 */
     881                                                                        /* r0はスペース確保のため */
    969882ALABEL(exc_handler_2)
    970883        /*
    971          * 【この時点のレジスタ状æ
    972 ‹ã€‘
    973          *  r4:CPU例外ハンドラ番号
    974          *  r5:CPU例外のæƒ
    975 å ±ã‚’記憶している領域のå
    976 ˆé ­ç•ªåœ°
    977          */
    978 
    979         /*
    980          *  (å¿
    981 è¦ãªã‚‰ï¼‰å‰²è¾¼ã¿ã‚³ãƒ³ãƒˆãƒ­ãƒ¼ãƒ©ã‚’操作する.
     884         * 【この時点のレジスタ状態】
     885         *  r4:CPU例外ハンドラ番号
     886         *  r5:CPU例外の情報を記憶している領域の先頭番地
     887         */
     888
     889        /*
     890         *  (必要なら)割込みコントローラを操作する.
    982891         */
    983892        bl              irc_begin_exc
    984893
    985894        /*
    986          *  CPUロック解除状æ
    987 ‹ã«ã™ã‚‹ï¼Ž
     895         *  CPUロック解除状態にする.
    988896         *
    989          *  カーネル管理外のCPU例外ハンドラは別ルーチンで呼び出すため,単純
    990          *  に割込みを許可するだけでよい.
     897         *  カーネル管理外のCPU例外ハンドラは別ルーチンで呼び出すため,単純
     898         *  に割込みを許可するだけでよい.
    991899         */
    992900#if __TARGET_ARCH_ARM < 6
     
    1001909
    1002910        /*
    1003          *  ログ出力の呼出し
     911         *  ログ出力の呼出し
    1004912         */
    1005913#ifdef LOG_EXC_ENTER
    1006         mov             r0, r4                                  /* CPU例外番号をパラメータに渡す */
     914        mov             r0, r4                                  /* CPU例外番号をパラメータに渡す */
    1007915        bl              log_exc_enter
    1008916#endif /* LOG_EXC_ENTER */
    1009917
    1010918        /*
    1011          *  CPU例外ハンドラの呼出し
    1012          */
    1013         ldr             r2, =exc_table                  /* CPU例外ハンドラテーブルの読込み */
    1014         ldr             r3, [r2,r4,lsl #2]              /* CPU例外ハンドラの番地 → r3 */
    1015         mov             r0, r5                                  /* CPU例外のæƒ
    1016 å ±ã‚’記憶している領域の */
    1017                                                                         /*              å
    1018 ˆé ­ç•ªåœ°ã‚’第1パラメータに渡す */
    1019         mov             r1, r4                                  /* CPU例外番号を第2パラメータに渡す */
    1020         mov             lr, pc                                  /* CPU例外ハンドラの呼出し */
     919         *  CPU例外ハンドラの呼出し
     920         */
     921        ldr             r2, =exc_table                  /* CPU例外ハンドラテーブルの読込み */
     922        ldr             r3, [r2,r4,lsl #2]              /* CPU例外ハンドラの番地 → r3 */
     923        mov             r0, r5                                  /* CPU例外の情報を記憶している領域の */
     924                                                                        /*              先頭番地を第1パラメータに渡す */
     925        mov             r1, r4                                  /* CPU例外番号を第2パラメータに渡す */
     926        mov             lr, pc                                  /* CPU例外ハンドラの呼出し */
    1021927        bx              r3
    1022928
    1023929        /*
    1024          *  ログ出力の呼出し
     930         *  ログ出力の呼出し
    1025931         */
    1026932#ifdef LOG_EXC_LEAVE
    1027         mov             r0, r4                                  /* CPU例外番号をパラメータに渡す */
     933        mov             r0, r4                                  /* CPU例外番号をパラメータに渡す */
    1028934        bl              log_exc_leave
    1029935#endif /* LOG_EXC_LEAVE */
    1030936
    1031937        /*
    1032          *  カーネル管理の割込みを禁止する.
     938         *  カーネル管理の割込みを禁止する.
    1033939         */
    1034940#if __TARGET_ARCH_ARM < 6
     
    1043949
    1044950        /*
    1045          *  割込みコントローラを操作して,割込み優å
    1046 ˆåº¦ãƒžã‚¹ã‚¯ã‚’,CPU例外発
    1047          *  生時の値に設定する.
     951         *  割込みコントローラを操作して,割込み優先度マスクを,CPU例外発
     952         *  生時の値に設定する.
    1048953         */
    1049954        bl              irc_end_exc
    1050955
    1051956        /*
    1052          *  例外ネストカウントをデクリメントする.
     957         *  例外ネストカウントをデクリメントする.
    1053958         */
    1054959        ldr             r2, =excpt_nest_count
    1055960        ldr             r3, [r2]
    1056961        subs    r3, r3, #1
    1057         str             r3, [r2]                                /* 戻りå
    1058 ˆãŒéžã‚¿ã‚¹ã‚¯ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆãªã‚‰ */
    1059         bne             exc_handler_5                   /*                              exc_handler_5に分岐 */
    1060 
    1061         /*
    1062          *  タスク用のスタックに戻す.
     962        str             r3, [r2]                                /* 戻り先が非タスクコンテキストなら */
     963        bne             exc_handler_5                   /*                              exc_handler_5に分岐 */
     964
     965        /*
     966         *  タスク用のスタックに戻す.
    1063967         */
    1064968        pop             {r0,r3}
     
    1066970
    1067971        /*
    1068          *  p_runtskがNULLか判定する.
    1069          */
    1070         ldr             r0, =p_runtsk                   /* p_runtsk → r0 */
     972         *  p_runtskがNULLか判定する.
     973         */
     974        ldr             r0, =p_runtsk                   /* p_runtsk r0 */
    1071975        ldr             r0, [r0]
    1072         tst             r0, r0                                  /* p_runtskがNULLでなければ */
    1073         bne             exc_handler_3                   /*              exc_handler_3に分岐 */
    1074 
    1075         /*
    1076          *  タスクのスタックに保存したスクラッチレジスタ等を捨てる.
    1077          */
    1078         pop             {r0,r1}                                 /* スタックポインタの調整をå
    1079 ƒã«æˆ»ã™ */
     976        tst             r0, r0                                  /* p_runtskがNULLでなければ */
     977        bne             exc_handler_3                   /*              exc_handler_3に分岐 */
     978
     979        /*
     980         *  タスクのスタックに保存したスクラッチレジスタ等を捨てる.
     981         */
     982        pop             {r0,r1}                                 /* スタックポインタの調整を元に戻す */
    1080983        add             sp, sp, r1
    1081         add             sp, sp, #48                             /* スクラッチレジスタとCPU例外が発生した */
    1082         b               dispatcher_0                    /*      状況を判断するための追加æƒ
    1083 å ±ã‚’捨てる */
    1084 
    1085         /*
    1086          *  ディスパッチがå¿
    1087 è¦ã‹åˆ¤å®šã™ã‚‹ï¼Ž
     984        add             sp, sp, #48                             /* スクラッチレジスタとCPU例外が発生した */
     985        b               dispatcher_0                    /*      状況を判断するための追加情報を捨てる */
     986
     987        /*
     988         *  ディスパッチが必要か判定する.
    1088989         */
    1089990ALABEL(exc_handler_3)
    1090         ldr             r1, =p_schedtsk                 /* p_schedtsk → r1 */
     991        ldr             r1, =p_schedtsk                 /* p_schedtsk r1 */
    1091992        ldr             r1, [r1]
    1092         teq             r0, r1                                  /* p_runtskとp_schedtskが同じなら */
    1093         beq             exc_handler_4                   /*                                exc_handler_4へ */
    1094 
    1095         /*
    1096          *  コンテキストを保存する.
    1097          */
    1098         stmfd   sp!, {r6-r11}                   /* 非スクラッチレジスタの保存 */
    1099         str             sp, [r0,#TCB_sp]                /* スタックポインタを保存 */
    1100         adr             r1, ret_exc_r                   /* 実行再開番地を保存 */
     993        teq             r0, r1                                  /* p_runtskとp_schedtskが同じなら */
     994        beq             exc_handler_4                   /*                                exc_handler_4 */
     995
     996        /*
     997         *  コンテキストを保存する.
     998         */
     999        stmfd   sp!, {r6-r11}                   /* 非スクラッチレジスタの保存 */
     1000        str             sp, [r0,#TCB_sp]                /* スタックポインタを保存 */
     1001        adr             r1, ret_exc_r                   /* 実行再開番地を保存 */
    11011002        str             r1, [r0,#TCB_pc]
    1102         b               dispatcher                              /* r0にはp_runtskが格納されている */
     1003        b               dispatcher                              /* r0にはp_runtskが格納されている */
    11031004
    11041005ALABEL(ret_exc_r)
    11051006        /*
    1106          *  コンテキストを復帰する.
    1107          */
    1108         ldmfd   sp!, {r6-r11}                   /* 非スクラッチレジスタの復帰 */
     1007         *  コンテキストを復帰する.
     1008         */
     1009        ldmfd   sp!, {r6-r11}                   /* 非スクラッチレジスタの復帰 */
    11091010
    11101011ALABEL(exc_handler_4)
    11111012#ifdef TOPPERS_SUPPORT_OVRHDR
    11121013        /*
    1113          *  オーバランタイマを動作開始する.
     1014         *  オーバランタイマを動作開始する.
    11141015         */
    11151016        bl              ovrtimer_start
     
    11171018
    11181019        /*
    1119          *  CPU例外処理からのリターン
     1020         *  CPU例外処理からのリターン
    11201021         *
    1121          *  CPU例外処理からのリターンにより,CPUロック解除状æ
    1122 ‹ã«é·ç§»ã™ã‚‹ã‚ˆ
    1123          *  うにするå¿
    1124 è¦ãŒã‚るが,ARMはCPSRのビットによってCPUロック状æ
    1125 ‹ã‚’
    1126          *  表しているため,CPSRをå
    1127 ƒã«æˆ»ã—てリターンすればよい.
     1022         *  CPU例外処理からのリターンにより,CPUロック解除状態に遷移するよ
     1023         *  うにする必要があるが,ARMはCPSRのビットによってCPUロック状態を
     1024         *  表しているため,CPSRを元に戻してリターンすればよい.
    11281025         */
    11291026ALABEL(exc_handler_5)
    1130         pop             {r0,r1}                                 /* スタックポインタの調整をå
    1131 ƒã«æˆ»ã™ */
     1027        pop             {r0,r1}                                 /* スタックポインタの調整を元に戻す */
    11321028        add             sp, sp, r1
    1133         add             sp, sp, #8                              /* スタック上のæƒ
    1134 å ±ã‚’捨てる */
    1135 
    1136 #if __TARGET_ARCH_ARM < 6
    1137         ldmfd   sp!, {r0}                               /* 戻りå
    1138 ˆã®cpsrをspsrに設定 */
     1029        add             sp, sp, #8                              /* スタック上の情報を捨てる */
     1030
     1031#if __TARGET_ARCH_ARM < 6
     1032        ldmfd   sp!, {r0}                               /* 戻り先のcpsrをspsrに設定 */
    11391033        msr             spsr_cxsf, r0
    1140         ldmfd   sp!, {r0-r5,r12,lr,pc}^ /* コンテキストの復帰 */
    1141                                                                         /* ^付きなので,spsr → cpsr */
     1034        ldmfd   sp!, {r0-r5,r12,lr,pc}^ /* コンテキストの復帰 */
     1035                                                                        /* ^付きなので,spsr → cpsr */
    11421036#else /* __TARGET_ARCH_ARM < 6 */
    11431037        ldmfd   sp!, {r0-r5,r12,lr}
     
    11461040
    11471041/*
    1148  *  カーネル管理外のCPU例外の出å
    1149 ¥å£å‡¦ç†
     1042 *  カーネル管理外のCPU例外の出入口処理
    11501043 */
    11511044ALABEL(nk_exc_handler_1)
    11521045        /*
    1153          * 【この時点のレジスタ状æ
    1154 ‹ã€‘
    1155          *  r1:CPU例外発生前のCPSRのFビットとIビットの値
    1156          *  r2:excpt_nest_countの番地
    1157          *  r3:excpt_nest_countの値
    1158          *  r4:CPU例外ハンドラ番号
    1159          *  r5:CPU例外のæƒ
    1160 å ±ã‚’記憶している領域のå
    1161 ˆé ­ç•ªåœ°
    1162          */
    1163 
    1164         /*
    1165          *  例外ネストカウントをインクリメントする.
     1046         * 【この時点のレジスタ状態】
     1047         *  r1:CPU例外発生前のCPSRのFビットとIビットの値
     1048         *  r2:excpt_nest_countの番地
     1049         *  r3:excpt_nest_countの値
     1050         *  r4:CPU例外ハンドラ番号
     1051         *  r5:CPU例外の情報を記憶している領域の先頭番地
     1052         */
     1053
     1054        /*
     1055         *  例外ネストカウントをインクリメントする.
    11661056         */
    11671057        add             r3, r3, #1
    11681058        str             r3, [r2]
    1169         teq             r3, #1                                  /* CPU例外発生前が非タスクコンテキスト */
    1170         bne             nk_exc_handler_2                /*                      ならnk_exc_handler_2に分岐 */
    1171 
    1172         /*
    1173          *  非タスクコンテキスト用のスタックに切り換える.
    1174          */
    1175         mov             r3, sp                                  /* この時点のスタックポインタをr3に */
    1176         ldr             r2, =istkpt                             /* 非タスクコンテキスト用のスタックに */
     1059        teq             r3, #1                                  /* CPU例外発生前が非タスクコンテキスト */
     1060        bne             nk_exc_handler_2                /*                      ならnk_exc_handler_2に分岐 */
     1061
     1062        /*
     1063         *  非タスクコンテキスト用のスタックに切り換える.
     1064         */
     1065        mov             r3, sp                                  /* この時点のスタックポインタをr3に */
     1066        ldr             r2, =istkpt                             /* 非タスクコンテキスト用のスタックに */
    11771067        ldr             sp, [r2]
    1178         push    {r0,r3}                                 /* 切換え前のスタックポインタを保存 */
    1179                                                                         /* r0はスペース確保のため */
     1068        push    {r0,r3}                                 /* 切換え前のスタックポインタを保存 */
     1069                                                                        /* r0はスペース確保のため */
    11801070ALABEL(nk_exc_handler_2)
    11811071        /*
    1182          *  システム状æ
    1183 ‹ï¼ˆã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã¯é™¤ãï¼‰ã‚’,CPU例外発生時の状æ
    1184 ‹ã¸
     1072         *  システム状態(コンテキストは除く)を,CPU例外発生時の状態へ
    11851073         */
    11861074        orr             r1, r1, #CPSR_SVC_MODE
     
    11881076
    11891077        /*
    1190          *  CPU例外ハンドラの呼出し
    1191          */
    1192         ldr             r2, =exc_table                  /* CPU例外ハンドラテーブルの読込み */
    1193         ldr             r3, [r2,r4,lsl #2]              /* CPU例外ハンドラの番地 → r3 */
    1194         mov             r0, r5                                  /* CPU例外のæƒ
    1195 å ±ã‚’記憶している領域の */
    1196                                                                         /*              å
    1197 ˆé ­ç•ªåœ°ã‚’第1パラメータに渡す */
    1198         mov             r1, r4                                  /* CPU例外番号を第2パラメータに渡す */
    1199         mov             lr, pc                                  /* CPU例外ハンドラの呼出し */
     1078         *  CPU例外ハンドラの呼出し
     1079         */
     1080        ldr             r2, =exc_table                  /* CPU例外ハンドラテーブルの読込み */
     1081        ldr             r3, [r2,r4,lsl #2]              /* CPU例外ハンドラの番地 → r3 */
     1082        mov             r0, r5                                  /* CPU例外の情報を記憶している領域の */
     1083                                                                        /*              先頭番地を第1パラメータに渡す */
     1084        mov             r1, r4                                  /* CPU例外番号を第2パラメータに渡す */
     1085        mov             lr, pc                                  /* CPU例外ハンドラの呼出し */
    12001086        bx              r3
    12011087
    12021088        /*
    1203          *  例外ネストカウントをデクリメントする.
     1089         *  例外ネストカウントをデクリメントする.
    12041090         */
    12051091        ldr             r2, =excpt_nest_count
    12061092        ldr             r3, [r2]
    12071093        subs    r3, r3, #1
    1208         str             r3, [r2]                                /* 戻りå
    1209 ˆãŒéžã‚¿ã‚¹ã‚¯ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆãªã‚‰ */
    1210         bne             exc_handler_5                   /*                              exc_handler_5に分岐 */
    1211 
    1212         /*
    1213          *  タスク用のスタックに戻す.
     1094        str             r3, [r2]                                /* 戻り先が非タスクコンテキストなら */
     1095        bne             exc_handler_5                   /*                              exc_handler_5に分岐 */
     1096
     1097        /*
     1098         *  タスク用のスタックに戻す.
    12141099         */
    12151100        pop             {r0,r3}
     
    12181103
    12191104/*
    1220  *  ステータスレジスタの操作関数
     1105 *  ステータスレジスタの操作関数
    12211106 *
    1222  *  Thumbモードではmrs/msr命令が使用できないため,関数として実現して,
    1223  *  ARMモードに移行して実行する.
     1107 *  Thumbモードではmrs/msr命令が使用できないため,関数として実現して,
     1108 *  ARMモードに移行して実行する.
    12241109 */
    12251110#ifdef __thumb__
     
    12411126
    12421127/*
    1243  *  微少時間å¾
    1244 ã¡
     1128 *  微少時間待ち
    12451129 *
    1246  *  キャッシュラインのどの場所にあるかのよって実行時間が変わるため,大
    1247  *  きめの単位でアラインしている.
     1130 *  キャッシュラインのどの場所にあるかのよって実行時間が変わるため,大
     1131 *  きめの単位でアラインしている.
    12481132 */
    12491133        ATEXT
     
    12521136ALABEL(sil_dly_nse)
    12531137        mov             r1, #0
    1254         mcr             p15, 0, r1, c7, c5, 6           /* 分岐予測å
    1255 ¨ä½“の無効化 */
     1138        mcr             p15, 0, r1, c7, c5, 6           /* 分岐予測全体の無効化 */
    12561139        asm_inst_sync_barrier r3
    12571140        subs    r0, r0, #SIL_DLY_TIM1
    12581141        bxls    lr
    12591142ALABEL(sil_dly_nse1)
    1260         mcr             p15, 0, r1, c7, c5, 6           /* 分岐予測å
    1261 ¨ä½“の無効化 */
     1143        mcr             p15, 0, r1, c7, c5, 6           /* 分岐予測全体の無効化 */
    12621144        asm_inst_sync_barrier r3
    12631145        subs    r0, r0, #SIL_DLY_TIM2
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_syssvc.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;charset=UTF-8
    r270 r321  
    77 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    88 *
    9  *  上記著作権è€
    10 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    11  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    12  *  変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    14  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    15  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    16  *      スコード中に含まれていること.
    17  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    18  *      用できる形で再é
    19 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    20 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    21  *      è€
    22 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    23  *      の無保証規定を掲載すること.
    24  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    25  *      用できない形で再é
    26 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    27  *      と.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *    (b) 再é
    33 å¸ƒã®å½¢æ
    34 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    35  *        報告すること.
    36  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    37  *      害からも,上記著作権è€
    38 ãŠã‚ˆã³TOPPERSプロジェクトをå
    39 è²¬ã™ã‚‹ã“と.
    40  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    41  *      由に基づく請求からも,上記著作権è€
    42 ãŠã‚ˆã³TOPPERSプロジェクトを
    43  *      å
    44 è²¬ã™ã‚‹ã“と.
     9 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     10 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     11 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     21 *      と.
     22 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     24 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     25 *        報告すること.
     26 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     27 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     28 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     29 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     30 *      免責すること.
    4531 *
    46  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    47 ãŠ
    48  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    49  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    50  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    51  *  の責任を負わない.
     32 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36 *  の責任を負わない.
    5237 *
    5338 *  $Id$
     
    5540
    5641/*
    57  *              システムサービスのコア依存部(ARM用)
     42 *              システムサービスのコア依存部(ARM用)
    5843 *
    59  *  このヘッダファイルは,target_syssvc.h(または,そこからインクルード
    60  *  されるファイル)のみからインクルードされる.他のファイルから直接イ
    61  *  ンクルードしてはならない.
     44 *  このヘッダファイルは,target_syssvc.h(または,そこからインクルード
     45 *  されるファイル)のみからインクルードされる.他のファイルから直接イ
     46 *  ンクルードしてはならない.
    6247 */
    6348
     
    6954
    7055/*
    71  *  パフォーマンスモニタによる性能評価
     56 *  パフォーマンスモニタによる性能評価
    7257 */
    7358#if defined(USE_ARM_PM_HIST) && __TARGET_ARCH_ARM == 7
    7459
    7560/*
    76  *  パフォーマンスモニタのカウンタのデータ型
     61 *  パフォーマンスモニタのカウンタのデータ型
    7762 */
    7863typedef uint32_t        PMCNT;
    7964
    8065/*
    81  *  パフォーマンスモニタの初期化
     66 *  パフォーマンスモニタの初期化
    8267 */
    8368Inline void
     
    8772
    8873        /*
    89          *  パフォーマンスモニタの有効化
     74         *  パフォーマンスモニタの有効化
    9075         *
    91          *  TOPPERS_ARM_PMCNT_DIV64が定義されている場合は,64クロック毎にカ
    92          *  ウントアップする(長い時間を計測したい場合に有効).
     76         *  TOPPERS_ARM_PMCNT_DIV64が定義されている場合は,64クロック毎にカ
     77         *  ウントアップする(長い時間を計測したい場合に有効).
    9378         */
    9479        CP15_READ_PMCR(reg);
     
    10489
    10590        /*
    106          *  パフォーマンスモニタのカウンタの有効化
     91         *  パフォーマンスモニタのカウンタの有効化
    10792         */
    10893        CP15_READ_PMCNTENSET(reg);
     
    11297
    11398/*
    114  *  パフォーマンスモニタのカウンタの読み込み
     99 *  パフォーマンスモニタのカウンタの読み込み
    115100 */
    116101Inline void
     
    121106
    122107/*
    123  *  カウンタ値の時間計測単位への変換
     108 *  カウンタ値の時間計測単位への変換
    124109 *
    125  *  時間計測の単位は,0.1マイクロ秒としている.
     110 *  時間計測の単位は,0.1マイクロ秒としている.
    126111 */
    127112Inline uint_t
     
    135120
    136121/*
    137  *  実行時間分布集計サービスの設定
     122 *  実行時間分布集計サービスの設定
    138123 */
    139124#define HISTTIM                                 PMCNT
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_test.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;charset=UTF-8
    r270 r321  
    77 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    88 *
    9  *  上記著作権è€
    10 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    11  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    12  *  変・再é
    13 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    14  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    15  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    16  *      スコード中に含まれていること.
    17  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    18  *      用できる形で再é
    19 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    20 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    21  *      è€
    22 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    23  *      の無保証規定を掲載すること.
    24  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    25  *      用できない形で再é
    26 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    27  *      と.
    28  *    (a) 再é
    29 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    30 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    31  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    32  *    (b) 再é
    33 å¸ƒã®å½¢æ
    34 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    35  *        報告すること.
    36  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    37  *      害からも,上記著作権è€
    38 ãŠã‚ˆã³TOPPERSプロジェクトをå
    39 è²¬ã™ã‚‹ã“と.
    40  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    41  *      由に基づく請求からも,上記著作権è€
    42 ãŠã‚ˆã³TOPPERSプロジェクトを
    43  *      å
    44 è²¬ã™ã‚‹ã“と.
     9 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     10 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     11 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     12 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     13 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     14 *      スコード中に含まれていること.
     15 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     16 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     17 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     18 *      の無保証規定を掲載すること.
     19 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     20 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     21 *      と.
     22 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     23 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     24 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     25 *        報告すること.
     26 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     27 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     28 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     29 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     30 *      免責すること.
    4531 *
    46  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    47 ãŠ
    48  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    49  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    50  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    51  *  の責任を負わない.
     32 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     33 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     34 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     35 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     36 *  の責任を負わない.
    5237 *
    5338 *  $Id$
     
    5540
    5641/*
    57  *              テストプログラムのコア依存部(ARM用)
     42 *