Ignore:
Timestamp:
Apr 17, 2019, 12:13:00 PM (5 years ago)
Author:
nmir-saito
Message:

modify svn:mimetype of files

Location:
ssp_rpi3/trunk/arch/arm64_gcc/common
Files:
21 edited

Legend:

Unmodified
Added
Removed
  • ssp_rpi3/trunk/arch/arm64_gcc/common/Makefile.core

    • Property svn:mime-type set to text/plain; charset=utf-8
    r384 r386  
    11#
    2 #  Makefile のコア依存部(ARMv8-A用)
     2#  Makefile のコア依存部(ARMv8-A用)
    33#
    44
    55#
    6 ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªåã®å®šç¾©
     6ディレクトリ名の定義
    77#
    88COREDIR = $(SRCDIR)/arch/$(CORE)_$(TOOL)/common
    99
    1010#
    11 ã‚³ãƒ³ãƒ‘イルオプション
     11コンパイルオプション
    1212#
    1313COPTS := $(COPTS) -march=armv8-a -mlittle-endian -mstrict-align
     
    1818
    1919#
    20 ã‚«ãƒ¼ãƒãƒ«ã«é–¢ã™ã‚‹å®šç¾©
     20カーネルに関する定義
    2121#
    2222KERNEL_DIRS := $(KERNEL_DIRS) $(COREDIR)
     
    2626
    2727#
    28 ã‚³ãƒ³ãƒ•ã‚£ã‚®ãƒ¥ãƒ¬ãƒ¼ã‚¿é–¢ä¿‚の変数の定義
     28コンフィギュレータ関係の変数の定義
    2929#
    3030CFG_TABS := $(CFG_TABS) --symval-table $(COREDIR)/core_sym.def
     
    3434
    3535#
    36 ä¾å­˜é–¢ä¿‚の定義
     36依存関係の定義
    3737#
    3838cfg1_out.c: $(COREDIR)/core_sym.def
     
    4141
    4242#
    43 ãã®ä»–
     43その他
    4444#
    4545CLEAN_FILES := $(CLEAN_FILES)
  • ssp_rpi3/trunk/arch/arm64_gcc/common/arm64.h

    • Property svn:mime-type set to text/plain; charset=utf-8
    r384 r386  
    88 *             Nagoya Municipal Industrial Research Institute, 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$
     
    8570
    8671/*
    87  *  DAIFの設定および状æ
    88 ‹å‚ç
    89 §
     72 *  DAIFの設定および状態参照
    9073 */
    9174Inline uint32_t
     
    10386
    10487/*
    105  *  DAIF.I のセット/クリア
     88 *  DAIF.I のセット/クリア
    10689 */
    10790Inline void
     
    11699
    117100/*
    118  *  DAIF.F のセット/クリア
     101 *  DAIF.F のセット/クリア
    119102 */
    120103Inline void
     
    129112
    130113/*
    131  *  DAIF.F および DAIF.I の同時セット/クリア
     114 *  DAIF.F および DAIF.I の同時セット/クリア
    132115 */
    133116Inline void
     
    142125
    143126/*
    144  *  DAIF.I の状æ
    145 ‹å‚ç
    146 §
     127 *  DAIF.I の状態参照
    147128 */
    148129Inline bool_t
     
    164145
    165146/*
    166  *  DAIF.F の状æ
    167 ‹å‚ç
    168 §
     147 *  DAIF.F の状態参照
    169148 */
    170149Inline bool_t
     
    186165
    187166/*
    188  *  クリティカル処理の出口(最適化防止)
     167 *  クリティカル処理の出口(最適化防止)
    189168 */
    190169Inline void
  • ssp_rpi3/trunk/arch/arm64_gcc/common/core_cfg1_out.h

    • Property svn:mime-type set to text/plain; charset=utf-8
    r384 r386  
    44
    55/*
    6  *              cfg1_out.cをリンクするためにå¿
    7 è¦ãªã‚¹ã‚¿ãƒ–の定義
     6 *              cfg1_out.cをリンクするために必要なスタブの定義
    87 */
    98
  • ssp_rpi3/trunk/arch/arm64_gcc/common/core_check.trb

    • Property svn:mime-type set to text/plain; charset=utf-8
    r384 r386  
    11# -*- coding: utf-8 -*-
    22#
    3 #               ãƒ‘ス3の生成スクリプトのコア依存部(ARM64用)
     3#               パス3の生成スクリプトのコア依存部(ARM64用)
    44#
    55
    66#
    7 ã‚¿ãƒ¼ã‚²ãƒƒãƒˆéžä¾å­˜éƒ¨ã®ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰
     7ターゲット非依存部のインクルード
    88#
    99IncludeTrb("kernel/kernel_check.trb")
  • ssp_rpi3/trunk/arch/arm64_gcc/common/core_config.c

    • Property svn:mime-type set to text/plain; charset=utf-8
    r384 r386  
    99 *             Nagoya Municipal Industrial Research Institute, 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  *  コア依存モジュール(ARMv8-A用)
     44 *  コア依存モジュール(ARMv8-A用)
    6045 */
    6146
     
    6348#include <t_syslog.h>
    6449
    65 /* 割込みネスト数の管理 */
     50/* 割込みネスト数の管理 */
    6651uint8_t intnest;
    6752
    6853/*
    69  *  コア依存の初期化
     54 *  コア依存の初期化
    7055 */
    7156void
    7257core_initialize(void)
    7358{
    74     /* 割込みネスト数の初期化 */
     59    /* 割込みネスト数の初期化 */
    7560    intnest = 0u;
    7661}
    7762
    7863/*
    79  *  コア依存の終了処理
     64 *  コア依存の終了処理
    8065 */
    8166void
     
    8772
    8873/*
    89  *  割込みハンドラの呼び出し
     74 *  割込みハンドラの呼び出し
    9075 */
    9176void
     
    9681    i_unlock_cpu();
    9782
    98     // ハンドラの呼び出し
     83    // ハンドラの呼び出し
    9984    inh_table[intno]();
    10085
     
    10590
    10691/*
    107  *  カーネル管理のCPU例外ハンドラの呼び出し
     92 *  カーネル管理のCPU例外ハンドラの呼び出し
    10893 */
    10994void
     
    115100
    116101    /*
    117      *  プロセッサの状æ
    118 ‹ã‚’CPU例外発生前の状æ
    119 ‹ã«ã™ã‚‹
     102     *  プロセッサの状態をCPU例外発生前の状態にする
    120103     */
    121104    if((spsr & AARCH64_PSTATE_F) == 0) {
     
    127110    }
    128111
    129     // ハンドラの呼び出し
     112    // ハンドラの呼び出し
    130113    exc_table[excno](p_excinf);
    131114
    132115    /*
    133      *  プロセッサの状æ
    134 ‹ã‚’戻す
     116     *  プロセッサの状態を戻す
    135117     */
    136118    if((spsr & AARCH64_PSTATE_F) == 0) {
     
    146128
    147129/*
    148  *  FIQハンドラの呼び出し
    149  *    å
    150 ¨ã¦ã®ä¾‹å¤–がマスクされた状æ
    151 ‹ã§å‘¼ã³å‡ºã•ã‚Œã‚‹
    152  *    例外要因の判別も含めここ(あるいはここから呼び出されるルーチン)で行う
     130 *  FIQハンドラの呼び出し
     131 *    全ての例外がマスクされた状態で呼び出される
     132 *    例外要因の判別も含めここ(あるいはここから呼び出されるルーチン)で行う
    153133 */
    154134void
     
    160140#ifndef OMIT_DEFAULT_EXC_HANDLER
    161141/*
    162  *  登録されていない例外が発生すると呼び出される
     142 *  登録されていない例外が発生すると呼び出される
    163143 */
    164144void
     
    187167#ifndef OMIT_DEFAULT_INT_HANDLER
    188168/*
    189  *  未登録の割込みが発生した場合に呼び出される
     169 *  未登録の割込みが発生した場合に呼び出される
    190170 */
    191171void
  • ssp_rpi3/trunk/arch/arm64_gcc/common/core_config.h

    • Property svn:mime-type set to text/plain; charset=utf-8
    r384 r386  
    88 *             Nagoya Municipal Industrial Research Institute, 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  *    コア依存モジュール(ARMv8-A用)
     43 *    コア依存モジュール(ARMv8-A用)
    5944 *
    60  *  このインクルードファイルは,target_config.h(または,そこからインク
    61  *  ルードされるファイル)のみからインクルードされる.他のファイルから
    62  *  直接インクルードしてはならない.
     45 *  このインクルードファイルは,target_config.h(または,そこからインク
     46 *  ルードされるファイル)のみからインクルードされる.他のファイルから
     47 *  直接インクルードしてはならない.
    6348 */
    6449
     
    6752
    6853/*
    69  *  ハードウェア定義
     54 *  ハードウェア定義
    7055 */
    7156#include "arm64.h"
    7257
    7358/*
    74  *  非タスクコンテキスト用のスタック初期値
     59 *  非タスクコンテキスト用のスタック初期値
    7560 */
    7661#define TOPPERS_ISTKPT(istk, istksz) ((STK_T *)((char *)(istk) + (istksz)))
     
    7964
    8065/*
    81  *  割込みネスト数
     66 *  割込みネスト数
    8267 */
    8368extern uint8_t intnest;
    8469
    8570/*
    86  *  コンテキストの参ç
    87 §
     71 *  コンテキストの参照
    8872 *
    8973 */
     
    10488
    10589/*
    106  *  ディスパッチャの動作開始(core_support.S)
     90 *  ディスパッチャの動作開始(core_support.S)
    10791 *
    108  *  start_dispatchは,カーネル起動時に呼び出すべきもので,すべての割込
    109  *  みを禁止した状æ
    110 ‹ï¼ˆå‰²è¾¼ã¿ãƒ­ãƒƒã‚¯çŠ¶æ
    111 ‹ã¨åŒç­‰ã®çŠ¶æ
    112 ‹ï¼‰ã§å‘¼ã³å‡ºã•ãªã‘れば
    113  *  ならない.
     92 *  start_dispatchは,カーネル起動時に呼び出すべきもので,すべての割込
     93 *  みを禁止した状態(割込みロック状態と同等の状態)で呼び出さなければ
     94 *  ならない.
    11495 */
    11596extern void start_dispatch(void) NoReturn;
    11697
    11798/*
    118  *  カーネルの終了処理の呼出し(prc_support.S)
     99 *  カーネルの終了処理の呼出し(prc_support.S)
    119100 *
    120  *  call_exit_kernelは,カーネルの終了時に呼び出すべきもので,非タスク
    121  *  コンテキストに切り換えて,カーネルの終了処理(exit_kernel)を呼び出
    122  *  す.
     101 *  call_exit_kernelは,カーネルの終了時に呼び出すべきもので,非タスク
     102 *  コンテキストに切り換えて,カーネルの終了処理(exit_kernel)を呼び出
     103 *  す.
    123104 */
    124105extern void call_exit_kernel(void) NoReturn;
    125106
    126107/*
    127  *  アイドルループの実è£
    128 
     108 *  アイドルループの実装
    129109 *
    130  *  単にCPUロック状æ
    131 ‹ã¨CPUロック解除状æ
    132 ‹ã‚’呼び出す実è£
    133 ã¨ã™ã‚‹ï¼Ž
    134  *  スリープモードにå
    135 ¥ã‚Œã‚‹å ´åˆã¯æœ¬å‡¦ç†ã‚’wfi命令を用いて書き換えれば良い.
     110 *  単にCPUロック状態とCPUロック解除状態を呼び出す実装とする.
     111 *  スリープモードに入れる場合は本処理をwfi命令を用いて書き換えれば良い.
    136112 */
    137113Inline void
     
    139115{
    140116    x_unlock_cpu();
    141     /* CPUアンロック => CPUロック  */
     117    /* CPUアンロック => CPUロック  */
    142118    x_lock_cpu();
    143119}
    144120
    145121/*
    146  *  コア依存の初期化
     122 *  コア依存の初期化
    147123 */
    148124extern void core_initialize(void);
    149125
    150126/*
    151  *  コア依存の終了時処理
     127 *  コア依存の終了時処理
    152128 */
    153129extern void core_terminate(void) NoReturn;
    154130
    155131/*
    156  *  割込みハンドラの呼び出し
     132 *  割込みハンドラの呼び出し
    157133 */
    158134extern void call_int_handler(uint32_t intno);
    159135
    160136/*
    161  *  CPU例外ハンドラの呼び出し
     137 *  CPU例外ハンドラの呼び出し
    162138 */
    163139extern void call_exc_handler(void *p_excinf, uint32_t excno);
    164140
    165141/*
    166  *  FIQハンドラの呼び出し
    167  *    å
    168 ¨ã¦ã®ä¾‹å¤–がマスクされた状æ
    169 ‹ã§å‘¼ã³å‡ºã•ã‚Œã‚‹
    170  *    例外要因の判別も含めここ(あるいはここから呼び出されるルーチン)で行う
     142 *  FIQハンドラの呼び出し
     143 *    全ての例外がマスクされた状態で呼び出される
     144 *    例外要因の判別も含めここ(あるいはここから呼び出されるルーチン)で行う
    171145 */
    172146extern void call_fiq_handler(void);
    173147
    174148/*
    175  * 登録されていない例外が発生すると呼び出される
     149 * 登録されていない例外が発生すると呼び出される
    176150 */
    177151extern void default_exc_handler(void *p_excinf);
    178152
    179153/*
    180  * 未登録の割込みが発生した場合に呼び出される
     154 * 未登録の割込みが発生した場合に呼び出される
    181155 */
    182156extern void default_int_handler(void);
  • ssp_rpi3/trunk/arch/arm64_gcc/common/core_design.txt

    • Property svn:mime-type set to text/plain; charset=utf-8
    r384 r386  
    11=====================================================================
    2                          ARM64プロセッサ依存部設計メモ
     2                         ARM64プロセッサ依存部設計メモ
    33                                  Last Modified: 16 Apr 2019
    44=====================================================================
    55
    6 â—‹ このドキュメントの位置づけ
    7 
    8 ã“のドキュメントは,TOPPERS/SSPカーネルをARMv8-Aプロセッサに移植する際
    9 ã®è¨­è¨ˆãƒ¡ãƒ¢ã§ã‚る.
    10 
    11 
    12 â—‹ ARMv8-Aの仕様まとめ
    13 
    14 ARMv8-Aの仕様のうち,カーネルの設計に関係する事é 
    15 ã«ã¤ã„てまとめる.
    16 
    17 â— レジスタ
    18 
    19 æ±Žç”¨ãƒ¬ã‚¸ã‚¹ã‚¿ã¯r0〜r30 (特に64ビットレジスタはX0..X30で表現)の31種類からなる.
    20 ï¼ˆå‚考)「Procedure Call Standard for the ARM 64-bit Architecture」
    21 
    22 r0...r7    Parameter/result registers(引数および返値の受け渡し用)
    23 r8         Indirect result location register (大きなデータ構造を
    24            è¿”値として返す場合など,呼び出し側が結果を取り出すために
    25            é–“接アドレッシングを多用する際,そのベースアドレスを受け渡し
    26            ã™ã‚‹ãŸã‚ã«ä½¿ã‚ã‚Œã‚‹)
    27 r9..r15    Caller-saved Temporary registers(呼び出し側で保存すべきレジスタ)
     6○ このドキュメントの位置づけ
     7
     8このドキュメントは,TOPPERS/SSPカーネルをARMv8-Aプロセッサに移植する際
     9の設計メモである.
     10
     11
     12○ ARMv8-Aの仕様まとめ
     13
     14ARMv8-Aの仕様のうち,カーネルの設計に関係する事項についてまとめる.
     15
     16● レジスタ
     17
     18汎用レジスタはr0〜r30 (特に64ビットレジスタはX0..X30で表現)の31種類からなる.
     19(参考)「Procedure Call Standard for the ARM 64-bit Architecture」
     20
     21r0...r7    Parameter/result registers(引数および返値の受け渡し用)
     22r8         Indirect result location register (大きなデータ構造を
     23           返値として返す場合など,呼び出し側が結果を取り出すために
     24           間接アドレッシングを多用する際,そのベースアドレスを受け渡し
     25           するために使われる)
     26r9..r15    Caller-saved Temporary registers(呼び出し側で保存すべきレジスタ)
    2827r16(IP0)   The first intra-procedure-call scratch register
    29            ãƒªãƒ³ã‚«ã«ã‚ˆã£ã¦ veneer(注1) および PLT(Procedure Linkage Table,注2) コード
    30            ã®å‘¼ã³å‡ºã—で使われる.それ以外の時はテンポラリレジスタとして使われることもある.
    31            (注1)リンカによって挿å
    32 ¥ã•ã‚Œã‚‹å°ã•ãªã‚³ãƒ¼ãƒ‰ç‰‡ã§ï¼Œ
    33                 分岐命令のターゲットが範囲外の場合などに使われる
    34            (注2)å
    35 ±æœ‰ãƒ©ã‚¤ãƒ–ラリの呼び出しでシンボル解決を行うために使用される
    36                 関数テーブル
    37 r17(IP1)   The second intra-procedure-call temporary register(r16と役割は同じ)
    38 r18        The Platform Register(プラットフォームABIで使用されるレジスタ.
    39            ABIで使われない場合はテンポラリレジスタとして使われる)
    40 r19..r28   Callee-saved registers(呼び出された側で保存して使うレジスタ)
    41 r29(FP)    The Frame Pointer(フレームポインタ)
    42 r30(LR)    The Link Register(リンクレジスタ)
    43 
    44 SSPカーネルのアセンブラによる実è£
    45 ã§ã¯r8, r16...r18は使用していない.
    46 
    47 
    48 â— コーリングコンベンション
    49 
    50 r0...r7 が引数および返値に使われる.
    51 ARMにより規定されているため,コンパイラに依存せずこのルールとなる
    52 
    53 
    54 â— PSTATE
    55 
    56 AArch64ではプロセッサの状æ
    57 ‹ã‚’表すフラグの集まりをまとめてPSTATEと呼び,
    58 ãã‚Œãžã‚Œã®ãƒ•ãƒ©ã‚°ã¸åˆ¥ã€
    59 ã«ã‚¢ã‚¯ã‚»ã‚¹ã™ã‚‹ãŸã‚ã®ç‰¹åˆ¥ãªãƒ¬ã‚¸ã‚¹ã‚¿åãŒå®šç¾©ã•ã‚Œã¦ã„る.
    60 
    61 PSTATEの詳細は,ARM Architecture Reference Manual
    62 ARMv8, for ARMv8-A architecture profile の D1.7 などを参ç
    63 §ã®ã“と.
    64 
    65 ãƒ»spsel
    66 EL1より上の例外レベルでは,spsel という特別な名称のレジスタにアクセスし,
    67 PSTATE.SPフラグの値をセットして使用スタックの切り替えを行う.
    68 
    69 ãƒ»daif
    70 daif という名称のレジスタを使用してPSTATEのD,A,I,Fビットを操作し,
    71 å„種例外および割込みの禁止/許可を制御する
    72 
    73 
    74 SSPカーネルの実è£
    75 ã§ã¯ï¼Œã‚¹ã‚¿ãƒƒã‚¯ã¯SP_EL1のみを使用する.
    76 ã¾ãŸï¼ŒCPUロック状æ
    77 ‹ãŠã‚ˆã³å‰²è¾¼ã¿ãƒ­ãƒƒã‚¯çŠ¶æ
    78 ‹ã®å®Ÿè£
    79 ã«PSTATEのIおよびFフラグを
    80 åˆ©ç”¨ã—ている.
    81 
    82 
    83 â— 割込みベクタ
    84 
    85 ãƒ™ã‚¯ã‚¿ãƒ†ãƒ¼ãƒ–ルのアドレスはリセット時に,システムレジスタの一つVector Base
    86 Address Register(VBAR, システムレジスタ)にアドレスをセットすることで,
    87 2048バイト境界の任意のアドレスにé
    88 ç½®å¯èƒ½ã§ã‚る.
    89 
    90 SSPカーネルの実è£
    91 ã§ã¯ã‚¹ã‚¿ãƒ¼ãƒˆã‚¢ãƒƒãƒ—ルーチンで設定している.
    92 
    93 
    94 â— 割込み
    95 
    96 ã“こではGICを搭載するプロセッサの場合について述べる.
    97 ãã‚Œä»¥å¤–の場合についてはチップ依存部のドキュメントに記載する.
    98 
    99 
    100 â—å‰²è¾¼ã¿å„ªå
    101 ˆåº¦
    102 
    103 GICにおいては割込み優å
    104 ˆåº¦ã¯è¨­å®šå€¤ã®å°ã•ã„方が高優å
    105 ˆåº¦ã¨ãªã‚‹ï¼Ž
    106 
    107ʌ㻌
    108 ˆåº¦ã¯æœ€å¤§8bitであり,SoC毎に実è£
    109 ã•ã‚Œã¦ã„るビットå¹
    110 ãŒç•°ãªã‚‹ï¼Žå®Ÿè£
    111 ã•
    112 ã‚Œã‚‹ãƒ“ットが8bit以下の場合は,LSBから無効になる.例えば,実è£
    113 ã•ã‚Œã¦ã„
    114 ã‚‹ãƒ“ットå¹
    115 ãŒ7bitの場合は,ビット0が無効となる.
    116 
    117ʌ㻌
    118 ˆåº¦ã®ãƒ“ットフィールドのLSBから数ビットをサブ優å
    119 ˆåº¦ã¨å‘¼ã¶ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰
    120 ã«è¨­å®šã™ã‚‹ã“とが可能である.残りの上位ビットをプリエンプション優å
    121 ˆåº¦ã¨
    122 å‘¼ã¶ï¼Žãƒ—リエンプション優å
    123 ˆåº¦ãŒåŒã˜ã§ï¼Œã‚µãƒ–優å
    124 ˆåº¦ãŒç•°ãªã‚‹å„ªå
    125 ˆåº¦ã®ã‚°ãƒ«ãƒ¼
    126 ãƒ—は,お互いをプリエンプトすることができない.
    127 
    128 ä¾‹ã¨ã—て,QEMU Virtボード向けSSPの実è£
    129 ã§ã¯ Cortex-A53プロセッサを
    130 ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã¨ã—ており,優å
    131 ˆåº¦ã¯16段階(4bit)でビット0から3が無効である.
    132 
    133 â—å‰²è¾¼ã¿/例外の受付
    134 
    135 GICの場合,割込みを受け付けると受け付けた割込みの番号がGICC_IARにセットされる.
    136 å‰²è¾¼ã¿ç•ªå·ã¯ã“のレジスタにセットされる値を使用する.
    137 
    138 ä¾‹å¤–番号は,例外発生時のプロセッサ状æ
    139 ‹ã«å¿œã˜ã¦æ±ºå®šã•ã‚Œã‚‹ï¼Œãƒ™ã‚¯ã‚¿ãƒ†ãƒ¼ãƒ–ル中の
    140 ã‚¸ãƒ£ãƒ³ãƒ—å
    141 ˆã‚ªãƒ•ã‚»ãƒƒãƒˆæ¯Žã«ç•°ãªã‚‹ç•ªå·ã‚’割り振ることにしている.
    142 
    143   例外発生時の状æ
    144 ‹             ä¾‹å¤–の種類      例外番号  例外ベクタå
    145 ˆé ­ã‹ã‚‰ã®ã‚ªãƒ•ã‚»ãƒƒãƒˆ
     28           リンカによって veneer(注1) および PLT(Procedure Linkage Table,注2) コード
     29           の呼び出しで使われる.それ以外の時はテンポラリレジスタとして使われることもある.
     30           (注1)リンカによって挿入される小さなコード片で,
     31                分岐命令のターゲットが範囲外の場合などに使われる
     32           (注2)共有ライブラリの呼び出しでシンボル解決を行うために使用される
     33                関数テーブル
     34r17(IP1)   The second intra-procedure-call temporary register(r16と役割は同じ)
     35r18        The Platform Register(プラットフォームABIで使用されるレジスタ.
     36           ABIで使われない場合はテンポラリレジスタとして使われる)
     37r19..r28   Callee-saved registers(呼び出された側で保存して使うレジスタ)
     38r29(FP)    The Frame Pointer(フレームポインタ)
     39r30(LR)    The Link Register(リンクレジスタ)
     40
     41SSPカーネルのアセンブラによる実装ではr8, r16...r18は使用していない.
     42
     43
     44● コーリングコンベンション
     45
     46r0...r7 が引数および返値に使われる.
     47ARMにより規定されているため,コンパイラに依存せずこのルールとなる
     48
     49
     50● PSTATE
     51
     52AArch64ではプロセッサの状態を表すフラグの集まりをまとめてPSTATEと呼び,
     53それぞれのフラグへ別々にアクセスするための特別なレジスタ名が定義されている.
     54
     55PSTATEの詳細は,ARM Architecture Reference Manual
     56ARMv8, for ARMv8-A architecture profile の D1.7 などを参照のこと.
     57
     58・spsel
     59EL1より上の例外レベルでは,spsel という特別な名称のレジスタにアクセスし,
     60PSTATE.SPフラグの値をセットして使用スタックの切り替えを行う.
     61
     62・daif
     63daif という名称のレジスタを使用してPSTATEのD,A,I,Fビットを操作し,
     64各種例外および割込みの禁止/許可を制御する
     65
     66
     67SSPカーネルの実装では,スタックはSP_EL1のみを使用する.
     68また,CPUロック状態および割込みロック状態の実装にPSTATEのIおよびFフラグを
     69利用している.
     70
     71
     72● 割込みベクタ
     73
     74ベクタテーブルのアドレスはリセット時に,システムレジスタの一つVector Base
     75Address Register(VBAR, システムレジスタ)にアドレスをセットすることで,
     762048バイト境界の任意のアドレスに配置可能である.
     77
     78SSPカーネルの実装ではスタートアップルーチンで設定している.
     79
     80
     81● 割込み
     82
     83ここではGICを搭載するプロセッサの場合について述べる.
     84それ以外の場合についてはチップ依存部のドキュメントに記載する.
     85
     86
     87●割込み優先度
     88
     89GICにおいては割込み優先度は設定値の小さい方が高優先度となる.
     90
     91優先度は最大8bitであり,SoC毎に実装されているビット幅が異なる.実装さ
     92れるビットが8bit以下の場合は,LSBから無効になる.例えば,実装されてい
     93るビット幅が7bitの場合は,ビット0が無効となる.
     94
     95優先度のビットフィールドのLSBから数ビットをサブ優先度と呼ぶフィールド
     96に設定することが可能である.残りの上位ビットをプリエンプション優先度と
     97呼ぶ.プリエンプション優先度が同じで,サブ優先度が異なる優先度のグルー
     98プは,お互いをプリエンプトすることができない.
     99
     100例として,QEMU Virtボード向けSSPの実装では Cortex-A53プロセッサを
     101ターゲットとしており,優先度は16段階(4bit)でビット0から3が無効である.
     102
     103●割込み/例外の受付
     104
     105GICの場合,割込みを受け付けると受け付けた割込みの番号がGICC_IARにセットされる.
     106割込み番号はこのレジスタにセットされる値を使用する.
     107
     108例外番号は,例外発生時のプロセッサ状態に応じて決定される,ベクタテーブル中の
     109ジャンプ先オフセット毎に異なる番号を割り振ることにしている.
     110
     111  例外発生時の状態             例外の種類      例外番号  例外ベクタ先頭からのオフセット
    146112  AArch64, EL1t(EL1, SP_EL0)  Synchronous         0        0x0000
    147113  AArch64, EL1t(EL1, SP_EL0)  SError              1        0x0180
     
    153119  AArch32, EL0 (EL0, SP_EL0)  SError              7        0x0780
    154120
    155 å‰²è¾¼ã¿ã‚’受け付けた際,受け付けた割込みに設定された優å
    156 ˆåº¦ã‚ˆã‚Šä½Žã„割込みを
    157 ç¦æ­¢ã™ã‚‹ãŸã‚ï¼ŒGICC_RPRから取得した割込み要因の割込み優å
    158 ˆåº¦ã‚’ GICC_PMRへ
    159 ã‚»ãƒƒãƒˆã—ている.そしてハンドラ終了後に割込み発生前の割り込み優å
    160 ˆåº¦ã«æˆ»ã™ï¼Ž
    161 
    162 
    163 [CPUモード]
    164 
    165 ãƒ—ロセッサは,EL0からEL3までの例外レベルのいずれかで動作する.
    166 ã¾ãŸãã‚Œãžã‚Œã®ãƒ¬ãƒ™ãƒ«ã§64ビットモード(AArch64) または32ビットモード(AArch32)を
    167 é¸æŠžã™ã‚‹ã“とができる.ただし,ある例外レベルが32ビットモードで動作する場合は
    168 ãã‚Œã‚ˆã‚Šä½Žã„例外レベルでは64ビットモードを選択することができない.
    169 
    170 ã¾ãŸï¼Œã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£æ‹¡å¼µæ©Ÿèƒ½ã‚’搭載するプロセッサではセキュアモードおよび
    171 éžã‚»ã‚­ãƒ¥ã‚¢ãƒ¢ãƒ¼ãƒ‰ã‚’選択することができる.
    172 
    173 SSPの実è£
    174 ã§ã¯ï¼Œ64ビットモード(AArch64),非セキュア,例外レベル1(EL1) で動作する.
    175 
    176 
    177 â—ãƒªã‚»ãƒƒãƒˆæ™‚の状æ
    178 ‹
    179 
    180 ãƒªã‚»ãƒƒãƒˆæ™‚はプロセッサチップがサポートする最大の例外レベルおよびそのレベルの
    181 ã‚¹ã‚¿ãƒƒã‚¯(SP_ELx)が有効となっている.
    182 
    183 ä¾‹ã¨ã—てQEMU向けVirtボード(Cortex-A53) では,既定でEL1が最大例外レベルのため
    184 ãƒªã‚»ãƒƒãƒˆç›´å¾Œã¯SP_EL1が有効となっている.
    185 
    186 
    187 â— スタックポインタ(SP_EL0とSP_ELx)
    188 
    189 ã‚¹ã‚¿ãƒƒã‚¯ãƒã‚¤ãƒ³ã‚¿ã¯ï¼Œä¾‹å¤–レベル0のスタックポインタ(SP_EL0)および実行中の
    190 ä¾‹å¤–レベルのスタックポインタ(SP_ELx)が選択可能である.
    191 ã‚¹ã‚¿ãƒƒã‚¯ã®é¸æŠžã¯spselレジスタへ1を設定するとSP_ELxを,0を設定すると
    192 SP_EL0 を選択する.
    193 
    194 SSPの実è£
    195 ã§ã¯ï¼ŒEL1 で SP_EL1 のみを使用して動作する.
    196 
    197 
    198 â—ä¾‹å¤–レベルの遷移
    199 
    200 ä¾‹å¤–レベル(EL)の遷移は割込み/例外の受付および例外リターン命令(eret)により行う.
    201 
    202 å‰²è¾¼ã¿ãŠã‚ˆã³ä¾‹å¤–を受け付けることで発生前と同じまたはより高い例外レベルへ遷移する.
    203 ä¸€æ–¹ï¼ŒåŒã˜ã¾ãŸã¯ã‚ˆã‚Šä½Žã„例外レベルへの遷移は例外リターン命令(eret)により行う.
    204 
    205 å—付時の遷移å
    206 ˆã¨ãªã‚‹ä¾‹å¤–レベルの指定はシステムレジスタにより設定することで行う.
    207 å‰²è¾¼ã¿/例外リターン時の遷移å
    208 ˆã¨ãªã‚‹ä¾‹å¤–レベルは,SPSR_ELxのビット2および3で
    209 æŒ‡å®šã™ã‚‹ï¼Žå‰²è¾¼ã¿/例外受付時,PSTATEの状æ
    210 ‹ãŒSPSR_ELxに,リターンアドレスがELR_ELxに,
    211 ãã‚Œãžã‚Œä¿å­˜ã•ã‚Œeret命令の実行によりその格納値が復帰されるため,eret実行前に
    212 ã‚らかじめSPSR_ELxにセットしておくことで指定した例外レベルへ遷移することが可能である.
    213 åŒã˜ã‚¿ã‚¤ãƒŸãƒ³ã‚°ã§ä½¿ç”¨ã‚¹ã‚¿ãƒƒã‚¯ã‚„64ビット/32ビットモードの指定も行うことができる.
    214 
    215 QEMU Virt向けSSPの実è£
    216 ã§ã¯EL1のみを使用するため,例外レベル間の遷移処理は行っていない.
    217 
    218 
    219 â—ä¾‹å¤–レベルの判定
    220 
    221 ç¾çŠ¶ã®ä¾‹å¤–レベルを判定するには,CPSRのビット2およびビット3の値を使用する.
    222 bit[3:2]の値が
    223     '11'の場合:EL3
    224     '10'の場合:EL2
    225     '01'の場合:EL1
    226     '00'の場合:EL0
    227 
    228 â—GICC_PMRレジスタ
    229 
    230 è¨­å®šã—た優å
    231 ˆåº¦ä»¥ä¸‹(値としては以上)の優å
    232 ˆåº¦ã®å‰²è¾¼ã¿ã®å—付を禁止する.
    233 è¨­å®šå¯èƒ½ãªæœ€å¤§å€¤ã‚’設定すると,å
    234 ¨ã¦ã®å‰²è¾¼ã¿ã‚’許可する.
    235 ä¾‹ãˆã°å„ªå
    236 ˆåº¦ãŒ16段階の場合は0xf0(=0x0f << 4)をセットするとすべての割込み許可
    237 ã¨ãªã‚‹ï¼Žå€¤ã¯ä¾‹å¤–/割込みの受付とリターンにより変化しないため,受け付けた割込み
    238 ã®å„ªå
    239 ˆåº¦ã‚’割込みのå
    240 ¥å£å‡¦ç†ã§è¨­å®šã™ã‚‹å¿
    241 è¦ãŒã‚る.
    242 
    243 â—ä¾‹å¤–/割込みの受付
    244 
    245 ãƒ»ä¾‹å¤–/割込みを受付けると,受付け時にアクティブなスタック上に以下のコ
    246   ンテキストを保存する.
     121割込みを受け付けた際,受け付けた割込みに設定された優先度より低い割込みを
     122禁止するため,GICC_RPRから取得した割込み要因の割込み優先度を GICC_PMRへ
     123セットしている.そしてハンドラ終了後に割込み発生前の割り込み優先度に戻す.
     124
     125
     126[CPUモード]
     127
     128プロセッサは,EL0からEL3までの例外レベルのいずれかで動作する.
     129またそれぞれのレベルで64ビットモード(AArch64) または32ビットモード(AArch32)を
     130選択することができる.ただし,ある例外レベルが32ビットモードで動作する場合は
     131それより低い例外レベルでは64ビットモードを選択することができない.
     132
     133また,セキュリティ拡張機能を搭載するプロセッサではセキュアモードおよび
     134非セキュアモードを選択することができる.
     135
     136SSPの実装では,64ビットモード(AArch64),非セキュア,例外レベル1(EL1) で動作する.
     137
     138
     139●リセット時の状態
     140
     141リセット時はプロセッサチップがサポートする最大の例外レベルおよびそのレベルの
     142スタック(SP_ELx)が有効となっている.
     143
     144例としてQEMU向けVirtボード(Cortex-A53) では,既定でEL1が最大例外レベルのため
     145リセット直後はSP_EL1が有効となっている.
     146
     147
     148● スタックポインタ(SP_EL0とSP_ELx)
     149
     150スタックポインタは,例外レベル0のスタックポインタ(SP_EL0)および実行中の
     151例外レベルのスタックポインタ(SP_ELx)が選択可能である.
     152スタックの選択はspselレジスタへ1を設定するとSP_ELxを,0を設定すると
     153SP_EL0 を選択する.
     154
     155SSPの実装では,EL1 で SP_EL1 のみを使用して動作する.
     156
     157
     158●例外レベルの遷移
     159
     160例外レベル(EL)の遷移は割込み/例外の受付および例外リターン命令(eret)により行う.
     161
     162割込みおよび例外を受け付けることで発生前と同じまたはより高い例外レベルへ遷移する.
     163一方,同じまたはより低い例外レベルへの遷移は例外リターン命令(eret)により行う.
     164
     165受付時の遷移先となる例外レベルの指定はシステムレジスタにより設定することで行う.
     166割込み/例外リターン時の遷移先となる例外レベルは,SPSR_ELxのビット2および3で
     167指定する.割込み/例外受付時,PSTATEの状態がSPSR_ELxに,リターンアドレスがELR_ELxに,
     168それぞれ保存されeret命令の実行によりその格納値が復帰されるため,eret実行前に
     169あらかじめSPSR_ELxにセットしておくことで指定した例外レベルへ遷移することが可能である.
     170同じタイミングで使用スタックや64ビット/32ビットモードの指定も行うことができる.
     171
     172QEMU Virt向けSSPの実装ではEL1のみを使用するため,例外レベル間の遷移処理は行っていない.
     173
     174
     175●例外レベルの判定
     176
     177現状の例外レベルを判定するには,CPSRのビット2およびビット3の値を使用する.
     178bit[3:2]の値が
     179    '11'の場合:EL3
     180    '10'の場合:EL2
     181    '01'の場合:EL1
     182    '00'の場合:EL0
     183
     184●GICC_PMRレジスタ
     185
     186設定した優先度以下(値としては以上)の優先度の割込みの受付を禁止する.
     187設定可能な最大値を設定すると,全ての割込みを許可する.
     188例えば優先度が16段階の場合は0xf0(=0x0f << 4)をセットするとすべての割込み許可
     189となる.値は例外/割込みの受付とリターンにより変化しないため,受け付けた割込み
     190の優先度を割込みの入口処理で設定する必要がある.
     191
     192●例外/割込みの受付
     193
     194・例外/割込みを受付けると,受付け時にアクティブなスタック上に以下のコ
     195  ンテキストを保存する.
    247196
    248197   ---------------    <- new SP
    249198  |   GICC_PMR     |
    250199   ----------------
    251   | 割込み/例外番号|
     200  | 割込み/例外番号|
    252201   ----------------
    253202  |    ESR_ELx     |
     
    261210  |      X29       |
    262211   ----------------
    263   |      :        |
    264   |      :        |
     212  |              |
     213  |              |
    265214   ----------------
    266215  |      X1        |
     
    271220
    272221
    273 å‰²è¾¼ã¿/例外発生時の主なシーケンスは次のようになる(遷移å
    274 ˆã®ä¾‹å¤–レベルをELxと表現する)
    275 
    276 ï¼ˆãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ã®å‡¦ç†ï¼‰
    277   ・PSTATEをSPSR_ELxに保存する
    278   ・リターンアドレスをELR_ELxに保存する
    279   ・PSTATE.{D,A,I,F}を1にセットする
    280   ・同期例外およびSError割込みのとき,例外要因æƒ
    281 å ±ã‚’ESR_ELxに保存する
    282   ・スタックポインタをSP_ELxに切り替える
    283   ・ELxへ遷移する
    284 
    285 ï¼ˆã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã§ã®å‡¦ç†ï¼‰
    286   ・(発生時にSP_EL0を使用していた場合)スタックを割込み発生前(SP_EL0)に戻す
    287   ・汎用レジスタ(X0-X30)をスタックに保存
    288   ・SPSR_ELx, ESR_ELx, ELR_ELxをスタックに保存
    289   ・スタックポインタのアライメントを調整
    290   ・割込み番号(GICC_IARから取得),例外番号(オフセット毎に定義した値)をスタックに保存
    291   ・割込み発生前の割込み優å
    292 ˆåº¦ãƒžã‚¹ã‚¯ã‚’スタックに保存
    293   ・GICC_PMRに受け付けた割込みの割込み優å
    294 ˆåº¦ã‚’セット
    295   ・割込み/例外ネストカウンタのインクリメント
    296   ・(割込みの場合)CPUロック解除
    297   ・ベクタテーブルを読み込みハンドラを実行する
    298 
    299 â—ä¾‹å¤–/割込みからのリターン
    300 
    301 ï¼ˆã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã§ã®å‡¦ç†ï¼‰
    302   ・CPUロック状æ
    303 ‹ã¸ç§»è¡Œ
    304   ・割込み/例外ネスとカウンタのデクリメント
    305   ・GICC_PMRに割込み発生前の優å
    306 ˆåº¦ãƒžã‚¹ã‚¯ã‚’戻す
    307   ・スタックポインタのアライメント調整分を戻す
    308   ・戻りå
    309 ˆã®ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã‚„システム状æ
    310 ‹ã«å¿œã˜ã¦å‰²è¾¼ã¿/例外発生å
    311 ƒã¸ãƒªã‚¿ãƒ¼ãƒ³
    312     またはé
    313 å»¶ãƒ‡ã‚£ã‚¹ãƒ‘ッチを実行する
    314   ・ELR_ELxに戻りå
    315 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ï¼ŒSPSR_ELxにプロセッサ状æ
    316 ‹ãŒãã‚Œãžã‚Œ
    317     セットされている状æ
    318 ‹ã§eret命令を実行し,割込み/例外からリターン
    319 
    320 
    321 â—‹OSの実è£
    322 
    323 
    324 1.コア依存部名称: arm64
    325 
    326 ARMv8 では,64ビットモード(AArch64)および32ビットモード(AArch32)の両方をサポートするが
    327 æœ¬å®Ÿè£
    328 ã¯64ビットモードのみをサポートすることを明示するためプロセッサ依存部名称を arm64 とした
    329 
    330 2. 例外モードの使い分け
    331 
    332 æœ¬å®Ÿè£
    333 ã§ã¯ã‚¿ã‚¹ã‚¯ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆï¼Œéžã‚¿ã‚¹ã‚¯ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã„ずれも例外レベル1(EL1)で動作する.
    334 ã‚¿ã‚¹ã‚¯ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã‚’EL0で動作する案も考えられる.その場合は割込み/例外の出口処理において
    335 é
    336 å»¶ãƒ‡ã‚£ã‚¹ãƒ‘ッチの前に例外レベルの切り替えがå¿
    337 è¦ã¨ãªã‚‹ï¼Ž
    338 
    339 3.ディスパッチャの実行モード
    340 
    341 æœ¬å®Ÿè£
    342 ã§ã¯ã™ã¹ã¦ä¾‹å¤–レベル1で動作するため,ディスパッチャは例外レベル1(EL1)で動作する.
    343 
    344 
    345 4.スタックの使い分け
    346 
    347 SSPではタスクコンテキスト,非タスクコンテキストå
    348 ±ã«ä¸€ã¤ã®ã‚¹ã‚¿ãƒƒã‚¯ã‚’å
    349 ±ç”¨ã™ã‚‹ï¼Ž
    350 æœ¬å®Ÿè£
    351 ã§ã¯SP_ELxを使用している.
    352 ã“の他にSP_EL0を使用する実è£
    353 ã‚‚考えられる.その場合は割込み/例外のå
    354 ¥å£å‡¦ç†ã«ã¦
    355 ãƒ¬ã‚¸ã‚¹ã‚¿ã‚’保存する前にSP_EL0へのスタック切り替えを行う.
    356 
    357 5.コンテキストの判定
    358 
    359 å‰²è¾¼ã¿/例外のネスト回数を保持する変数(intnest)が0ならタスクタスクコンテキスト,
    360 1以上なら非タスクコンテキストとする.
    361 ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆæ¯Žã«ä¾‹å¤–レベルを分ける実è£
    362 ã‚’取る場合はPSTATEのビット2および3で
    363 ä¾‹å¤–レベルを読み出すことにより判別するという方法も考えられる.
    364 æœ¬å®Ÿè£
    365 ã§ã¯ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã«ã‚ˆã‚‰ãšåŒã˜ä¾‹å¤–レベルを使用し,プロセッサの
    366 ã‚¹ãƒ†ãƒ¼ã‚¿ã‚¹ãƒ¬ã‚¸ã‚¹ã‚¿ã§ã¯åˆ¤åˆ¥ãŒã§ããªã„ため変数で判別する.
    367 
    368 6. CPUロック
    369 
    370 CPUロックPSTATE.IによりCPUロックを実現する.
    371 
    372 7. 割込みロックとCPU例外の関係
    373 
    374 FIQをカーネル管理外の割込みとするため,割込みロックはPSTATE.Iに加えて
    375 PSTATE.Fも用いて実現する.ただし,フラグをお互いに独立させるため,
    376 å‰²è¾¼ã¿ãƒ­ãƒƒã‚¯çŠ¶æ
    377 ‹ã®è¨­å®š/解除の際は,ロック前にCPUロックフラグ(=PSTATE.I)の
    378 çŠ¶æ
    379 ‹ã‚’保存し,解除前にå
    380 ƒã®çŠ¶æ
    381 ‹ã«æˆ»ã™ã‚ˆã†ã«ã—ている.
    382 
    383 8. 外部優å
    384 ˆåº¦ã¨å†
    385 éƒ¨å„ªå
    386 ˆåº¦
    387 
    388 å¤–部優å
    389 ˆåº¦ã¨ã¯APIで指定する割込み優å
    390 ˆåº¦(PRI型)のことであり,値が小さい
    391 ã»ã©å„ªå
    392 ˆåº¦ãŒé«˜ã„.割込みハンドラには,-1から連続した負の値を設定可能で
    393 ã‚る.GICの場合,å†
    394 éƒ¨å„ªå
    395 ˆåº¦ã¯ï¼ŒGICC_PMRレジスタに設定する値である.
    396 å¤–部優å
    397 ˆåº¦ã¨å†
    398 éƒ¨å„ªå
    399 ˆåº¦ã®å¤‰æ›ã¯ä»¥ä¸‹ã®ãƒžã‚¯ãƒ­ã§è¡¨ç¾ã•ã‚Œã‚‹ï¼Ž
    400 
    401 /* 外部表現への変換 */
     222割込み/例外発生時の主なシーケンスは次のようになる(遷移先の例外レベルをELxと表現する)
     223
     224(ハードウェアの処理)
     225  ・PSTATEをSPSR_ELxに保存する
     226  ・リターンアドレスをELR_ELxに保存する
     227  ・PSTATE.{D,A,I,F}を1にセットする
     228  ・同期例外およびSError割込みのとき,例外要因情報をESR_ELxに保存する
     229  ・スタックポインタをSP_ELxに切り替える
     230  ・ELxへ遷移する
     231
     232(ソフトウェアでの処理)
     233  ・(発生時にSP_EL0を使用していた場合)スタックを割込み発生前(SP_EL0)に戻す
     234  ・汎用レジスタ(X0-X30)をスタックに保存
     235  ・SPSR_ELx, ESR_ELx, ELR_ELxをスタックに保存
     236  ・スタックポインタのアライメントを調整
     237  ・割込み番号(GICC_IARから取得),例外番号(オフセット毎に定義した値)をスタックに保存
     238  ・割込み発生前の割込み優先度マスクをスタックに保存
     239  ・GICC_PMRに受け付けた割込みの割込み優先度をセット
     240  ・割込み/例外ネストカウンタのインクリメント
     241  ・(割込みの場合)CPUロック解除
     242  ・ベクタテーブルを読み込みハンドラを実行する
     243
     244●例外/割込みからのリターン
     245
     246(ソフトウェアでの処理)
     247  ・CPUロック状態へ移行
     248  ・割込み/例外ネスとカウンタのデクリメント
     249  ・GICC_PMRに割込み発生前の優先度マスクを戻す
     250  ・スタックポインタのアライメント調整分を戻す
     251  ・戻り先のコンテキストやシステム状態に応じて割込み/例外発生元へリターン
     252    または遅延ディスパッチを実行する
     253  ・ELR_ELxに戻り先アドレス,SPSR_ELxにプロセッサ状態がそれぞれ
     254    セットされている状態でeret命令を実行し,割込み/例外からリターン
     255
     256
     257○OSの実装
     258
     2591.コア依存部名称: arm64
     260
     261ARMv8 では,64ビットモード(AArch64)および32ビットモード(AArch32)の両方をサポートするが
     262本実装は64ビットモードのみをサポートすることを明示するためプロセッサ依存部名称を arm64 とした
     263
     2642. 例外モードの使い分け
     265
     266本実装ではタスクコンテキスト,非タスクコンテキストいずれも例外レベル1(EL1)で動作する.
     267タスクコンテキストをEL0で動作する案も考えられる.その場合は割込み/例外の出口処理において
     268遅延ディスパッチの前に例外レベルの切り替えが必要となる.
     269
     2703.ディスパッチャの実行モード
     271
     272本実装ではすべて例外レベル1で動作するため,ディスパッチャは例外レベル1(EL1)で動作する.
     273
     274
     2754.スタックの使い分け
     276
     277SSPではタスクコンテキスト,非タスクコンテキスト共に一つのスタックを共用する.
     278本実装ではSP_ELxを使用している.
     279この他にSP_EL0を使用する実装も考えられる.その場合は割込み/例外の入口処理にて
     280レジスタを保存する前にSP_EL0へのスタック切り替えを行う.
     281
     2825.コンテキストの判定
     283
     284割込み/例外のネスト回数を保持する変数(intnest)が0ならタスクタスクコンテキスト,
     2851以上なら非タスクコンテキストとする.
     286コンテキスト毎に例外レベルを分ける実装を取る場合はPSTATEのビット2および3で
     287例外レベルを読み出すことにより判別するという方法も考えられる.
     288本実装ではコンテキストによらず同じ例外レベルを使用し,プロセッサの
     289ステータスレジスタでは判別ができないため変数で判別する.
     290
     2916. CPUロック
     292
     293CPUロックPSTATE.IによりCPUロックを実現する.
     294
     2957. 割込みロックとCPU例外の関係
     296
     297FIQをカーネル管理外の割込みとするため,割込みロックはPSTATE.Iに加えて
     298PSTATE.Fも用いて実現する.ただし,フラグをお互いに独立させるため,
     299割込みロック状態の設定/解除の際は,ロック前にCPUロックフラグ(=PSTATE.I)の
     300状態を保存し,解除前に元の状態に戻すようにしている.
     301
     3028. 外部優先度と内部優先度
     303
     304外部優先度とはAPIで指定する割込み優先度(PRI型)のことであり,値が小さい
     305ほど優先度が高い.割込みハンドラには,-1から連続した負の値を設定可能で
     306ある.GICの場合,内部優先度は,GICC_PMRレジスタに設定する値である.
     307外部優先度と内部優先度の変換は以下のマクロで表現される.
     308
     309/* 外部表現への変換 */
    402310#define EXT_IPM(pri) \
    403311                        (((PRI)((pri) >> GIC_PRI_SHIFT)) - (GIC_PRI_LEVEL - 1))
    404312
    405 /* å†
    406 éƒ¨è¡¨ç¾ã¸ã®å¤‰æ› */
     313/* 内部表現への変換 */
    407314#define INT_IPM(ipm) \
    408315                        (((uint_t)((ipm) + (GIC_PRI_LEVEL - 1))) << GIC_PRI_SHIFT)
    409316
    410 ã“こでGIC_PRI_LEVELはサポートする割込み優å
    411 ˆåº¦ã®æ•°ï¼ŒGIC_PRI_SHIFTはGICC_PMRレジスタå†
    412 
    413 ã®ï¼Œå†
    414 éƒ¨å„ªå
    415 ˆåº¦ã®å€¤ãŒæ ¼ç´ã•ã‚Œã‚‹ä½ç½®ï¼ˆãƒ“ット0からのオフセット)を表す.
    416 
    417 
    418 9. カーネル管理å†
    419 ã®æœ€é«˜å„ªå
    420 ˆåº¦(CPUロック状æ
    421 ‹ã§ã®å„ªå
    422 ˆåº¦ãƒžã‚¹ã‚¯)
    423 
    424 GICの場合,カーネル管理å†
    425 ã®å‰²è¾¼ã¿ã®æœ€é«˜å„ªå
    426 ˆåº¦ã¯è¨­å®šå¯èƒ½ãªå¤–部優å
    427 ˆåº¦ã®æœ€é«˜å€¤ã¨åŒã˜ã¨ã™ã‚‹ï¼Ž
    428 
    429 
    430 ä»¥ä¸Šï¼Ž
     317ここでGIC_PRI_LEVELはサポートする割込み優先度の数,GIC_PRI_SHIFTはGICC_PMRレジスタ内
     318の,内部優先度の値が格納される位置(ビット0からのオフセット)を表す.
     319
     320
     3219. カーネル管理内の最高優先度(CPUロック状態での優先度マスク)
     322
     323GICの場合,カーネル管理内の割込みの最高優先度は設定可能な外部優先度の最高値と同じとする.
     324
     325
     326以上.
  • ssp_rpi3/trunk/arch/arm64_gcc/common/core_kernel.h

    • Property svn:mime-type set to text/plain; charset=utf-8
    r384 r386  
    88 *             Nagoya Municipal Industrial Research Institute, 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  *    kernel.hのプロセッサ依存部(ARMv8-A用)
     43 *    kernel.hのプロセッサ依存部(ARMv8-A用)
    5944 *
    60  *  このインクルードファイルは,target_kernel.h(または,そこからインク
    61  *  ルードされるファイル)のみからインクルードされる.他のファイルから
    62  *  直接インクルードしてはならない.
     45 *  このインクルードファイルは,target_kernel.h(または,そこからインク
     46 *  ルードされるファイル)のみからインクルードされる.他のファイルから
     47 *  直接インクルードしてはならない.
    6348 */
    6449
     
    6752
    6853/*
    69  *  タイムティックの定義
     54 *  タイムティックの定義
    7055 */
    7156#ifndef TIC_NUME
    72     #define TIC_NUME                        1U              /* タイムティックの周期の分子 */
     57    #define TIC_NUME                        1U              /* タイムティックの周期の分子 */
    7358#endif
    7459#ifndef TIC_DENO
    75     #define TIC_DENO                        1U              /* タイムティックの周期の分母 */
     60    #define TIC_DENO                        1U              /* タイムティックの周期の分母 */
    7661#endif
    7762
     
    7964
    8065/*
    81  *  スタックの型
    82  *    スタックポインタのアライメントはポインタサイズの倍にするå¿
    83 è¦ãŒã‚ã‚‹
     66 *  スタックの型
     67 *    スタックポインタのアライメントはポインタサイズの倍にする必要がある
    8468 */
    8569#define TOPPERS_STK_T  uint128_t
  • ssp_rpi3/trunk/arch/arm64_gcc/common/core_kernel.trb

    • Property svn:mime-type set to text/plain; charset=utf-8
    r384 r386  
    1212#
    1313#
    14 #   ä¸Šè¨˜è‘—作権è€
    15 ã¯ï¼Œä»¥ä¸‹ã®(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
    16 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    17 #   å¤‰ãƒ»å†é
    18 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    19 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    20 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    21 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    22 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    23 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    24 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    25 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    26 #       è€
    27 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    28 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    29 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    30 #       ç”¨ã§ããªã„形で再é
    31 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    32 #       ã¨ï¼Ž
    33 #     (a) 再é
    34 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    35 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    36 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    37 #     (b) 再é
    38 å¸ƒã®å½¢æ
    39 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    40 #         å ±å‘Šã™ã‚‹ã“と.
    41 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    42 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    43 ãŠã‚ˆã³TOPPERSプロジェクトをå
    44 è²¬ã™ã‚‹ã“と.
    45 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    46 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    47 ãŠã‚ˆã³TOPPERSプロジェクトを
    48 #       å
    49 è²¬ã™ã‚‹ã“と.
     14#   上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     15#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     16#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     17#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     18#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     19#       スコード中に含まれていること.
     20#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     21#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     22#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     23#       の無保証規定を掲載すること.
     24#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     25#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     26#       と.
     27#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     28#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     29#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     30#         報告すること.
     31#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     32#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     33#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     34#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     35#       免責すること.
    5036#
    51 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    52 ãŠ
    53 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    54 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    55 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    56 #   ã®è²¬ä»»ã‚’負わない.
     37#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     38#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     39#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     40#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     41#   の責任を負わない.
    5742#
    5843#   $Id$
     
    6045
    6146#
    62 ãƒ‘ス2の生成スクリプトのコア依存部(ARMv8-A用)
     47パス2の生成スクリプトのコア依存部(ARMv8-A用)
    6348#
    6449
    6550#
    66 ãƒã‚§ãƒƒã‚¯æ–¹æ³•ã®æŒ‡å®š
     51チェック方法の指定
    6752#
    6853$CHECK_STKSZ_ALIGN = 16
    6954
    7055#
    71 ã‚¿ãƒ¼ã‚²ãƒƒãƒˆéžä¾å­˜éƒ¨ã®ã‚¤ãƒ³ã‚¯ãƒ«ãƒ¼ãƒ‰
     56ターゲット非依存部のインクルード
    7257#
    7358IncludeTrb("kernel/kernel.trb")
  • ssp_rpi3/trunk/arch/arm64_gcc/common/core_rename.def

    • Property svn:mime-type set to text/plain; charset=utf-8
  • ssp_rpi3/trunk/arch/arm64_gcc/common/core_rename.h

    • Property svn:mime-type set to text/plain; charset=utf-8
  • ssp_rpi3/trunk/arch/arm64_gcc/common/core_sil.h

    • Property svn:mime-type set to text/plain; charset=utf-8
    r384 r386  
    88 *             Nagoya Municipal Industrial Research Institute, 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のコア依存部(ARMv8-A用)
     43 *   sil.hのコア依存部(ARMv8-A用)
    5944 */
    6045
     
    6550
    6651/*
    67  *  エンディアンの定義
     52 *  エンディアンの定義
    6853 */
    6954#define SIL_ENDIAN_LITTLE
     
    7257
    7358/*
    74  *  å
    75 ¨å‰²è¾¼ã¿ãƒ­ãƒƒã‚¯ãƒ•ãƒ©ã‚°ã®ã‚»ãƒƒãƒˆ(NMIを除くすべての割込みの禁止)
     59 *  全割込みロックフラグのセット(NMIを除くすべての割込みの禁止)
    7660 */
    7761Inline bool_t
     
    9377
    9478/*
    95  *  å
    96 ¨å‰²è¾¼ã¿ãƒ­ãƒƒã‚¯ãƒ•ãƒ©ã‚°ã®è§£é™¤
     79 *  全割込みロックフラグの解除
    9780 */
    9881Inline void
     
    10992
    11093/*
    111  *  å
    112 ¨å‰²è¾¼ã¿ãƒ­ãƒƒã‚¯çŠ¶æ
    113 ‹ã®åˆ¶å¾¡
     94 *  全割込みロック状態の制御
    11495 */
    11596#define SIL_PRE_LOC      bool_t  TOPPERS_locked
  • ssp_rpi3/trunk/arch/arm64_gcc/common/core_stddef.h

    • Property svn:mime-type set to text/plain; charset=utf-8
    r384 r386  
    88 *             Nagoya Municipal Industrial Research Institute, 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のコア依存部(ARMv8-A用)
     43 *  t_stddef.hのコア依存部(ARMv8-A用)
    5944 *
    60  *  このインクルードファイルは,target_stddef.h(または,そこからインク
    61  *  ルードされるファイル)のみからインクルードされる.他のファイルから
    62  *  直接インクルードしてはならない.
     45 *  このインクルードファイルは,target_stddef.h(または,そこからインク
     46 *  ルードされるファイル)のみからインクルードされる.他のファイルから
     47 *  直接インクルードしてはならない.
    6348 */
    6449
     
    6752
    6853/*
    69  *  ターゲットを識別するためのマクロの定義
     54 *  ターゲットを識別するためのマクロの定義
    7055 */
    71 #define TOPPERS_ARM64           /* コア略称 */
     56#define TOPPERS_ARM64           /* コア略称 */
    7257
    7358#ifndef TOPPERS_MACRO_ONLY
    7459
    7560/*
    76  *  データ型の定義
     61 *  データ型の定義
    7762 */
    7863typedef __int128_t    int128_t;
  • ssp_rpi3/trunk/arch/arm64_gcc/common/core_support.S

    • Property svn:mime-type set to text/plain; charset=utf-8
    r384 r386  
    88 *             Nagoya Municipal Industrial Research Institute, 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 è²¬ã™ã‚‹ã“と.
    46  *
    47  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    48 ãŠ
    49  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    50  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    51  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    52  *  の責任を負わない.
    53  *
    54  */
    55 
    56 /*
    57  *  プロセッサ依存モジュール アセンブリ言語部(ARM64用)
     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 *      免責すること.
     32 *
     33 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37 *  の責任を負わない.
     38 *
     39 */
     40
     41/*
     42 *  プロセッサ依存モジュール アセンブリ言語部(ARM64用)
    5843 */
    5944
    6045#define TOPPERS_MACRO_ONLY
    61 #define UINT_C(val)     (val)           /* uint_t型の定数を作るマクロ */
    62 #define ULONG_C(val)    (val)           /* ulong_t型の定数を作るマクロ */
    63 #define UINT64_C(val)   (val)           /* uint64_t型の定数を作るマクロ */
    64 #define CAST(type, val) (val)           /* 型キャストを行うマクロ */
     46#define UINT_C(val)     (val)           /* uint_t型の定数を作るマクロ */
     47#define ULONG_C(val)    (val)           /* ulong_t型の定数を作るマクロ */
     48#define UINT64_C(val)   (val)           /* uint64_t型の定数を作るマクロ */
     49#define CAST(type, val) (val)           /* 型キャストを行うマクロ */
    6550
    6651#include "kernel_impl.h"
    6752
    6853/*
    69  *  ディスパッチャの動作開始
     54 *  ディスパッチャの動作開始
    7055 */
    7156    .text
     
    7560start_dispatch:
    7661    /*
    77      *  このルーチンは,カーネル起動時に,以下の状æ
    78 ‹ã§å‘¼ã³å‡ºã•ã‚Œã‚‹ï¼Ž
    79      *    ・すべての割込みを禁止した状æ
    80 ‹å‰²è¾¼ã¿ãƒ­ãƒƒã‚¯çŠ¶æ
    81 ‹ã¨åŒç­‰ï¼‰
    82      *    ・割込み優å
    83 ˆåº¦ãƒžã‚¹ã‚¯å
    84 ¨è§£é™¤çŠ¶æ
    85 ‹
     62     *  このルーチンは,カーネル起動時に,以下の状態で呼び出される.
     63     *    ・すべての割込みを禁止した状態割込みロック状態と同等)
     64     *    ・割込み優先度マスク全解除状態
    8665     *
    87      *  ここでは dispatcher を呼び出す前の初期設定を行う.
    88      *  (1) システム状æ
    89 ‹ã®åˆæœŸåŒ–.以下の状æ
    90 ‹ã¸ç§»è¡Œã™ã‚‹ï¼Ž
    91      *    ・å
    92 ¨å‰²è¾¼ã¿ãƒ­ãƒƒã‚¯è§£é™¤çŠ¶æ
    93 ‹(カーネル管理外の割込み許可)
    94      *    ・CPUロック状æ
    95 ‹(カーネル管理の割込み禁止)
    96      *    ・割込み優å
    97 ˆåº¦ãƒžã‚¹ã‚¯å
    98 ¨è§£é™¤çŠ¶æ
    99 ‹
    100      *    ・ディスパッチ許可状æ
    101 ‹
     66     *  ここでは dispatcher を呼び出す前の初期設定を行う.
     67     *  (1) システム状態の初期化.以下の状態へ移行する.
     68     *    ・全割込みロック解除状態(カーネル管理外の割込み許可)
     69     *    ・CPUロック状態(カーネル管理の割込み禁止)
     70     *    ・割込み優先度マスク全解除状態
     71     *    ・ディスパッチ許可状態
    10272     *
    103      *    (1-1) 割込み優å
    104 ˆåº¦ãƒžã‚¹ã‚¯ã¯å‰æã‚ˆã‚Šã™ã§ã«
    105      *          モデル上の)割込み優å
    106 ˆåº¦ãƒžã‚¹ã‚¯å
    107 ¨è§£é™¤çŠ¶æ
    108 ‹ã«ãªã£ã¦ã„る.
    109      *    (1-2) ディスパッチ禁止フラグは task_initialize で disdsp を false に
    110      *          初期化しているため,すでにディスパッチ許可状æ
    111 ‹ã«ãªã£ã¦ã„る.
    112      *    (1-3) ここでは割込みロック状æ
    113 ‹ã‚’解除し,CPUロック状æ
    114 ‹ã®è¨­å®šã‚’行う.
     73     *    (1-1) 割込み優先度マスクは前提よりすでに
     74     *          モデル上の)割込み優先度マスク全解除状態になっている.
     75     *    (1-2) ディスパッチ禁止フラグは task_initialize で disdsp を false に
     76     *          初期化しているため,すでにディスパッチ許可状態になっている.
     77     *    (1-3) ここでは割込みロック状態を解除し,CPUロック状態の設定を行う.
    11578     *
    116      *  (2) スタックポインタの初期化
    117      *      start_dispatch が呼び出されると,今後ここに戻ってくることはないため
    118      *      スタックポインタをここで初期化する.
     79     *  (2) スタックポインタの初期化
     80     *      start_dispatch が呼び出されると,今後ここに戻ってくることはないため
     81     *      スタックポインタをここで初期化する.
    11982     */
    12083    ldr x0, =_kernel_istkpt // setup stack
     
    12285    mov sp, x0
    12386
    124     // F フラグをクリア(割込みロック解除,CPUロック相当)
     87    // F フラグをクリア(割込みロック解除,CPUロック相当)
    12588    msr   daifclr, #AARCH64_DAIF_FIQ
    12689
    127     // dispatcher呼び出し
     90    // dispatcher呼び出し
    12891    b      dispatcher
    12992
    13093/*
    131  *  カーネルの終了処理の呼出し
    132  *
    133  *  スタックを非タスクコンテキスト用に切り替え.
     94 *  カーネルの終了処理の呼出し
     95 *
     96 *  スタックを非タスクコンテキスト用に切り替え.
    13497 *
    13598 */
     
    140103call_exit_kernel:
    141104    /*
    142      *  スタックポインタの初期化
     105     *  スタックポインタの初期化
    143106     */
    144107    ldr    x0, =_kernel_istkpt
     
    146109    mov    sp, x0
    147110
    148     // å
    149 ¨ã¦ã®ä¾‹å¤–をマスク(å
    150 ¨å‰²è¾¼ã¿ãƒ­ãƒƒã‚¯ç›¸å½“)
     111    // 全ての例外をマスク(全割込みロック相当)
    151112    msr    daifset, #(AARCH64_DAIF_ALL)
    152113
    153     b      exit_kernel       /* カーネルの終了処理を呼ぶ */
    154 
    155 
    156 /*
    157  * 割込み/例外コンテキスト保存処理
     114    b      exit_kernel       /* カーネルの終了処理を呼ぶ */
     115
     116
     117/*
     118 * 割込み/例外コンテキスト保存処理
    158119 */
    159120.macro __save_context
    160121    /*
    161      *  x0 - x29 の保存(x0,x1ペアからx28, x29まで)
     122     *  x0 - x29 の保存(x0,x1ペアからx28, x29まで)
    162123     */
    163124    stp    x1, x0, [sp, #-16]!
     
    178139
    179140    /*
    180      * spsr_el1, x30をペアで保存
     141     * spsr_el1, x30をペアで保存
    181142     */
    182143    mrs    x21, spsr_el1
     
    184145
    185146    /*
    186      * esr_el1, elr_el1 をペアで保存
     147     * esr_el1, elr_el1 をペアで保存
    187148     */
    188149    mrs    x21, esr_el1
     
    191152
    192153    /*
    193      * 追加の格納領域を確保するため,SPを減算しておく
     154     * 追加の格納領域を確保するため,SPを減算しておく
    194155     */
    195156    sub     sp, sp, #16
     
    197158
    198159/*
    199  * コンテキスト復帰処理
     160 * コンテキスト復帰処理
    200161 */
    201162.macro __restore_context
    202163    /*
    203      * スタックに保存した一部データの破棄
     164     * スタックに保存した一部データの破棄
    204165     */
    205166    mov    x1, #16
    206167    add    sp, sp, x1
    207168    /*
    208      * ELR の復å
    209 ƒ(ESRは破棄)
     169     * ELR の復元(ESRは破棄)
    210170     */
    211171    ldp    x21, x22, [sp], #16
    212172    msr    elr_el1, x22
    213173    /*
    214      * SPSR/x30 の復å
    215 ƒ
     174     * SPSR/x30 の復元
    216175     */
    217176    ldp    x21, x30, [sp], #16
     
    219178
    220179    /*
    221      * x0 - x29 の復å
    222 ƒ
     180     * x0 - x29 の復元
    223181     */
    224182    ldp    x29, x28, [sp], #16
     
    240198
    241199/*
    242  *  (カーネル管理外の)CPU例外/FIQの出口処理
     200 *  (カーネル管理外の)CPU例外/FIQの出口処理
    243201 */
    244202    .text
     
    248206ret_exc:
    249207ret_fiq:
    250     __restore_context    // レジスタ復帰
     208    __restore_context    // レジスタ復帰
    251209    eret
    252210
    253211/*
    254  *  割込み/(カーネル管理の)CPU例外の出口処理
    255  *    前提:CPUロック状æ
    256 ‹, ネストカウンタデクリメント済み
     212 *  割込み/(カーネル管理の)CPU例外の出口処理
     213 *    前提:CPUロック状態, ネストカウンタデクリメント済み
    257214 */
    258215    .text
     
    260217    .global ret_int
    261218ret_int:
    262     // 戻りå
    263 ˆã®ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã‚’確認し,多段割込みならリターン
     219    // 戻り先のコンテキストを確認し,多段割込みならリターン
    264220    ldr    x1, =_kernel_intnest
    265221    ldrb   w3, [x1]
    266222    cbnz   w3, int_return
    267223
    268 ret_int_2:        // 初段の割込みの場合
    269     // reqflg が false なら呼び出しå
    270 ƒã¸æˆ»ã‚‹
     224ret_int_2:        // 初段の割込みの場合
     225    // reqflg が false なら呼び出し元へ戻る
    271226    ldr    x0, =reqflg
    272227    ldr    w1, [x0]
    273228    cbz    w1, int_return
    274229
    275 ret_int_3:        // reqflg が true の場合
     230ret_int_3:        // reqflg が true の場合
    276231    mov    w1, #0        // reqflg = false
    277232    str    w1, [x0]
    278233
    279     // ディスパッチ禁止なら呼び出しå
    280 ƒã¸æˆ»ã‚‹
     234    // ディスパッチ禁止なら呼び出し元へ戻る
    281235    ldr    x0, =disdsp
    282236    ldr    w1, [x0]
     
    284238
    285239    /*
    286      *  é
    287 å»¶ãƒ‡ã‚£ã‚¹ãƒ‘ッチ
    288      *    search_schedtsk の返値(x0)を引数として run_task を呼び出す
     240     *  遅延ディスパッチ
     241     *    search_schedtsk の返値(x0)を引数として run_task を呼び出す
    289242     */
    290243    bl    search_schedtsk
     
    292245
    293246    /*
    294      *  呼び出しå
    295 ƒã¸ãƒªã‚¿ãƒ¼ãƒ³
     247     *  呼び出し元へリターン
    296248     */
    297249int_return:
    298     __restore_context    // レジスタ復帰
     250    __restore_context    // レジスタ復帰
    299251    eret
    300252
    301253/*
    302  *  割込みベクタ
    303  *    最初に割込み発生前のスタックに戻してからレジスタを保存する
    304  *    ハードウェアによってPSTATE.{I,F} がセット済であることを前提とする
     254 *  割込みベクタ
     255 *    最初に割込み発生前のスタックに戻してからレジスタを保存する
     256 *    ハードウェアによってPSTATE.{I,F} がセット済であることを前提とする
    305257 */
    306258    .text
     
    313265
    314266    // Sync EL1
    315     msr    spsel,  #0               // 例外発生前のスタック(SP_EL0)に戻す
    316     __save_context
    317     mov    x22, #0                  // 例外番号をx22にセット
     267    msr    spsel,  #0               // 例外発生前のスタック(SP_EL0)に戻す
     268    __save_context
     269    mov    x22, #0                  // 例外番号をx22にセット
    318270    b      chip_exc_entry
    319271
    320272    // IRQ EL1
    321273    .align 7
    322     msr    spsel,   #0              // 例外発生前のスタック(SP_EL0)に戻す
     274    msr    spsel,   #0              // 例外発生前のスタック(SP_EL0)に戻す
    323275    __save_context
    324276    b      chip_int_entry
     
    326278    // FIQ EL1
    327279    .align 7
    328     msr    spsel, #0                // 例外発生前のスタック(SP_EL0)へ戻す
     280    msr    spsel, #0                // 例外発生前のスタック(SP_EL0)へ戻す
    329281    __save_context
    330282    b      chip_fiq_entry
     
    332284    // SError EL1
    333285    .align 7
    334     msr    spsel, #0                // 例外発生前のスタック(SP_EL0)へ戻す
    335     __save_context
    336     mov    x22, #1                  // 例外番号をx22にセット
     286    msr    spsel, #0                // 例外発生前のスタック(SP_EL0)へ戻す
     287    __save_context
     288    mov    x22, #1                  // 例外番号をx22にセット
    337289    b      chip_exc_entry
    338290
     
    344296    .align 7
    345297    __save_context
    346     mov    x22, #2                  // 例外番号をx22にセット
     298    mov    x22, #2                  // 例外番号をx22にセット
    347299    b      chip_exc_entry
    348300
     
    360312    .align 7
    361313    __save_context
    362     mov    x22, #3                  // 例外番号をx22にセット
     314    mov    x22, #3                  // 例外番号をx22にセット
    363315    b      chip_exc_entry
    364316
     
    369321    // Sync EL0
    370322    .align 7
    371     msr    spsel,  #0               // 例外発生前のスタック(SP_EL0)に戻す
    372     __save_context
    373     mov    x22, #4                  // 例外番号をx22にセット
     323    msr    spsel,  #0               // 例外発生前のスタック(SP_EL0)に戻す
     324    __save_context
     325    mov    x22, #4                  // 例外番号をx22にセット
    374326    b      chip_exc_entry
    375327
    376328   // IRQ EL0
    377329    .align 7
    378     msr    spsel,  #0               // 例外発生前のスタック(SP_EL0)に戻す
     330    msr    spsel,  #0               // 例外発生前のスタック(SP_EL0)に戻す
    379331    __save_context
    380332    b      chip_int_entry
     
    382334    // FIQ EL0
    383335    .align 7
    384     msr    spsel,  #0               // 例外発生前のスタック(SP_EL0)に戻す
     336    msr    spsel,  #0               // 例外発生前のスタック(SP_EL0)に戻す
    385337    __save_context
    386338    b      chip_fiq_entry
     
    388340    // Error EL0
    389341    .align 7
    390     msr    spsel,  #0               // 例外発生前のスタック(SP_EL0)に戻す
    391     __save_context
    392     mov    x22, #5                  // 例外番号をx22にセット
     342    msr    spsel,  #0               // 例外発生前のスタック(SP_EL0)に戻す
     343    __save_context
     344    mov    x22, #5                  // 例外番号をx22にセット
    393345    b      chip_exc_entry
    394346
     
    399351    // AArch32 sync
    400352    .align 7
    401     msr    spsel,  #0               // 例外発生前のスタック(SP_EL0)に戻す
    402     __save_context
    403     mov    x22, #6                  // 例外番号をx22にセット
     353    msr    spsel,  #0               // 例外発生前のスタック(SP_EL0)に戻す
     354    __save_context
     355    mov    x22, #6                  // 例外番号をx22にセット
    404356    b      chip_exc_entry
    405357
    406358    // AArch32 IRQ
    407359    .align 7
    408     msr    spsel,  #0               // 例外発生前のスタック(SP_EL0)に戻す
     360    msr    spsel,  #0               // 例外発生前のスタック(SP_EL0)に戻す
    409361    __save_context
    410362    b      chip_int_entry
     
    412364    // AArch32 FIQ
    413365    .align 7
    414     msr    spsel,  #0               // 例外発生前のスタック(SP_EL0)に戻す
     366    msr    spsel,  #0               // 例外発生前のスタック(SP_EL0)に戻す
    415367    __save_context
    416368    b      chip_fiq_entry
     
    418370    // AArch32 Error
    419371    .align 7
    420     msr    spsel,  #0               // 例外発生前のスタック(SP_EL0)に戻す
    421     __save_context
    422     mov    x22, #7                  // 例外番号をx22にセット
    423     b      chip_exc_entry
     372    msr    spsel,  #0               // 例外発生前のスタック(SP_EL0)に戻す
     373    __save_context
     374    mov    x22, #7                  // 例外番号をx22にセット
     375    b      chip_exc_entry
  • ssp_rpi3/trunk/arch/arm64_gcc/common/core_sym.def

    • Property svn:mime-type set to text/plain; charset=utf-8
  • ssp_rpi3/trunk/arch/arm64_gcc/common/core_test.h

    • Property svn:mime-type set to text/plain; charset=utf-8
    r384 r386  
    88 *             Nagoya Municipal Industrial Research Institute, 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  *  テストプログラムのチップ依存定義(ARMv8-A用)
     43 *  テストプログラムのチップ依存定義(ARMv8-A用)
    5944 */
    6045
     
    6348
    6449/*
    65  *  コアでå
    66 ±é€šãªå®šç¾©
     50 *  コアで共通な定義
    6751 */
    6852
  • ssp_rpi3/trunk/arch/arm64_gcc/common/core_timer.c

    • Property svn:mime-type set to text/plain; charset=utf-8
    r384 r386  
    88 *             Nagoya Municipal Industrial Research Institute, 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  *  タイマドライバ(Generic Timer)
     43 *  タイマドライバ(Generic Timer)
    5944 */
    6045#include "kernel_impl.h"
     
    6348
    6449/*
    65  *  タイマの周波数(単位: kHz)
     50 *  タイマの周波数(単位: kHz)
    6651 */
    6752static uint32_t timer_clock;
    6853
    6954/*
    70  *  タイマの設定値(比較対象とする値)
     55 *  タイマの設定値(比較対象とする値)
    7156 */
    7257static uint64_t timer_cval;
    7358
    7459/*
    75  *  タイマの開始
     60 *  タイマの開始
    7661 */
    7762Inline void
     
    8671
    8772/*
    88  *  タイマの停止
     73 *  タイマの停止
    8974 */
    9075Inline void
     
    9883
    9984/*
    100  *  タイマの起動処理
     85 *  タイマの起動処理
    10186 */
    10287void
     
    10792
    10893    /*
    109      *  タイマの停止
     94     *  タイマの停止
    11095     */
    11196    target_timer_stop();
    11297
    11398    /*
    114      *  プリスケーラ(=2^31 --> divider=1)
     99     *  プリスケーラ(=2^31 --> divider=1)
    115100     */
    116101    sil_wrw_mem((uint32_t *)(0x40000008), 0x80000000);
     
    120105
    121106    /*
    122      *  1ティックのクロック数
     107     *  1ティックのクロック数
    123108     */
    124109    cyc = (timer_clock * (TIC_NUME) / (TIC_DENO));
    125110
    126111    /*
    127      *  タイマの開始
     112     *  タイマの開始
    128113     */
    129114    clock_write_tval((uint32_t)cyc);
     
    131116
    132117    /*
    133      *  タイマの設定値
     118     *  タイマの設定値
    134119     */
    135120    timer_cval = clock_read_cval();
     
    137122
    138123/*
    139  *  タイマの停止処理
     124 *  タイマの停止処理
    140125 */
    141126void
     
    143128{
    144129    /*
    145      *  タイマの停止
     130     *  タイマの停止
    146131     */
    147132    clock_write_ctrl((uint32_t)0);
     
    149134
    150135/*
    151  *  タイマ割込みハンドラ
     136 *  タイマ割込みハンドラ
    152137 */
    153138void
     
    158143
    159144    /*
    160      *  タイマの停止
     145     *  タイマの停止
    161146     */
    162147    target_timer_stop();
    163148
    164149    /*
    165      *  1ティックのクロック数
     150     *  1ティックのクロック数
    166151     */
    167152    cyc = (timer_clock * (TIC_NUME) / (TIC_DENO));
    168153
    169154    /*
    170      *  タイマの設定値
     155     *  タイマの設定値
    171156     */
    172157    timer_cval = timer_cval + (uint64_t)cyc;
    173158
    174159
    175     // カウンタから読み出し
     160    // カウンタから読み出し
    176161    pct = clock_read_counter();
    177162
     
    184169
    185170    /*
    186      *  タイマの設定
     171     *  タイマの設定
    187172     */
    188173    clock_write_cval((uint64_t)timer_cval);
    189174
    190175    /*
    191      *  タイマの開始
     176     *  タイマの開始
    192177     */
    193178    target_timer_start();
    194179
    195180    i_begin_int(INTNO_TIMER);
    196     signal_time();              /* タイムティックの供給 */
     181    signal_time();              /* タイムティックの供給 */
    197182    i_end_int(INTNO_TIMER);
    198183}
  • ssp_rpi3/trunk/arch/arm64_gcc/common/core_timer.cfg

    • Property svn:mime-type set to text/plain; charset=utf-8
    r384 r386  
    44
    55/*
    6  *              タイマドライバのコンフィギュレーションファイル
     6 *              タイマドライバのコンフィギュレーションファイル
    77 */
    88ATT_INI({ TA_NULL, 0, target_timer_initialize });
  • ssp_rpi3/trunk/arch/arm64_gcc/common/core_timer.h

    • Property svn:mime-type set to text/plain; charset=utf-8
    r384 r386  
    88 *             Nagoya Municipal Industrial Research Institute, 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  *  タイマドライバ(Generic Timer)
     43 *  タイマドライバ(Generic Timer)
    5944 */
    6045
     
    6550
    6651/*
    67  *  タイマ割込みハンドラ登録のための定数
     52 *  タイマ割込みハンドラ登録のための定数
    6853 */
    6954
    70 #define INTNO_TIMER     TINTNO_CNTPNS  /* 割込み番号 */
    71 #define INHNO_TIMER     INTNO_TIMER   /* 割込みハンドラ番号 */
     55#define INTNO_TIMER     TINTNO_CNTPNS  /* 割込み番号 */
     56#define INHNO_TIMER     INTNO_TIMER   /* 割込みハンドラ番号 */
    7257
    7358#ifndef INTPRI_TIMER
    74 #define INTPRI_TIMER    (-3)            /* 割込み優å
    75 ˆåº¦ */
     59#define INTPRI_TIMER    (-3)            /* 割込み優先度 */
    7660#endif
    7761
    7862#ifndef INTATR_TIMER
    79 #define INTATR_TIMER    TA_NULL            /* 割込み属性 */
     63#define INTATR_TIMER    TA_NULL            /* 割込み属性 */
    8064#endif
    8165
    8266/*
    83  *  制御レジスタのビット定義
     67 *  制御レジスタのビット定義
    8468 */
    8569#define CNTP_CTL_ENABLE     (1 << 0)
     
    9175
    9276/*
    93  *  物理タイマの制御レジスタからの読み出し
     77 *  物理タイマの制御レジスタからの読み出し
    9478 */
    9579Inline uint32_t
     
    10488
    10589/*
    106  *  物理タイマの制御レジスタへの書き込み
     90 *  物理タイマの制御レジスタへの書き込み
    10791 */
    10892Inline void
     
    11498
    11599/*
    116  *  物理タイマ(フリーカウンタ)のカウント値の読み出し
     100 *  物理タイマ(フリーカウンタ)のカウント値の読み出し
    117101 */
    118102Inline uint64_t
     
    126110
    127111/*
    128  *  物理タイマ値の読み出し
     112 *  物理タイマ値の読み出し
    129113 */
    130114Inline uint32_t
     
    138122
    139123/*
    140  *  物理タイマ値の書き込み
     124 *  物理タイマ値の書き込み
    141125 */
    142126Inline void
     
    147131
    148132/*
    149  *  タイマの比較値の読み出し
     133 *  タイマの比較値の読み出し
    150134 */
    151135Inline uint64_t
     
    159143
    160144/*
    161  *  タイマの比較値の書き込み
     145 *  タイマの比較値の書き込み
    162146 */
    163147Inline void
     
    168152
    169153/*
    170  *  システムカウンタのクロック周波数の取得
     154 *  システムカウンタのクロック周波数の取得
    171155 */
    172156Inline uint32_t
     
    179163
    180164/*
    181  *  タイマの起動処理
     165 *  タイマの起動処理
    182166 *
    183  *  タイマを初期化し,周期的なタイマ割込み要求を発生させる.
     167 *  タイマを初期化し,周期的なタイマ割込み要求を発生させる.
    184168 */
    185169extern void target_timer_initialize(intptr_t exinf);
    186170
    187171/*
    188  *  タイマの停止処理
     172 *  タイマの停止処理
    189173 */
    190174extern void target_timer_terminate(intptr_t exinf);
    191175
    192176/*
    193  *  タイマ割込みハンドラ
     177 *  タイマ割込みハンドラ
    194178 */
    195179extern void target_timer_handler(void);
  • ssp_rpi3/trunk/arch/arm64_gcc/common/core_unrename.h

    • Property svn:mime-type set to text/plain; charset=utf-8
  • ssp_rpi3/trunk/arch/arm64_gcc/common/core_user.txt

    • Property svn:mime-type set to text/plain; charset=utf-8
    r384 r386  
    11=====================================================================
    2                          ARM64プロセッサ依存部
     2                         ARM64プロセッサ依存部
    33                                  Last Modified: '19/04/16
    44=====================================================================
    55
    66
    7 (1) 対応しているターゲットシステムの種類・構成
     7(1) 対応しているターゲットシステムの種類・構成
    88
    9 ARM64依存部は,ARMv8-A アーキテクチャをターゲットとしている.ARMv8-A は
    10 64ビットアーキテクチャであり命令セットレベルでもARMとは異なるため,
    11 ARM依存部と分けている.
     9ARM64依存部は,ARMv8-A アーキテクチャをターゲットとしている.ARMv8-A は
     1064ビットアーキテクチャであり命令セットレベルでもARMとは異なるため,
     11ARM依存部と分けている.
    1212
    13 ã‚³ã‚¢ç•¥ç§°ç­‰ã¯æ¬¡ã®é€šã‚Šï¼Ž
     13コア略称等は次の通り.
    1414
    15         コア略称:arm64
    16         開発環境略称:gcc
     15        コア略称:arm64
     16        開発環境略称:gcc
    1717
    18 (2) 使用する開発環境と動作検証した条件(バージョン,オプション等)
     18(2) 使用する開発環境と動作検証した条件(バージョン,オプション等)
    1919
    20 ã‚«ãƒ¼ãƒãƒ«ã¯GCCを用いてコンパイルする.動作確認したバージョンは各ターゲ
    21 ãƒƒãƒˆä¾å­˜éƒ¨ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã«è¨˜è¼‰ã™ã‚‹ï¼Ž
     20カーネルはGCCを用いてコンパイルする.動作確認したバージョンは各ターゲ
     21ット依存部のドキュメントに記載する.
    2222
    23 (3) ターゲット定義事é 
    24 ã®è¦å®š
     23(3) ターゲット定義事項の規定
    2524
    26 (3-1) データ型に関する規定
     25(3-1) データ型に関する規定
    2726
    28 ãƒ‡ãƒ¼ã‚¿åž‹ã¯ arch/gcc/tool_stddef.h で定義されているå†
    29 å®¹ã§ï¼Œfloat型と
    30 double型は,それぞれIEEE754準拠の単精度浮動小数点数と倍精度浮動小数点
    31 æ•°ã§ã‚る.
     27データ型は arch/gcc/tool_stddef.h で定義されている内容で,float型と
     28double型は,それぞれIEEE754準拠の単精度浮動小数点数と倍精度浮動小数点
     29数である.
    3230
    33 ã“のほか,スタック領域を確保するためのデータ型のために
    34 int128_t および uint128_t を定義している.
     31このほか,スタック領域を確保するためのデータ型のために
     32int128_t および uint128_t を定義している.
    3533
    36 (3-2) 割込み処理に関する規定
     34(3-2) 割込み処理に関する規定
    3735
    38 ãƒãƒƒãƒ—に搭載される割込みコントローラにより異なる.
    39 ãã®ãŸã‚ï¼Œä»¥ä¸‹ã®äº‹é 
    40 ã«ã¤ã„てはチップ依存部に記載する.
     36チップに搭載される割込みコントローラにより異なる.
     37そのため,以下の事項についてはチップ依存部に記載する.
    4138
    42 ãƒ»å‰²è¾¼ã¿ãƒãƒ³ãƒ‰ãƒ©ç•ªå·ã¨å‰²è¾¼ã¿ç•ªå·ã®å‰²å½“て,両è€
    43 ã®å¯¾å¿œ
    44 ãƒ»å‰²è¾¼ã¿å„ªå
    45 ˆåº¦ã®æ®µéšŽæ•°ï¼ˆTMIN_INTPRIの値),その設定方法
    46 ãƒ»dis_intとena_intのサポートの有無,その制限事é 
     39・割込みハンドラ番号と割込み番号の割当て,両者の対応
     40・割込み優先度の段階数(TMIN_INTPRIの値),その設定方法
     41・dis_intとena_intのサポートの有無,その制限事項
     42・CFG_INTの制限事項と拡張(ターゲット定義で使用できる割込み属性)
     43・カーネル管理外の割込み
    4744
    48 ãƒ»CFG_INTの制限事é 
    49 ã¨æ‹¡å¼µï¼ˆã‚¿ãƒ¼ã‚²ãƒƒãƒˆå®šç¾©ã§ä½¿ç”¨ã§ãã‚‹å‰²è¾¼ã¿å±žæ€§ï¼‰
    50 ãƒ»ã‚«ãƒ¼ãƒãƒ«ç®¡ç†å¤–の割込み
     45(3-3) CPU例外処理に関する規定
    5146
    52 (3-3) CPU例外処理に関する規定
     47・CPU例外ハンドラ番号
    5348
    54 ãƒ»CPU例外ハンドラ番号
     49Synchronous例外およびSError例外をCPU例外として扱う.
    5550
    56 Synchronous例外およびSError例外をCPU例外として扱う.
     51ARMv8では,例外発生時の例外レベル(EL),使用スタック,実行状態(AArch32 or AArch64),
     52発生した例外の種類により,ジャンプ先となる例外ベクタ中のオフセットアドレスが異なる.
     53CPU例外ハンドラはこのジャンプ先のオフセットアドレスで区別することにし,
     54それぞれ異なるCPU例外ハンドラ番号を割り当てる.
    5755
    58 ARMv8では,例外発生時の例外レベル(EL),使用スタック,実行状æ
    59 ‹(AArch32 or AArch64),
    60 ç™ºç”Ÿã—た例外の種類により,ジャンプå
    61 ˆã¨ãªã‚‹ä¾‹å¤–ベクタ中のオフセットアドレスが異なる.
    62 CPU例外ハンドラはこのジャンプå
    63 ˆã®ã‚ªãƒ•ã‚»ãƒƒãƒˆã‚¢ãƒ‰ãƒ¬ã‚¹ã§åŒºåˆ¥ã™ã‚‹ã“とにし,
    64 ãã‚Œãžã‚Œç•°ãªã‚‹CPU例外ハンドラ番号を割り当てる.
    65 
    66   例外発生時の状æ
    67 ‹             ä¾‹å¤–の種類      例外番号  例外ベクタå
    68 ˆé ­ã‹ã‚‰ã®ã‚ªãƒ•ã‚»ãƒƒãƒˆ
     56  例外発生時の状態             例外の種類      例外番号  例外ベクタ先頭からのオフセット
    6957  AArch64, EL1t(EL1, SP_EL0)  Synchronous         0        0x0000
    7058  AArch64, EL1t(EL1, SP_EL0)  SError              1        0x0180
     
    7765
    7866
    79 (3-4) CPUロック・割込みロック
     67(3-4) CPUロック・割込みロック
    8068
    81 ãƒãƒƒãƒ—により実è£
    82 æ–¹æ³•ãŒç•°ãªã‚‹ãŸã‚ï¼Œãƒãƒƒãƒ—依存部に記載する.
     69チップにより実装方法が異なるため,チップ依存部に記載する.
    8370
    8471
    85 (3-5) 性能評価用システム時刻の参ç
    86 §ã«é–¢ã™ã‚‹è¦å®š
     72(3-5) 性能評価用システム時刻の参照に関する規定
    8773
    88 ã‚·ã‚¹ãƒ†ãƒ ã«ã‚ˆã£ã¦ç•°ãªã‚‹ãŸã‚ãƒãƒƒãƒ—依存部またはターゲット依存部のドキュメントで記載する.
     74システムによって異なるためチップ依存部またはターゲット依存部のドキュメントで記載する.
    8975
    9076
    91 (3-6) スタートアップルーチンでの初期化å†
    92 å®¹
     77(3-6) スタートアップルーチンでの初期化内容
    9378
    94 ã‚¹ã‚¿ãƒ¼ãƒˆã‚¢ãƒƒãƒ—ルーチンが前提とするプロセッサの状æ
    95 ‹ã¯ã‚·ã‚¹ãƒ†ãƒ ã«ã‚ˆã‚Šç•°ãªã‚‹ãŸã‚ï¼Œ
    96 ã‚¹ã‚¿ãƒ¼ãƒˆã‚¢ãƒƒãƒ—ルーチンはターゲット依存部のドキュメントに記載する.
     79スタートアップルーチンが前提とするプロセッサの状態はシステムにより異なるため,
     80スタートアップルーチンはターゲット依存部のドキュメントに記載する.
    9781
    98 (4) タイマドライバ関連のæƒ
    99 å ±
     82(4) タイマドライバ関連の情報
    10083
    101 ã‚«ãƒ¼ãƒãƒ«ã®ã‚¿ã‚¤ãƒ ãƒ†ã‚£ãƒƒã‚¯ã¨ã—て,Generic Timer を使用する,
    102 ãƒ†ã‚£ãƒƒã‚¯å‘¨æœŸã¯1msecとする.またTIC_DENO及びTIC_NUMEの既定値として1に定義する.
     84カーネルのタイムティックとして,Generic Timer を使用する,
     85ティック周期は1msecとする.またTIC_DENO及びTIC_NUMEの既定値として1に定義する.
    10386
    10487
    105 (5) ターゲット依存部での設定可能é 
    106 ç›®
     88(5) ターゲット依存部での設定可能項目
    10789
    108 ã‚¿ãƒ¼ã‚²ãƒƒãƒˆä¾å­˜éƒ¨ã§ã¯ä»¥ä¸‹ã®ãƒžã‚¯ãƒ­ã‚’定義する.
    109 ã„くつかはプロセッサの依存部において既定値が定義されている.
     90ターゲット依存部では以下のマクロを定義する.
     91いくつかはプロセッサの依存部において既定値が定義されている.
    11092
    111    ãƒ»TMIN_INTPRI    : 割込み優å
    112 ˆåº¦ã®æœ€å°å€¤ï¼ˆæœ€é«˜å€¤ï¼‰
    113    ãƒ»TIC_NUME       : タイムティックの周期の分子
    114    ãƒ»TIC_DENO       : タイムティックの周期の分母
    115    ãƒ»INTPRI_TIMER   : タイマ割込み優å
    116 ˆåº¦
    117    ãƒ»INTATR_TIMER   : タイマ割込みの割込み属性
    118    ãƒ»DEFAULT_ISTKSZ : スタックサイズ(16byte単位で指定)
     93   ・TMIN_INTPRI    : 割込み優先度の最小値(最高値)
     94   ・TIC_NUME       : タイムティックの周期の分子
     95   ・TIC_DENO       : タイムティックの周期の分母
     96   ・INTPRI_TIMER   : タイマ割込み優先度
     97   ・INTATR_TIMER   : タイマ割込みの割込み属性
     98   ・DEFAULT_ISTKSZ : スタックサイズ(16byte単位で指定)
    11999
    120100
    121 (6) ディレクトリ構成・ファイル構成
     101(6) ディレクトリ構成・ファイル構成
    122102  ./arch/arm64_gcc/
    123103    MANIFEST
     
    144124    common/core_user.txt
    145125
    146 (12) バージョン履歴
     126(12) バージョン履歴
    147127
    1481282018/05/30
    149  ãƒ»æœ€åˆã®ãƒªãƒªãƒ¼ã‚¹
     129 ・最初のリリース
    1501302019/04/15
    151  ãƒ»BCM283xチップ依存部の分離に合わせて修正
     131 ・BCM283xチップ依存部の分離に合わせて修正
Note: See TracChangeset for help on using the changeset viewer.