Changeset 386 for ssp_rpi3


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

modify svn:mimetype of files

Location:
ssp_rpi3/trunk
Files:
73 edited

Legend:

Unmodified
Added
Removed
  • ssp_rpi3/trunk/arch/arm64_gcc/MANIFEST

    • Property svn:mime-type set to text/plain; charset=utf-8
  • ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/MANIFEST

    • Property svn:mime-type set to text/plain; charset=utf-8
  • ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/Makefile.chip

    • Property svn:mime-type set to text/plain; charset=utf-8
    r384 r386  
    11#
    2 #  Makefile のチップ依存部(BCM2837用)
     2#  Makefile のチップ依存部(BCM2837用)
    33#
    44
    55#
    6 ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªåã®å®šç¾©
     6ディレクトリ名の定義
    77#
    88CHIPDIR = $(SRCDIR)/arch/$(CORE)_$(TOOL)/$(CHIP)
    99
    1010#
    11 ã‚³ãƒ³ãƒ‘イルオプション
     11コンパイルオプション
    1212#
    1313COPTS := $(COPTS) -mtune=cortex-a53 -mcpu=cortex-a53
     
    1818
    1919#
    20 ã‚·ã‚¹ãƒ†ãƒ ã‚µãƒ¼ãƒ“スに関する定義
     20システムサービスに関する定義
    2121#
    2222SYSSVC_DIRS := $(SYSSVC_DIRS)
     
    2727
    2828#
    29 ã‚«ãƒ¼ãƒãƒ«ã«é–¢ã™ã‚‹å®šç¾©
     29カーネルに関する定義
    3030#
    3131KERNEL_DIRS := $(KERNEL_DIRS) $(CHIPDIR)
     
    3535
    3636#
    37 ã‚³ãƒ³ãƒ•ã‚£ã‚®ãƒ¥ãƒ¬ãƒ¼ã‚¿é–¢ä¿‚の変数の定義
     37コンフィギュレータ関係の変数の定義
    3838#
    3939CFG_TABS := $(CFG_TABS) --symval-table $(CHIPDIR)/chip_sym.def
     
    4343
    4444#
    45 ä¾å­˜é–¢ä¿‚の定義
     45依存関係の定義
    4646#
    4747cfg1_out.c: $(CHIPDIR)/chip_sym.def
     
    5050
    5151#
    52 ãã®ä»–
     52その他
    5353#
    5454CLEAN_FILES := $(CLEAN_FILES)
     
    5656
    5757#
    58 #  ARM64依存部のインクルード
     58#  ARM64依存部のインクルード
    5959#
    6060include $(SRCDIR)/arch/$(CORE)_$(TOOL)/common/Makefile.core
  • ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/bcm2837.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 è²¬ã™ã‚‹ã“と.
    46  *
    47  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    48 ãŠ
    49  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    50  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    51  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    52  *  の責任を負わない.
     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 *  の責任を負わない.
    5338 *
    5439 *  $Id$
     
    6045
    6146/*
    62  *  割込み番号(intno)の定義
     47 *  割込み番号(intno)の定義
    6348 */
    6449// Core interrupts
     
    10489
    10590/*
    106  *  割込み番号の最小値と最大値
     91 *  割込み番号の最小値と最大値
    10792 */
    10893#define TMIN_INTNO              UINT_C(0)
     
    11095
    11196/*
    112  *  メモリマップドI/Oのベースアドレス
     97 *  メモリマップドI/Oのベースアドレス
    11398 */
    11499#define MMIO_BASE               0x3F000000
    115100
    116101/*
    117  *  割込み関連レジスタ
     102 *  割込み関連レジスタ
    118103 */
    119104#define IRQ_PEND_B              0x3f00b200
     
    154139
    155140/*
    156  *  UARTレジスタのベースアドレス
     141 *  UARTレジスタのベースアドレス
    157142 */
    158143#define RPI_UART0_BASE  (MMIO_BASE + 0x00201000)
    159144
    160145/*
    161  *  ボーレート設定
     146 *  ボーレート設定
    162147 */
    163148#define RPI_UART_IBRD_38400     0x27U    // 38400bps
     
    167152
    168153/*
    169  * メールボックス関連
     154 * メールボックス関連
    170155 *    https://github.com/raspberrypi/firmware/wiki/Mailbox-property-interface
    171156 */
     
    184169#define MBOX_REQUEST    0
    185170
    186 /* チャネル */
     171/* チャネル */
    187172#define MBOX_CH_POWER   0
    188173#define MBOX_CH_FB      1
     
    220205
    221206/*
    222  * mailbox 呼び出し
    223  *    注意:第2引数のアドレスは16バイトアライメントであること
     207 * mailbox 呼び出し
     208 *    注意:第2引数のアドレスは16バイトアライメントであること
    224209 */
    225210Inline int_t mbox_call(unsigned char ch, volatile uint32_t *mbox)
     
    227212    uint32_t r = (((uint32_t)((uint64_t)mbox) & ~0xF) | (ch & 0xF));
    228213
    229     // 使えるようになるまでå¾
    230 ã¤
     214    // 使えるようになるまで待つ
    231215    do{
    232216        Asm("nop");
    233217    } while(sil_rew_mem((uint32_t *)MBOX_STATUS) & MBOX_FULL);
    234218
    235     // チャネルの識別子を付加してメッセージのアドレスを書き込み
     219    // チャネルの識別子を付加してメッセージのアドレスを書き込み
    236220    sil_wrw_mem((uint32_t *)MBOX_WRITE , r);
    237221
    238222    while(1) {
    239         // 応答があるまでå¾
    240 ã¤
     223        // 応答があるまで待つ
    241224        do{
    242225            Asm("nop");
  • ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_cfg1_out.h

    • Property svn:mime-type set to text/plain; charset=utf-8
    r384 r386  
    11/*
    2  *  cfg1_out.cをリンクするためにå¿
    3 è¦ãªã‚¹ã‚¿ãƒ–の定義
     2 *  cfg1_out.cをリンクするために必要なスタブの定義
    43 */
    54
    65/*
    7  *  コア依存のスタブの定義
     6 *  コア依存のスタブの定義
    87 */
    98#include "arm64_gcc/common/core_cfg1_out.h"
  • ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_check.trb

    • Property svn:mime-type set to text/plain; charset=utf-8
    r384 r386  
    11# -*- coding: utf-8 -*-
    22#
    3 ãƒ‘ス3の生成スクリプトのチップ依存部(BCM2837用)
     3パス3の生成スクリプトのチップ依存部(BCM2837用)
    44#
    55IncludeTrb("arm64_gcc/common/core_check.trb")
    66
    77#
    8 å‰²è¾¼ã¿ãƒãƒ³ãƒ‰ãƒ©ãƒ†ãƒ¼ãƒ–ルに関するチェック
     8割込みハンドラテーブルに関するチェック
    99#
    10 # DEF_INHで登録した割込みハンドラのみチェックする.逆に言うと,コンフィ
    11 # ギュレータで生成した割込みハンドラや,default_int_handlerのチェックは
    12 # 行わない.
     10# DEF_INHで登録した割込みハンドラのみチェックする.逆に言うと,コンフィ
     11# ギュレータで生成した割込みハンドラや,default_int_handlerのチェックは
     12# 行わない.
    1313#
    1414inhinib_entry = SYMBOL("_kernel_inhinib_entry")
     
    1616  inthdr = PEEK(inhinib_entry, $sizeof_FP)
    1717
    18   #     å‰²è¾¼ã¿ãƒãƒ³ãƒ‰ãƒ©ã®å
    19 ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯
     18  #     割込みハンドラの先頭番地のチェック
    2019  if (inthdr & ($CHECK_FUNC_ALIGN - 1)) != 0
    2120    error_wrong_id("E_PAR", params, :inthdr, :inhno, "not aligned")
     
    2928
    3029#
    31 #  CPU例外ハンドラテーブルに関するチェック
     30#  CPU例外ハンドラテーブルに関するチェック
    3231#
    33 # DEF_EXCで登録したCPU例外ハンドラのみチェックする.逆に言うと,
    34 # default_exc_handlerのチェックは行わない.
     32# DEF_EXCで登録したCPU例外ハンドラのみチェックする.逆に言うと,
     33# default_exc_handlerのチェックは行わない.
    3534#
    3635excinib_entry = SYMBOL("_kernel_excinib_entry")
     
    3837  exchdr = PEEK(excinib_entry, $sizeof_FP)
    3938
    40   # CPU例外ハンドラのå
    41 ˆé ­ç•ªåœ°ã®ãƒã‚§ãƒƒã‚¯
     39  # CPU例外ハンドラの先頭番地のチェック
    4240  if (exchdr & ($CHECK_FUNC_ALIGN - 1)) != 0
    4341    error_wrong_id("E_PAR", params, :exchdr, :excno, "not aligned")
  • ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_config.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 è²¬ã™ã‚‹ã“と.
    46  *
    47  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    48 ãŠ
    49  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    50  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    51  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    52  *  の責任を負わない.
    53  *
    54  */
    55 /*
    56  *  チップ依存処理(BCM2837用)
     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 *  チップ依存処理(BCM2837用)
    5742 */
    5843#include <sil.h>
     
    6045
    6146/*
    62  *  プロセッサの割込み優å
    63 ˆåº¦
     47 *  プロセッサの割込み優先度
    6448 */
    6549PRI current_intpri;
    6650
    6751/*
    68  *  チップの初期化
     52 *  チップの初期化
    6953 */
    7054void
     
    7458
    7559    /*
    76      *  ARM64依存の初期化
     60     *  ARM64依存の初期化
    7761     */
    7862    core_initialize();
    7963
    8064    /*
    81      *  アライメントチェック有効
     65     *  アライメントチェック有効
    8266     */
    8367    tmp = (1<<3)|(1<<1);
     
    8569
    8670    /*
    87      *  割込みマスクの初期化
     71     *  割込みマスクの初期化
    8872     */
    8973    sil_wrw_mem((uint32_t *)(DISABLE_IRQ_B), 0xffffffff);  // basic interrupt
     
    9175    sil_wrw_mem((uint32_t *)(DISABLE_IRQ_2), 0xffffffff);  // gpu2
    9276
    93     // 使用する割込みの許可
     77    // 使用する割込みの許可
    9478    chip_unmask_interrupt(0);
    9579}
    9680
    9781/*
    98  *  チップの終了処理
     82 *  チップの終了処理
    9983 */
    10084void
     
    10286{
    10387    /*
    104      *  割込み禁止
     88     *  割込み禁止
    10589     */
    10690    chip_mask_interrupt(INT_IPM(TMIN_INTPRI));
     
    11094
    11195/*
    112  *  割込み要求ライン属性の設定
     96 *  割込み要求ライン属性の設定
    11397 */
    11498void
    11599x_config_int(INTNO intno, ATR intatr, PRI intpri)
    116100{
    117     // BCM283X はエッジ/レベルの設定や割込み優å
    118 ˆåº¦ã®è¨­å®šæ©Ÿèƒ½ã‚’持たない
     101    // BCM283X はエッジ/レベルの設定や割込み優先度の設定機能を持たない
    119102    assert(VALID_INTNO(intno));
    120103    assert(TMIN_INTPRI <= intpri && intpri <= TMAX_INTPRI);
     
    122105
    123106/*
    124  *  発生した割込みの優å
    125 ˆåº¦ã«å¿œã˜ã¦å‰²è¾¼ã¿ã‚’マスクする
    126  *  割込みのå
    127 ¥å£å‡¦ç†ãŠã‚ˆã³åˆæœŸåŒ–処理から呼び出される
    128  *    pri:割込み要因の割込み優å
    129 ˆåº¦(å†
    130 éƒ¨è¡¨ç¾)
     107 *  発生した割込みの優先度に応じて割込みをマスクする
     108 *  割込みの入口処理および初期化処理から呼び出される
     109 *    pri:割込み要因の割込み優先度(内部表現)
    131110 */
    132111void
     
    144123
    145124    /*
    146      *  割込みのマスク
     125     *  割込みのマスク
    147126     */
    148127    // core interrupt(core timers)
     
    182161
    183162/*
    184  *  マスクした割込みを割込み発生前の状æ
    185 ‹ã«æˆ»ã™
    186  *  ハンドラ実行後,出口処理の実行前に呼び出される
    187  *    pri:割込み発生前の割込み優å
    188 ˆåº¦
     163 *  マスクした割込みを割込み発生前の状態に戻す
     164 *  ハンドラ実行後,出口処理の実行前に呼び出される
     165 *    pri:割込み発生前の割込み優先度
    189166 */
    190167void
     
    202179
    203180    /*
    204      *  マスク解除
     181     *  マスク解除
    205182     */
    206183    // core interrupt(core timers)
  • ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_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 è²¬ã™ã‚‹ã“と.
    46  *
    47  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    48 ãŠ
    49  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    50  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    51  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    52  *  の責任を負わない.
    53  *
    54  */
    55 
    56 /*
    57  *  チップ依存処理(BCM2837用)
    58  *
    59  *  このヘッダファイルは,target_config.h(または,そこからインクルード
    60  *  されるファイル)のみからインクルードされる.
    61  *  他のファイルから直接インクルードしてはならない.
     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 *  チップ依存処理(BCM2837用)
     43 *
     44 *  このヘッダファイルは,target_config.h(または,そこからインクルード
     45 *  されるファイル)のみからインクルードされる.
     46 *  他のファイルから直接インクルードしてはならない.
    6247 */
    6348
     
    6651
    6752/*
    68  *  ハードウェア定義
     53 *  ハードウェア定義
    6954 */
    7055#include "bcm2837.h"
    7156
    7257/*
    73  *  割込み関連
    74  */
    75 
    76 /*
    77  *  割込み優å
    78 ˆåº¦ã®å¤‰æ›
    79  */
    80 #define EXT_IPM(pri)  (-pri)    // å†
    81 éƒ¨è¡¨ç¾ã‹ã‚‰å¤–部表現へ
    82 #define INT_IPM(ipm)  (-ipm)    // 外部表現からå†
    83 éƒ¨è¡¨ç¾ã¸
    84 
    85 /*
    86  *  TIPM_ENAALL(割込み優å
    87 ˆåº¦ãƒžã‚¹ã‚¯å
    88 ¨è§£é™¤ï¼‰ã®å†
    89 éƒ¨è¡¨ç¾
     58 *  割込み関連
     59 */
     60
     61/*
     62 *  割込み優先度の変換
     63 */
     64#define EXT_IPM(pri)  (-pri)    // 内部表現から外部表現へ
     65#define INT_IPM(ipm)  (-ipm)    // 外部表現から内部表現へ
     66
     67/*
     68 *  TIPM_ENAALL(割込み優先度マスク全解除)の内部表現
    9069 */
    9170#define IIPM_ENAALL  (0)
    9271
    9372/*
    94  *  割込み番号の範囲の判定
     73 *  割込み番号の範囲の判定
    9574 */
    9675#define VALID_INTNO(intno)           ((TMIN_INTNO <= (intno)) && ((intno) <= TMAX_INTNO))
     
    9877
    9978/*
    100  *  割込みハンドラの出å
    101 ¥å£å‡¦ç†ã®ç”Ÿæˆãƒžã‚¯ãƒ­
     79 *  割込みハンドラの出入口処理の生成マクロ
    10280 */
    10381#define INT_ENTRY(inhno, inthdr)    inthdr
     
    10785
    10886/*
    109  *  CPUロック状æ
    110 ‹ã¸ã®ç§»è¡Œ
     87 *  CPUロック状態への移行
    11188 */
    11289Inline void
     
    12097
    12198/*
    122  *  CPUロック状æ
    123 ‹ã®è§£é™¤
     99 *  CPUロック状態の解除
    124100 */
    125101Inline void
     
    133109
    134110/*
    135  *  CPUロック状æ
    136 ‹ã®å‚ç
    137 §
     111 *  CPUロック状態の参照
    138112 */
    139113Inline bool_t
     
    156130
    157131/*
    158  *  プロセッサの割込み優å
    159 ˆåº¦
    160  *    チップの割込みコントローラには割込み優å
    161 ˆåº¦ã«ã‚ˆã‚‹åˆ¶å¾¡æ©Ÿèƒ½ãŒ
    162  *    実è£
    163 ã•ã‚Œã¦ã„ないため,割込み優å
    164 ˆåº¦ã‚’格納する変数を用意する
     132 *  プロセッサの割込み優先度
     133 *    チップの割込みコントローラには割込み優先度による制御機能が
     134 *    実装されていないため,割込み優先度を格納する変数を用意する
    165135 */
    166136extern PRI current_intpri;
    167137
    168138/*
    169  *  割込みハンドラの設定
     139 *  割込みハンドラの設定
    170140 */
    171141Inline void
     
    175145
    176146/*
    177  *  割込みハンドラå
    178 ¥å£ã§å¿
    179 è¦ãªIRC操作
     147 *  割込みハンドラ入口で必要なIRC操作
    180148 */
    181149Inline void
     
    185153
    186154/*
    187  *  割込みハンドラの出口でå¿
    188 è¦ãªIRC操作
     155 *  割込みハンドラの出口で必要なIRC操作
    189156 */
    190157Inline void
     
    194161
    195162/*
    196  *  割込み要求ラインの属性の設定
     163 *  割込み要求ラインの属性の設定
    197164 */
    198165extern void x_config_int(INTNO intno, ATR intatr, PRI intpri);
    199166
    200167/*
    201  *  割込み優å
    202 ˆåº¦ã«ã‚‚とづく割込みのマスク
    203  *    割込みのå
    204 ¥å£ã§ï¼Œå—け付けた割込みの割込みレベルに応じて
    205  *    割込みをマスクする
     168 *  割込み優先度にもとづく割込みのマスク
     169 *    割込みの入口で,受け付けた割込みの割込みレベルに応じて
     170 *    割込みをマスクする
    206171 */
    207172extern void chip_mask_interrupt(PRI pri);
    208173
    209174/*
    210  *  割込みマスクの解除
    211  *    割込みの出口で,受け付け直前の割込みレベルをもとに
    212  *    割込みのマスクを解除する
     175 *  割込みマスクの解除
     176 *    割込みの出口で,受け付け直前の割込みレベルをもとに
     177 *    割込みのマスクを解除する
    213178 */
    214179extern void chip_unmask_interrupt(PRI pri);
    215180
    216181/*
    217  *  割込みå
    218 ¥å£ã®å‰²è¾¼ã¿æ“ä½œï¼ˆchip_support.S)
     182 *  割込み入口の割込み操作(chip_support.S)
    219183 */
    220184extern void chip_int_entry(void);
    221185
    222186/*
    223  *  割込み優å
    224 ˆåº¦ãƒ†ãƒ¼ãƒ–ル(kernel_cfg.c)
     187 *  割込み優先度テーブル(kernel_cfg.c)
    225188 */
    226189extern const PRI intpri_table[];
    227190
    228191/*
    229  *  割込みマスクテーブル(kernel_cfg.c)
     192 *  割込みマスクテーブル(kernel_cfg.c)
    230193 */
    231194extern const uint32_t iipm_mask_table[];
    232195
    233196/*
    234  *  割込みハンドラテーブル(kernel_cfg.c)
     197 *  割込みハンドラテーブル(kernel_cfg.c)
    235198 */
    236199extern const INTHDR inh_table[];
     
    241204
    242205/*
    243  *  CPU例外関連
    244  */
    245 
    246 /*
    247  *  CPU例外ハンドラ番号
     206 *  CPU例外関連
     207 */
     208
     209/*
     210 *  CPU例外ハンドラ番号
    248211 */
    249212#define VALID_EXCNO_DEFEXC(excno)    (TMIN_EXCNO <= (excno) && (excno) <= TMAX_EXCNO)
    250213
    251214/*
    252  *  CPU例外ハンドラのå
    253 ¥å£å‡¦ç†ã®ç”Ÿæˆãƒžã‚¯ãƒ­
     215 *  CPU例外ハンドラの入口処理の生成マクロ
    254216 */
    255217#define EXC_ENTRY(excno, exchdr)    exchdr
     
    260222
    261223/*
    262  *  CPU例外ハンドラの設定
     224 *  CPU例外ハンドラの設定
    263225 */
    264226Inline void
     
    268230
    269231/*
    270  *  例外å
    271 ¥å£ã®å‰²è¾¼ã¿æ“ä½œï¼ˆchip_support.S)
     232 *  例外入口の割込み操作(chip_support.S)
    272233 */
    273234extern void chip_exc_entry(void);
    274235
    275236/*
    276  *  例外ハンドラテーブル(kernel_cfg.c)
     237 *  例外ハンドラテーブル(kernel_cfg.c)
    277238 */
    278239extern const EXCHDR exc_table[];
     
    281242
    282243/*
    283  * その他
     244 * その他
    284245 */
    285246
     
    287248
    288249/*
    289  *  チップ依存の初期化
     250 *  チップ依存の初期化
    290251 */
    291252extern void chip_initialize(void);
    292253
    293254/*
    294  *  チップ依存の終了処理
     255 *  チップ依存の終了処理
    295256 */
    296257extern void chip_terminate(void) NoReturn;
     
    299260
    300261/*
    301  *  コア依存定義
     262 *  コア依存定義
    302263 */
    303264#include "arm64_gcc/common/core_config.h"
  • ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_design.txt

    • Property svn:mime-type set to text/plain; charset=utf-8
    r384 r386  
    11=====================================================================
    2                          BCM283x チップ依存部設計メモ
     2                         BCM283x チップ依存部設計メモ
    33                                  Last Modified: 16 Apr 2019
    44=====================================================================
    55
    6 â—‹ã“のドキュメントの位置づけ
     6○このドキュメントの位置づけ
    77
    8 ã“のドキュメントは,TOPPERS/SSPカーネルをBCM283xに移植する際の
    9 ãƒãƒƒãƒ—固有事é 
    10 ã«é–¢ã™ã‚‹è¨­è¨ˆãƒ¡ãƒ¢ã§ã‚る.
     8このドキュメントは,TOPPERS/SSPカーネルをBCM283xに移植する際の
     9チップ固有事項に関する設計メモである.
    1110
    12 (参考)
     11(参考)
    1312
    1413(a) QA7(ARM Quad A7 core)
     
    2019
    2120
    22 [CPUモード]
     21[CPUモード]
    2322
    24 â—ãƒªã‚»ãƒƒãƒˆæ™‚の状æ
    25 ‹
     23●リセット時の状態
    2624
    27 ãƒªã‚»ãƒƒãƒˆæ™‚,BCM283x (Cortex-A53) は,EL3h (使用スタック SP_EL3)で起動する.
     25リセット時,BCM283x (Cortex-A53) は,EL3h (使用スタック SP_EL3)で起動する.
    2826
    2927
    30 [割込み]
     28[割込み]
    3129
    3230
    33 â—å‰²è¾¼ã¿å„ªå
    34 ˆåº¦
     31●割込み優先度
    3532
    36 BCM283x の割込みコントローラは優å
    37 ˆåº¦ãŒå®Ÿè£
    38 ã•ã‚Œã¦ã„ない.そのため
    39ʌ㻌
    40 ˆåº¦ã«åŸºã¥ãå‰²è¾¼ã¿ã®ãƒžã‚¹ã‚¯ã‚’ソフトウェアで擬似的に実è£
    41 ã—ている.
    42 å‰²è¾¼ã¿ã®å†
    43 éƒ¨å„ªå
    44 ˆåº¦ã®å€¤ã¯å¤–部優å
    45 ˆåº¦ã®ç¬¦å·ã‚’反転したものを用いるため,
    46 å€¤ã®å¤§ãã„方が高優å
    47 ˆåº¦ã¨ãªã‚‹ï¼Ž
     33BCM283x の割込みコントローラは優先度が実装されていない.そのため
     34優先度に基づく割込みのマスクをソフトウェアで擬似的に実装している.
     35割込みの内部優先度の値は外部優先度の符号を反転したものを用いるため,
     36値の大きい方が高優先度となる.
    4837
    49ʌ㻌
    50 ˆåº¦ã®ç¯„囲は自由に決めることができる.既定の最高値は15となっている.
     38優先度の範囲は自由に決めることができる.既定の最高値は15となっている.
    5139
    5240
    53 â—å‰²è¾¼ã¿/例外の受付
     41●割込み/例外の受付
    5442
    55 å‰²è¾¼ã¿ä¿¡å·ã‚’受信すると,BCM283xのペンディングレジスタの該当するビットがセットされる.
    56 å‰²è¾¼ã¿ç•ªå·ã¯ã“のレジスタにセットされる値を使用する.
     43割込み信号を受信すると,BCM283xのペンディングレジスタの該当するビットがセットされる.
     44割込み番号はこのレジスタにセットされる値を使用する.
    5745
    58 å‰²è¾¼ã¿ãƒãƒ³ãƒ‰ãƒ©ç•ªå·ã¨å‰²è¾¼ã¿ç•ªå·ã¯ï¼ŒBCM2835及びBCM2836の
    59 ãƒšãƒªãƒ•ã‚§ãƒ©ãƒ«ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«(下記a及びb)から,ペンディングレジスタのビット位置に基づいて
    60 0から127の番号を割り当てる.(個ã€
    61 ã®å®šç¾©ã¯ bcm2837.h を参ç
    62 §)
     46割込みハンドラ番号と割込み番号は,BCM2835及びBCM2836の
     47ペリフェラルマニュアル(下記a及びb)から,ペンディングレジスタのビット位置に基づいて
     480から127の番号を割り当てる.(個々の定義は bcm2837.h を参照)
    6349
    64  0 ... 31  Core interrupt (下記aのP16 「Core0 interrupt source」に対応)
    65 32 ... 63  ARM peripherals interrupt(bのP113「Basic pending register」に対応)
    66 64 ... 95  ARM peripherals interrupt(bのP115「GPU pending register 1」に対応)
    67 96 ...127  ARM peripherals interrupt(bのP115「GPU pending register 2」に対応)
     50 0 ... 31  Core interrupt (下記aのP16 「Core0 interrupt source」に対応)
     5132 ... 63  ARM peripherals interrupt(bのP113「Basic pending register」に対応)
     5264 ... 95  ARM peripherals interrupt(bのP115「GPU pending register 1」に対応)
     5396 ...127  ARM peripherals interrupt(bのP115「GPU pending register 2」に対応)
    6854
    69 å‰²è¾¼ã¿ã‚’受け付けると例外レベルと例外の種類に応じた所定の位置から
    70 å®Ÿè¡Œã‚’開始する点はコア依存部の説明と同様であるが,割込みの優å
    71 ˆåº¦ã®
    72 å‡¦ç†å†
    73 å®¹ã«ã¤ã„ては以下のようになる.
     55割込みを受け付けると例外レベルと例外の種類に応じた所定の位置から
     56実行を開始する点はコア依存部の説明と同様であるが,割込みの優先度の
     57処理内容については以下のようになる.
    7458
    75 ã¾ãšå‰²è¾¼ã¿ã®å
    76 ¥å£å‡¦ç†ã§ã¯ä»¥ä¸‹ã®å‡¦ç†ã‚’行う:
    77 ãƒ»å‰²è¾¼ã¿ç™ºç”Ÿæ™‚,割込み要因をå
    78 ƒã«å„ªå
    79 ˆåº¦ã‚’取得する
    80 ãƒ»å„ªå
    81 ˆåº¦ã‚’å
    82 ƒã«ï¼Œãã®å‰²è¾¼ã¿å„ªå
    83 ˆãƒ¬ãƒ™ãƒ«ã§å½“該の割込み要因をマスクするかどうかを決定する.
    84 ãƒ»ãã®å„ªå
    85 ˆåº¦ã§ãƒžã‚¹ã‚¯ã™ã‚‹å¿
    86 è¦ã®ã‚る割込みをå
    87 ¨ã¦ãƒžã‚¹ã‚¯ã™ã‚‹ï¼Ž
    88 ãƒ»CPUロックを解除し,割込みハンドラを呼び出す.
     59まず割込みの入口処理では以下の処理を行う:
     60・割込み発生時,割込み要因を元に優先度を取得する
     61・優先度を元に,その割込み優先レベルで当該の割込み要因をマスクするかどうかを決定する.
     62・その優先度でマスクする必要のある割込みを全てマスクする.
     63・CPUロックを解除し,割込みハンドラを呼び出す.
    8964
    90 å‰²è¾¼ã¿ãƒãƒ³ãƒ‰ãƒ©ã‹ã‚‰ã®ãƒªã‚¿ãƒ¼ãƒ³å¾Œï¼Œå‡ºå£å‡¦ç†ã«å
    91 ¥ã‚‹å‰ã«å„ªå
    92 ˆåº¦ã‚’å
    93 ƒã«æˆ»ã™ï¼š
    94 ãƒ»å‰²è¾¼ã¿ç™ºç”Ÿå‰ã®å‰²è¾¼ã¿å„ªå
    95 ˆåº¦ã‚’スタックから取得する
    96 ãƒ»å‰²è¾¼ã¿ç™ºç”Ÿå‰ã®å„ªå
    97 ˆåº¦ã‚’å
    98 ƒã«ï¼Œãã®å‰²è¾¼ã¿å„ªå
    99 ˆåº¦ã§ãƒžã‚¹ã‚¯è§£é™¤ã®å¯¾è±¡ã¨ãªã‚‹å‰²è¾¼ã¿ã‚’決める
    100 ãƒ»å¯¾è±¡ã¨ãªã‚‹å‰²è¾¼ã¿ã®å‰²è¾¼ã¿ãƒžã‚¹ã‚¯ã‚’すべて解除する.
     65割込みハンドラからのリターン後,出口処理に入る前に優先度を元に戻す:
     66・割込み発生前の割込み優先度をスタックから取得する
     67・割込み発生前の優先度を元に,その割込み優先度でマスク解除の対象となる割込みを決める
     68・対象となる割込みの割込みマスクをすべて解除する.
    10169
    102 å‰²è¾¼ã¿è¦å› ã¨å„ªå
    103 ˆåº¦ã¨ã®å¯¾å¿œï¼ŒãŠã‚ˆã³å„ªå
    104 ˆåº¦ã¨ãƒžã‚¹ã‚¯ãƒ‘ターンとの対応には
    105 ãã‚Œãžã‚Œ intpri_table,及び iipm_mask_table というé
    106 åˆ—を使用する.
    107 ã“れらは CFG_INT の設定値をもとにコンフィギュレータが kernel_cfg.c に出力する.
     70割込み要因と優先度との対応,および優先度とマスクパターンとの対応には
     71それぞれ intpri_table,及び iipm_mask_table という配列を使用する.
     72これらは CFG_INT の設定値をもとにコンフィギュレータが kernel_cfg.c に出力する.
    10873
    10974
    110 CPU例外の例外番号については,コア依存部と同様のため省略する.
     75CPU例外の例外番号については,コア依存部と同様のため省略する.
    11176
    11277
    113 â—ä¾‹å¤–/割込みの受付
     78●例外/割込みの受付
    11479
    115 ãƒ»ä¾‹å¤–/割込みを受付けると,受付け時にアクティブなスタック上に以下のコ
    116   ンテキストを保存する.
     80・例外/割込みを受付けると,受付け時にアクティブなスタック上に以下のコ
     81  ンテキストを保存する.
    11782
    11883   ---------------
    11984  |   GICC_PMR     |  <- new SP
    12085   ----------------
    121   | 割込み/例外番号|
     86  | 割込み/例外番号|
    12287   ----------------
    12388  |    ESR_ELx     |
     
    13196  |      X29       |
    13297   ----------------
    133   |      :        |
    134   |      :        |
     98  |              |
     99  |              |
    135100   ----------------
    136101  |      X1        |
     
    141106
    142107
    143 å‰²è¾¼ã¿/例外発生時の主なシーケンスは次のようになる(遷移å
    144 ˆã®ä¾‹å¤–レベルをELxと表現する)
     108割込み/例外発生時の主なシーケンスは次のようになる(遷移先の例外レベルをELxと表現する)
    145109
    146 ï¼ˆãƒãƒ¼ãƒ‰ã‚¦ã‚§ã‚¢ã®å‡¦ç†ï¼‰
    147   ・PSTATEをSPSR_ELxに保存する
    148   ・リターンアドレスをELR_ELxに保存する
    149   ・PSTATE.{D,A,I,F}を1にセットする
    150   ・同期例外およびSError割込みのとき,例外要因æƒ
    151 å ±ã‚’ESR_ELxに保存する
    152   ・スタックポインタをSP_ELxに切り替える
    153   ・(CPU例外の場合)例外番号をx22に格納
    154   ・ELxへ遷移する
     110(ハードウェアの処理)
     111  ・PSTATEをSPSR_ELxに保存する
     112  ・リターンアドレスをELR_ELxに保存する
     113  ・PSTATE.{D,A,I,F}を1にセットする
     114  ・同期例外およびSError割込みのとき,例外要因情報をESR_ELxに保存する
     115  ・スタックポインタをSP_ELxに切り替える
     116  ・(CPU例外の場合)例外番号をx22に格納
     117  ・ELxへ遷移する
    155118
    156 ï¼ˆã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã§ã®å‡¦ç†ï¼‰
    157   ・(発生時にSP_EL0を使用していた場合)スタックを割込み発生前(SP_EL0)に戻す
    158   ・汎用レジスタ(X0-X30)をスタックに保存
    159   ・SPSR_ELx, ESR_ELx, ELR_ELxをスタックに保存
    160   ・(割込み)ペンディングレジスタから割込み番号を取得
    161     (CPU例外)例外番号をx22から取得
    162   ・割込み番号,例外番号をスタックに保存
    163   ・割込み発生前の割込み優å
    164 ˆåº¦ãƒžã‚¹ã‚¯ã‚’スタックに保存
    165   ・受け付けた割込みの割込み優å
    166 ˆåº¦ã‚’変数 current_intpri にセット
    167   ・(割込みの場合)割込み優å
    168 ˆåº¦ã®å€¤ã‚’å
    169 ƒã«ï¼Œå‰²è¾¼ã¿ã‚’マスクする
    170   ・割込み/例外ネストカウンタのインクリメント
    171   ・(割込みの場合)CPUロック解除
    172     (カーネル管理のCPU例外の場合)例外発生前のPSTATE状æ
    173 ‹ã«è¨­å®š
    174   ・ハンドラのé
    175 åˆ—からアドレスを読み込みハンドラを実行する
     119(ソフトウェアでの処理)
     120  ・(発生時にSP_EL0を使用していた場合)スタックを割込み発生前(SP_EL0)に戻す
     121  ・汎用レジスタ(X0-X30)をスタックに保存
     122  ・SPSR_ELx, ESR_ELx, ELR_ELxをスタックに保存
     123  ・(割込み)ペンディングレジスタから割込み番号を取得
     124    (CPU例外)例外番号をx22から取得
     125  ・割込み番号,例外番号をスタックに保存
     126  ・割込み発生前の割込み優先度マスクをスタックに保存
     127  ・受け付けた割込みの割込み優先度を変数 current_intpri にセット
     128  ・(割込みの場合)割込み優先度の値を元に,割込みをマスクする
     129  ・割込み/例外ネストカウンタのインクリメント
     130  ・(割込みの場合)CPUロック解除
     131    (カーネル管理のCPU例外の場合)例外発生前のPSTATE状態に設定
     132  ・ハンドラの配列からアドレスを読み込みハンドラを実行する
    176133
    177 â—ä¾‹å¤–/割込みからのリターン
     134●例外/割込みからのリターン
    178135
    179 ï¼ˆã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã§ã®å‡¦ç†ï¼‰
    180   ・CPUロック状æ
    181 ‹ã¸ç§»è¡Œ
    182   ・割込み/例外ネストカウンタのデクリメント
    183   ・(割込みの場合)割込み発生前の優å
    184 ˆåº¦ãƒžã‚¹ã‚¯ã‚’戻し,優å
    185 ˆåº¦ã«å¿œã˜ã¦å‰²è¾¼ã¿ã®ãƒžã‚¹ã‚¯ã‚’解除する
    186     (CPU例外の場合)CPU管理外の例外の場合,例外発生å
    187 ƒã¸ãƒªã‚¿ãƒ¼ãƒ³ã™ã‚‹
    188   ・戻りå
    189 ˆã®ã‚³ãƒ³ãƒ†ã‚­ã‚¹ãƒˆã‚„システム状æ
    190 ‹ã«å¿œã˜ã¦å‰²è¾¼ã¿/例外発生å
    191 ƒã¸ãƒªã‚¿ãƒ¼ãƒ³
    192     またはé
    193 å»¶ãƒ‡ã‚£ã‚¹ãƒ‘ッチを実行する
    194   ・ELR_ELxに戻りå
    195 ˆã‚¢ãƒ‰ãƒ¬ã‚¹ï¼ŒSPSR_ELxにプロセッサ状æ
    196 ‹ãŒãã‚Œãžã‚Œ
    197     セットされている状æ
    198 ‹ã§eret命令を実行し,割込み/例外からリターン
     136(ソフトウェアでの処理)
     137  ・CPUロック状態へ移行
     138  ・割込み/例外ネストカウンタのデクリメント
     139  ・(割込みの場合)割込み発生前の優先度マスクを戻し,優先度に応じて割込みのマスクを解除する
     140    (CPU例外の場合)CPU管理外の例外の場合,例外発生元へリターンする
     141  ・戻り先のコンテキストやシステム状態に応じて割込み/例外発生元へリターン
     142    または遅延ディスパッチを実行する
     143  ・ELR_ELxに戻り先アドレス,SPSR_ELxにプロセッサ状態がそれぞれ
     144    セットされている状態でeret命令を実行し,割込み/例外からリターン
    199145
    200146
    201 â—‹ OSの実è£
     147○ OSの実装
     148
     1491.チップ依存部名称: bcm283x
     150
     151現状では Raspberry Pi3B に搭載されるBCM2837のみサポートするが,
     152Raspberry Pi に搭載されるプロセッサBCM283x (x=5,6,7)は周辺回路について
     153共通する部分が多く,まとめて扱うことにするため依存部名称を bcm283x とした
    202154
    203155
    204 1.チップ依存部名称: bcm283x
     1562. 外部優先度と内部優先度
    205157
    206 ç¾çŠ¶ã§ã¯ Raspberry Pi3B に搭載されるBCM2837のみサポートするが,
    207 Raspberry Pi に搭載されるプロセッサBCM283x (x=5,6,7)は周辺回路について
    208 å
    209 ±é€šã™ã‚‹éƒ¨åˆ†ãŒå¤šãï¼Œã¾ã¨ã‚ã¦æ‰±ã†ã“とにするため依存部名称を bcm283x とした
     158外部優先度とはAPIで指定する割込み優先度(PRI型)のことであり,値が小さい
     159ほど優先度が高い.割込みハンドラには,-1から連続した負の値を設定可能で
     160ある.内部優先度は外部優先度の符号を反転した値とする.
     161外部優先度と内部優先度の変換は以下のマクロで表現される.
    210162
    211 
    212 2. 外部優å
    213 ˆåº¦ã¨å†
    214 éƒ¨å„ªå
    215 ˆåº¦
    216 
    217 å¤–部優å
    218 ˆåº¦ã¨ã¯APIで指定する割込み優å
    219 ˆåº¦(PRI型)のことであり,値が小さい
    220 ã»ã©å„ªå
    221 ˆåº¦ãŒé«˜ã„.割込みハンドラには,-1から連続した負の値を設定可能で
    222 ã‚る.å†
    223 éƒ¨å„ªå
    224 ˆåº¦ã¯å¤–部優å
    225 ˆåº¦ã®ç¬¦å·ã‚’反転した値とする.
    226 å¤–部優å
    227 ˆåº¦ã¨å†
    228 éƒ¨å„ªå
    229 ˆåº¦ã®å¤‰æ›ã¯ä»¥ä¸‹ã®ãƒžã‚¯ãƒ­ã§è¡¨ç¾ã•ã‚Œã‚‹ï¼Ž
    230 
    231 /* 外部表現への変換 */
     163/* 外部表現への変換 */
    232164#define EXT_IPM(pri) (-pri)
    233165
    234 /* å†
    235 éƒ¨è¡¨ç¾ã¸ã®å¤‰æ› */
     166/* 内部表現への変換 */
    236167#define INT_IPM(ipm) (-ipm)
    237168
    238169
    239 3. カーネル管理å†
    240 ã®æœ€é«˜å„ªå
    241 ˆåº¦(CPUロック状æ
    242 ‹ã§ã®å„ªå
    243 ˆåº¦ãƒžã‚¹ã‚¯)
     1703. カーネル管理内の最高優先度(CPUロック状態での優先度マスク)
    244171
    245 CPUロック状æ
    246 ‹ã®å®Ÿè£
    247 ã«å„ªå
    248 ˆåº¦ã¯ç”¨ã„ていない.
    249 ã¾ãŸå„ªå
    250 ˆåº¦åˆ¶å¾¡ã¯ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã§å®Ÿè£
    251 ã—ているため,
    252 ã‚«ãƒ¼ãƒãƒ«ç®¡ç†å†
    253 ã®å‰²è¾¼ã¿ã®æœ€é«˜å„ªå
    254 ˆåº¦ã¯è‡ªç”±ã«è¨­å®šå¯èƒ½ã§ã‚る.
     172CPUロック状態の実装に優先度は用いていない.
     173また優先度制御はソフトウェアで実装しているため,
     174カーネル管理内の割込みの最高優先度は自由に設定可能である.
    255175
    256 ãƒãƒƒãƒ—依存部で既定値として-15に定義しているが,å¿
    257 è¦ã«å¿œã˜ã¦
    258 ã‚¿ãƒ¼ã‚²ãƒƒãƒˆæ¯Žã«å¿
    259 è¦ãªå€¤ã‚’設定することができる.
     176チップ依存部で既定値として-15に定義しているが,必要に応じて
     177ターゲット毎に必要な値を設定することができる.
    260178
    261179
    262 ä»¥ä¸Šï¼Ž
     180以上.
  • ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_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 */
    5540
    5641/*
    57  *    kernel.hのチップ依存部(BCM2837用)
     42 *    kernel.hのチップ依存部(BCM2837用)
    5843 *
    59  *  このインクルードファイルは,target_kernel.h(または,そこからインク
    60  *  ルードされるファイル)のみからインクルードされる.他のファイルから
    61  *  直接インクルードしてはならない.
     44 *  このインクルードファイルは,target_kernel.h(または,そこからインク
     45 *  ルードされるファイル)のみからインクルードされる.他のファイルから
     46 *  直接インクルードしてはならない.
    6247 */
    6348
     
    6651
    6752/*
    68  *  ARM64依存定義
     53 *  ARM64依存定義
    6954 */
    7055#include "arm64_gcc/common/core_kernel.h"
    7156
    7257/*
    73  *  サポートする機能の定義
     58 *  サポートする機能の定義
    7459 */
    75 // dis_int, ena_int å
    76 ±ã«ã‚µãƒãƒ¼ãƒˆã—ない
     60// dis_int, ena_int 共にサポートしない
    7761
    7862/*
    79  *  割込み優å
    80 ˆåº¦ã®ç¯„囲
     63 *  割込み優先度の範囲
    8164 */
    8265#ifndef TMIN_INTPRI
    83     #define TMIN_INTPRI             (-15)           /* 割込み優å
    84 ˆåº¦ã®æœ€å°å€¤ï¼ˆæœ€é«˜å€¤ï¼‰*/
     66    #define TMIN_INTPRI             (-15)           /* 割込み優先度の最小値(最高値)*/
    8567#endif
    8668#ifndef TMAX_INTPRI
    87     #define TMAX_INTPRI             (-1)            /* 割込み優å
    88 ˆåº¦ã®æœ€å¤§å€¤ï¼ˆæœ€ä½Žå€¤ï¼‰ */
     69    #define TMAX_INTPRI             (-1)            /* 割込み優先度の最大値(最低値) */
    8970#endif
    9071
  • ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_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の生成スクリプトのチップ依存部(BCM2837用)
     47パス2の生成スクリプトのチップ依存部(BCM2837用)
    6348#
    6449
    6550#
    66 æœ‰åŠ¹ãªå‰²è¾¼ã¿ç•ªå·ï¼Œå‰²è¾¼ã¿ãƒãƒ³ãƒ‰ãƒ©ç•ªå·
     51有効な割込み番号,割込みハンドラ番号
    6752#
    6853$INTNO_VALID = [ *($TMIN_INTNO..$TMAX_INTNO) ]
     
    7055
    7156#
    72 æœ‰åŠ¹ãªCPU例外ハンドラ番号
     57有効なCPU例外ハンドラ番号
    7358#
    7459$EXCNO_VALID = [ *(0..7) ]
    7560
    7661#
    77 #  ATT_ISRで使用できる割込み番号とそれに対応する割込みハンドラ番号
     62#  ATT_ISRで使用できる割込み番号とそれに対応する割込みハンドラ番号
    7863#
    7964$INTNO_ATTISR_VALID = $INTNO_VALID
     
    8166
    8267#
    83 #  DEF_INT/DEF_EXCで使用できる割込みハンドラ番号/CPU例外ハンドラ番号
     68#  DEF_INT/DEF_EXCで使用できる割込みハンドラ番号/CPU例外ハンドラ番号
    8469#
    8570$INHNO_DEFINH_VALID = $INHNO_VALID
     
    8772
    8873#
    89 #  CFG_INTで使用できる割込み番号と割込み優å
    90 ˆåº¦
     74#  CFG_INTで使用できる割込み番号と割込み優先度
    9175#
    9276$INTNO_CFGINT_VALID = [*($TMIN_INTNO..11),*(32..39),93, 107,109,110,*(112..119),121]
     
    9478
    9579#
    96 å‰²è¾¼ã¿å±žæ€§ä¸­ã®ã‚¿ãƒ¼ã‚²ãƒƒãƒˆä¾å­˜ã«ç”¨ã„るビット
     80割込み属性中のターゲット依存に用いるビット
    9781#
    9882#$TARGET_INTATR =
    9983
    10084#
    101 # コア依存部のインクルード
     85# コア依存部のインクルード
    10286#
    10387IncludeTrb("arm64_gcc/common/core_kernel.trb")
     
    10690
    10791#
    108 #  割込み要求ライン優å
    109 ˆåº¦ãƒ†ãƒ¼ãƒ–ル
     92#  割込み要求ライン優先度テーブル
    11093#
    11194
     
    127110
    128111#
    129 #  割込み優å
    130 ˆåº¦ãƒžã‚¹ã‚¯ãƒ†ãƒ¼ãƒ–ル
     112#  割込み優先度マスクテーブル
    131113#
    132114
     
    156138
    157139#
    158 å‰²è¾¼ã¿ãƒãƒ³ãƒ‰ãƒ©ãƒ†ãƒ¼ãƒ–ル
     140割込みハンドラテーブル
    159141#
    160142$kernelCfgC.comment_header("Interrupt Handler Table")
     
    174156
    175157#
    176 #  CPU例外ハンドラテーブル
     158#  CPU例外ハンドラテーブル
    177159#
    178160$kernelCfgC.comment_header("CPU Exception Handler Table")
  • ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_rename.def

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

    • Property svn:mime-type set to text/plain; charset=utf-8
  • ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_serial.c

    • Property svn:mime-type set to text/plain; charset=utf-8
    r384 r386  
    1010 *              Nagoya Municipal Industrial Research Institute, JAPAN
    1111 *
    12  *  上記著作権è€
    13 ã¯ï¼Œä»¥ä¸‹ã®(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
    14  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    15  *  変・再é
    16 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    17  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    18  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    19  *      スコード中に含まれていること.
    20  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    21  *      用できる形で再é
    22 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    23 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    24  *      è€
    25 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    26  *      の無保証規定を掲載すること.
    27  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    28  *      用できない形で再é
    29 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    30  *      と.
    31  *    (a) 再é
    32 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    33 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    34  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    35  *    (b) 再é
    36 å¸ƒã®å½¢æ
    37 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    38  *        報告すること.
    39  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    40  *      害からも,上記著作権è€
    41 ãŠã‚ˆã³TOPPERSプロジェクトをå
    42 è²¬ã™ã‚‹ã“と.
    43  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    44  *      由に基づく請求からも,上記著作権è€
    45 ãŠã‚ˆã³TOPPERSプロジェクトを
    46  *      å
    47 è²¬ã™ã‚‹ã“と.
     12 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     13 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     14 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     15 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     16 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     17 *      スコード中に含まれていること.
     18 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     19 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     20 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     21 *      の無保証規定を掲載すること.
     22 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     23 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     24 *      と.
     25 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     26 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     27 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     28 *        報告すること.
     29 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     30 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     31 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     32 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     33 *      免責すること.
    4834 *
    49  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    50 ãŠ
    51  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    52  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    53  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    54  *  の責任を負わない.
     35 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     36 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     37 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     38 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     39 *  の責任を負わない.
    5540 *
    5641 */
    5742
    5843/*
    59  * シリアルドライバ
     44 * シリアルドライバ
    6045 */
    6146
     
    6752
    6853/*
    69  * レジスタ設定値
     54 * レジスタ設定値
    7055 */
    7156#define PORT2SIOPID(x)  ((x) + 1)
     
    8570
    8671/*
    87  *  送信バッファに空きがあるか?
     72 *  送信バッファに空きがあるか?
    8873 */
    8974Inline bool_t
     
    9479
    9580/*
    96  *  受信バッファに文字があるか?
     81 *  受信バッファに文字があるか?
    9782 */
    9883Inline bool_t
     
    10388
    10489/*
    105  *  受信した文字の取出し
     90 *  受信した文字の取出し
    10691 */
    10792Inline char
     
    11297
    11398/*
    114  *  送信する文字の書込み
     99 *  送信する文字の書込み
    115100 */
    116101Inline void
     
    121106
    122107/*
    123  *  ターゲットのシリアル初期化
     108 *  ターゲットのシリアル初期化
    124109 */
    125110void target_low_output_init(ID siopid)
     
    135120    sil_wrw_mem(UART_CR(inib->baseAddress), 0U);
    136121
    137     // クロックのセットアップ
     122    // クロックのセットアップ
    138123    mbox[0] = 9*4;
    139124    mbox[1] = MBOX_REQUEST;
     
    174159
    175160/*
    176  *  SIO初期化
     161 *  SIO初期化
    177162 */
    178163void sio_initialize(intptr_t exinf)
     
    187172
    188173/*
    189  *  シリアルオープン
     174 *  シリアルオープン
    190175 */
    191176SIOPCB *sio_opn_por(ID siopid, intptr_t exinf)
     
    202187    target_low_output_init(siopid);
    203188
    204     // 受信コールバック許可
     189    // 受信コールバック許可
    205190    sio_ena_cbr(siopcb, SIO_RDY_RCV);
    206191
     
    209194
    210195/*
    211  *  シリアルクローズ
     196 *  シリアルクローズ
    212197 */
    213198void sio_cls_por(SIOPCB *siopcb)
    214199{
    215200    /*
    216      *  UARTをディスエーブル
     201     *  UARTをディスエーブル
    217202     */
    218203    sil_wrw_mem(UART_CR(siopcb->inib->baseAddress), 0U);
     
    220205
    221206/*
    222  *  割込みハンドラ
     207 *  割込みハンドラ
    223208 */
    224209#include "target_syssvc.h"
     
    229214    if (sio_getready(siopcb)) {
    230215        /*
    231          *  受信通知コールバックルーチンを呼び出す.
     216         *  受信通知コールバックルーチンを呼び出す.
    232217         */
    233218        sio_irdy_rcv(siopcb->exinf);
     
    235220    if (sio_putready(siopcb)) {
    236221        /*
    237          *  送信可能コールバックルーチンを呼び出す.
     222         *  送信可能コールバックルーチンを呼び出す.
    238223         */
    239224        sio_irdy_snd(siopcb->exinf);
     
    242227
    243228/*
    244  *  1文字送信
     229 *  1文字送信
    245230 */
    246231bool_t sio_snd_chr(SIOPCB *siopcb, char c)
     
    254239
    255240/*
    256  *  1文字受信
     241 *  1文字受信
    257242 */
    258243int_t sio_rcv_chr(SIOPCB *siopcb)
     
    265250
    266251/*
    267  *  コールバックの許可
     252 *  コールバックの許可
    268253 */
    269254void sio_ena_cbr(SIOPCB *siopcb, uint_t cbrtn)
     
    287272
    288273/*
    289  *  コールバックの禁止
     274 *  コールバックの禁止
    290275 */
    291276void sio_dis_cbr(SIOPCB *siopcb, uint_t cbrtn)
     
    309294
    310295/*
    311  *  1文字出力(ポーリングでの出力)
     296 *  1文字出力(ポーリングでの出力)
    312297 */
    313298void sio_pol_snd_chr(char c, ID siopid)
  • ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_serial.cfg

    • Property svn:mime-type set to text/plain; charset=utf-8
    r384 r386  
    11/*
    2  *  SIOドライバ(CQ-FRK-FM3用)のコンフィグレーションファイル
     2 *  SIOドライバ(CQ-FRK-FM3用)のコンフィグレーションファイル
    33 */
    44
  • ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_serial.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 */
    5540
    5641/*
    57  *  シリアルI/Oデバイス(SIO)ドライバ
     42 *  シリアルI/Oデバイス(SIO)ドライバ
    5843 */
    5944
     
    6247
    6348/*
    64  *  SIOの割込み設定
     49 *  SIOの割込み設定
    6550 */
    66 #define INTNO_SIO     TINTNO_UART         // 割込み番号
     51#define INTNO_SIO     TINTNO_UART         // 割込み番号
    6752
    6853#ifndef INTATR_SIO
    69     #define INTATR_SIO    TA_NULL         // 割込み属性
     54    #define INTATR_SIO    TA_NULL         // 割込み属性
    7055#endif
    7156
    7257#ifndef INTPRI_SIO
    73     #define INTPRI_SIO    (-2)            // 割込み優å
    74 ˆåº¦
     58    #define INTPRI_SIO    (-2)            // 割込み優先度
    7559#endif
    7660
    7761/*
    78  *  コールバックルーチンの識別番号
     62 *  コールバックルーチンの識別番号
    7963 */
    80 #define SIO_RDY_SND    1U        /* 送信可能コールバック */
    81 #define SIO_RDY_RCV    2U        /* 受信通知コールバック */
     64#define SIO_RDY_SND    1U        /* 送信可能コールバック */
     65#define SIO_RDY_RCV    2U        /* 受信通知コールバック */
    8266
    8367#ifndef TOPPERS_MACRO_ONLY
    8468
    8569/*
    86  *  シリアルポートの初期化ブロック
     70 *  シリアルポートの初期化ブロック
    8771 */
    8872typedef const struct tag_SIOPINIB {
     
    9478
    9579/*
    96  *  シリアルポートの管理ブロック
     80 *  シリアルポートの管理ブロック
    9781 */
    9882typedef struct sio_port_control_block {
     
    10286
    10387/*
    104  *  SIO初期化
     88 *  SIO初期化
    10589 */
    10690extern void sio_initialize(intptr_t exinf);
    10791
    10892/*
    109  *  シリアルオープン
     93 *  シリアルオープン
    11094 */
    11195extern SIOPCB *sio_opn_por(ID siopid, intptr_t exinf);
    11296
    11397/*
    114  *  シリアルクローズ
     98 *  シリアルクローズ
    11599 */
    116100extern void sio_cls_por(SIOPCB *p_siopcb);
    117101
    118102/*
    119  *  割込みハンドラ
     103 *  割込みハンドラ
    120104 */
    121105extern void sio_isr(intptr_t exinf);
    122106
    123107/*
    124  *  1文字送信
     108 *  1文字送信
    125109 */
    126110extern bool_t sio_snd_chr(SIOPCB *siopcb, char c);
    127111
    128112/*
    129  *  1文字受信
     113 *  1文字受信
    130114 */
    131115extern int_t sio_rcv_chr(SIOPCB *siopcb);
    132116
    133117/*
    134  *  コールバックの許可
     118 *  コールバックの許可
    135119 */
    136120extern void sio_ena_cbr(SIOPCB *siopcb, uint_t cbrtn);
    137121
    138122/*
    139  *  コールバックの禁止
     123 *  コールバックの禁止
    140124 */
    141125extern void sio_dis_cbr(SIOPCB *siopcb, uint_t cbrtn);
    142126
    143127/*
    144  *  送信可能コールバック
     128 *  送信可能コールバック
    145129 */
    146130extern void sio_irdy_snd(intptr_t exinf);
    147131
    148132/*
    149  *  受信通知コールバック
     133 *  受信通知コールバック
    150134 */
    151135extern void sio_irdy_rcv(intptr_t exinf);
    152136
    153137/*
    154  *  1文字送信(ポーリングでの出力)
     138 *  1文字送信(ポーリングでの出力)
    155139 */
    156140extern void sio_pol_snd_chr(char c, ID siopid);
    157141
    158142/*
    159  *  低レベル出力初期化
     143 *  低レベル出力初期化
    160144 */
    161145extern void target_low_output_init(ID siopid);
  • ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_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のチップ依存部(BCM2837用)
     43 *   sil.hのチップ依存部(BCM2837用)
    5944 */
    6045
     
    6348
    6449/*
    65  *  ARMv8-A のå
    66 ±é€šå®šç¾©
     50 *  ARMv8-A の共通定義
    6751 */
    6852#include "arm64_gcc/common/core_sil.h"
  • ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_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のチップ依存部(BCM2837用)
     43 *  t_stddef.hのチップ依存部(BCM2837用)
    5944 *
    60  *  このインクルードファイルは,target_stddef.h(または,そこからインク
    61  *  ルードされるファイル)のみからインクルードされる.他のファイルから
    62  *  直接インクルードしてはならない.
     45 *  このインクルードファイルは,target_stddef.h(または,そこからインク
     46 *  ルードされるファイル)のみからインクルードされる.他のファイルから
     47 *  直接インクルードしてはならない.
    6348 */
    6449
     
    6752
    6853/*
    69  *  ターゲットを識別するためのマクロの定義
     54 *  ターゲットを識別するためのマクロの定義
    7055 */
    71 #define TOPPERS_BCM283X           /* チップ略称 */
     56#define TOPPERS_BCM283X           /* チップ略称 */
    7257
    7358/*
    74  *  コア依存部定義
     59 *  コア依存部定義
    7560 */
    7661#include "arm64_gcc/common/core_stddef.h"
  • ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_support.S

    • Property svn:mime-type set to text/plain; charset=utf-8
    r384 r386  
    66 *             Nagoya Municipal Industrial Research Institute, 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 è²¬ã™ã‚‹ã“と.
    44  *
    45  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    46 ãŠ
    47  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    48  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    49  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    50  *  の責任を負わない.
    51  *
    52  */
    53 
    54 /*
    55  *  チップ依存モジュール アセンブリ言語部(BCM2837)
     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 *      免責すること.
     30 *
     31 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     32 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     33 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     34 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     35 *  の責任を負わない.
     36 *
     37 */
     38
     39/*
     40 *  チップ依存モジュール アセンブリ言語部(BCM2837)
    5641 */
    5742
    5843#define TOPPERS_MACRO_ONLY
    59 #define UINT_C(val)     (val)           /* uint_t型の定数を作るマクロ */
    60 #define ULONG_C(val)    (val)           /* ulong_t型の定数を作るマクロ */
    61 #define UINT64_C(val)   (val)           /* uint64_t型の定数を作るマクロ */
    62 #define CAST(type, val) (val)           /* 型キャストを行うマクロ */
     44#define UINT_C(val)     (val)           /* uint_t型の定数を作るマクロ */
     45#define ULONG_C(val)    (val)           /* ulong_t型の定数を作るマクロ */
     46#define UINT64_C(val)   (val)           /* uint64_t型の定数を作るマクロ */
     47#define CAST(type, val) (val)           /* 型キャストを行うマクロ */
    6348
    6449#include "kernel_impl.h"
    6550
    6651/*
    67  *  例外å
    68 ¥å£ã®æ“ä½œ
     52 *  例外入口の操作
    6953 *    x22: excno(0..7)
    7054 */
     
    8468    bl    call_exc_handler
    8569
    86     // 例外発生直前のIフラグまたはFフラグが1ならカーネル管理外のCPU例外とみなす
     70    // 例外発生直前のIフラグまたはFフラグが1ならカーネル管理外のCPU例外とみなす
    8771    ldr   x3, [x0, #32]      // SPSR --> x1
    8872    tst   x3, #(3 << 6)
    8973    b.ne  ret_exc
    9074
    91     // カーネル管理のCPU例外の場合は割込みの出口処理とå
    92 ±é€š
     75    // カーネル管理のCPU例外の場合は割込みの出口処理と共通
    9376    msr   daifclr, #AARCH64_DAIF_FIQ
    9477    b     ret_int
    9578
    9679/*
    97  *  FIQのå
    98 ¥å£å‡¦ç†
     80 *  FIQの入口処理
    9981 */
    10082    .text
     
    10688
    10789/*
    108  *  割込みå
    109 ¥å£ã®æ“ä½œ
     90 *  割込み入口の操作
    11091 */
    11192    .text
     
    11596    mov    x0,    sp
    11697    /*
    117      *  割込み要因の特定と保存
     98     *  割込み要因の特定と保存
    11899     */
    119100find_int_src_core: // find a interrupt source from core(core 0)
     
    250231
    251232    /*
    252      *  割込み発生直前の割込み優å
    253 ˆåº¦ï¼ˆå†
    254 éƒ¨è¡¨ç¾ï¼‰ã‚’保存
     233     *  割込み発生直前の割込み優先度(内部表現)を保存
    255234     */
    256235    adrp  x1, current_intpri
     
    260239
    261240    /*
    262      *  割込み要因の優å
    263 ˆåº¦ã‚’取得
     241     *  割込み要因の優先度を取得
    264242     */
    265243    adrp  x3, _kernel_intpri_table
     
    267245    ldr   w4, [x3, x9, lsl #2]
    268246
    269     // 発生した割込みの優å
    270 ˆåº¦ã‚’もとに割込みをマスク
     247    // 発生した割込みの優先度をもとに割込みをマスク
    271248    mov   w0, w4        //  arg: intpri
    272249    bl    chip_mask_interrupt
    273250
    274     // D,A,F フラグをクリアしておく(CPUロック相当にする)
     251    // D,A,F フラグをクリアしておく(CPUロック相当にする)
    275252    msr   daifclr, #(AARCH64_DAIF_DBG | AARCH64_DAIF_SERR | AARCH64_DAIF_FIQ)
    276253
    277     // ハンドラ呼び出し
     254    // ハンドラ呼び出し
    278255    mov   x0, sp
    279256    ldr   w9, [x0, #8]
    280257    mov   w0, w9             // arg: intno
    281258    bl    call_int_handler
    282     /* そのまま chip_ret_int へ */
    283 
    284 /*
    285  *  割込み出口のGIC操作
     259    /* そのまま chip_ret_int へ */
     260
     261/*
     262 *  割込み出口のGIC操作
    286263 */
    287264chip_ret_int:
    288     // 割込み発生前の優å
    289 ˆåº¦ã«æˆ»ã™
     265    // 割込み発生前の優先度に戻す
    290266    mov   x0, sp
    291267    adrp  x1, current_intpri
     
    294270    str   w2, [x1]
    295271
    296     // 優å
    297 ˆåº¦ã‚’å
    298 ƒã«å‰²è¾¼ã¿ã®ãƒžã‚¹ã‚¯ã‚’戻す
     272    // 優先度を元に割込みのマスクを戻す
    299273    mov   w0, w2
    300274    bl    chip_unmask_interrupt
  • ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_sym.def

    • Property svn:mime-type set to text/plain; charset=utf-8
  • ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_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  *  テストプログラムのチップ依存定義(BCM2837用)
     43 *  テストプログラムのチップ依存定義(BCM2837用)
    5944 */
    6045
     
    6348
    6449/*
    65  *  コアå
    66 ±é€šå®šç¾©
     50 *  コア共通定義
    6751 */
    6852#include "arm64_gcc/common/core_test.h"
  • ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_timer.cfg

    • Property svn:mime-type set to text/plain; charset=utf-8
    r384 r386  
    11/*
    2  *    タイマドライバのコンフィギュレーションファイル
     2 *    タイマドライバのコンフィギュレーションファイル
    33 */
    44INCLUDE("arm64_gcc/common/core_timer.cfg");
  • ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_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  *  タイマドライバ(BCM283X用)
     43 *  タイマドライバ(BCM283X用)
    5944 */
    6045
     
    6348
    6449/*
    65  *  ARMv8-A 依存定義
     50 *  ARMv8-A 依存定義
    6651 */
    6752#include "arm64_gcc/common/core_timer.h"
  • ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_unrename.h

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

    • Property svn:mime-type set to text/plain; charset=utf-8
    r384 r386  
    11=====================================================================
    2                          BCM283xチップ依存部
     2                         BCM283xチップ依存部
    33                                  Last Modified: '19/04/16
    44=====================================================================
    55
    66
    7 (1) 対応しているターゲットシステムの種類・構成
     7(1) 対応しているターゲットシステムの種類・構成
    88
    9 bcm283xチップ依存部は,主に Raspberry Pi で使用される Broadcom製チップを
    10 ã‚¿ãƒ¼ã‚²ãƒƒãƒˆã¨ã™ã‚‹ï¼Žç¾æ™‚点では Raspberru Pi 3B に搭載されるBCM2837 をサポートする.
     9bcm283xチップ依存部は,主に Raspberry Pi で使用される Broadcom製チップを
     10ターゲットとする.現時点では Raspberru Pi 3B に搭載されるBCM2837 をサポートする.
    1111
    12 (2) 使用する開発環境と動作検証した条件(バージョン,オプション等)
     12(2) 使用する開発環境と動作検証した条件(バージョン,オプション等)
    1313
    14 ã‚«ãƒ¼ãƒãƒ«ã¯GCCを用いてコンパイルする.動作確認したバージョンは各ターゲ
    15 ãƒƒãƒˆä¾å­˜éƒ¨ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã«è¨˜è¼‰ã™ã‚‹ï¼Ž
     14カーネルはGCCを用いてコンパイルする.動作確認したバージョンは各ターゲ
     15ット依存部のドキュメントに記載する.
    1616
    17 (3) ターゲット定義事é 
    18 ã®è¦å®š
     17(3) ターゲット定義事項の規定
    1918
    20 (3-1) 割込み処理に関する規定
     19(3-1) 割込み処理に関する規定
    2120
    22 (3-1-1) 概要
     21(3-1-1) 概要
    2322
    24 BCM283x は独自の割込みコントローラを搭載し,以下の特徴を持つ.
    25 ãƒ»å‰²è¾¼ã¿å„ªå
    26 ˆãƒ¬ãƒ™ãƒ«ã¯ã‚µãƒãƒ¼ãƒˆã—ない.
    27 ãƒ»å‰²è¾¼ã¿ã¯å
    28 ¨ã¦ãƒ¬ãƒ™ãƒ«ãƒˆãƒªã‚¬ã§ã‚る.したがって割込み要求フラグは
    29   割込み発生å
    30 ƒã®ãƒ‡ãƒã‚¤ã‚¹ã‚’直接操作してクリアするå¿
    31 è¦ãŒã‚る.
     23BCM283x は独自の割込みコントローラを搭載し,以下の特徴を持つ.
     24・割込み優先レベルはサポートしない.
     25・割込みは全てレベルトリガである.したがって割込み要求フラグは
     26  割込み発生元のデバイスを直接操作してクリアする必要がある.
    3227
    33 BCM283x依存部では,IRQ をカーネル管理の割込み,FIQをカーネル管理外の割込みとする.
     28BCM283x依存部では,IRQ をカーネル管理の割込み,FIQをカーネル管理外の割込みとする.
    3429
    3530
    36 (3-1-2) 割込みハンドラ番号と割込み番号の割当て,両è€
    37 ã®å¯¾å¿œ
     31(3-1-2) 割込みハンドラ番号と割込み番号の割当て,両者の対応
    3832
    39 å‰²è¾¼ã¿ãƒãƒ³ãƒ‰ãƒ©ç•ªå·ã¨å‰²è¾¼ã¿ç•ªå·ã¯ï¼ŒBCM2835及びBCM2836の
    40 ãƒšãƒªãƒ•ã‚§ãƒ©ãƒ«ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«(下記a及びb)から,ペンディングレジスタのビット位置に基づいて
    41 0から127の番号を割り当てる.(個ã€
    42 ã®å®šç¾©ã¯ bcm2837.h を参ç
    43 §)
     33割込みハンドラ番号と割込み番号は,BCM2835及びBCM2836の
     34ペリフェラルマニュアル(下記a及びb)から,ペンディングレジスタのビット位置に基づいて
     350から127の番号を割り当てる.(個々の定義は bcm2837.h を参照)
    4436
    45  0 ... 31  Core interrupt (下記aのP16 「Core0 interrupt source」に対応)
    46 32 ... 63  ARM peripherals interrupt(bのP113「Basic pending register」に対応)
    47 64 ... 95  ARM peripherals interrupt(bのP115「GPU pending register 1」に対応)
    48 96 ...127  ARM peripherals interrupt(bのP115「GPU pending register 2」に対応)
     37 0 ... 31  Core interrupt (下記aのP16 「Core0 interrupt source」に対応)
     3832 ... 63  ARM peripherals interrupt(bのP113「Basic pending register」に対応)
     3964 ... 95  ARM peripherals interrupt(bのP115「GPU pending register 1」に対応)
     4096 ...127  ARM peripherals interrupt(bのP115「GPU pending register 2」に対応)
    4941
    5042(a) QA7(ARM Quad A7 core)
     
    5547
    5648
    57 (3-1-3) 割込み優å
    58 ˆåº¦ã®æ®µéšŽæ•°ï¼ˆTMIN_INTPRIの値),その設定方法
     49(3-1-3) 割込み優先度の段階数(TMIN_INTPRIの値),その設定方法
    5950
    60 å‰²è¾¼ã¿å„ªå
    61 ˆåº¦ã®æ®µéšŽæ•°ã¯ï¼Œã‚¿ãƒ¼ã‚²ãƒƒãƒˆä¾å­˜éƒ¨æ¯Žã«ç•°ãªã‚‹ï¼Ž
    62 BCM283x の割込みコントローラは優å
    63 ˆåº¦åˆ¶å¾¡æ©Ÿèƒ½ã‚’持たないためソフトウェアで実現する.
    64 ãã®ãŸã‚æ®µéšŽæ•°ã‚’独自に設定することが可能である.
     51割込み優先度の段階数は,ターゲット依存部毎に異なる.
     52BCM283x の割込みコントローラは優先度制御機能を持たないためソフトウェアで実現する.
     53そのため段階数を独自に設定することが可能である.
    6554
    66 ã‚«ãƒ¼ãƒãƒ«ç®¡ç†å†
    67 ã®å‰²è¾¼ã¿ã«å¯¾ã™ã‚‹æœ€é«˜å„ªå
    68 ˆåº¦(TMIN_INTPRI)はチップ依存部で
    69 æ—¢å®šå€¤ã‚’定義しているが,ターゲット依存部で設定することも可能である.
     55カーネル管理内の割込みに対する最高優先度(TMIN_INTPRI)はチップ依存部で
     56既定値を定義しているが,ターゲット依存部で設定することも可能である.
    7057
    71 å„割込みの割込み優å
    72 ˆåº¦ã¯ï¼ŒCFG_INT で設定する.優å
    73 ˆåº¦ã¯ TMIN_INTPRI 以上の値
    74 (優å
    75 ˆåº¦ã¨ã—ては低い値)を指定する.
     58各割込みの割込み優先度は,CFG_INT で設定する.優先度は TMIN_INTPRI 以上の値
     59(優先度としては低い値)を指定する.
    7660
    77 (3-1-4) dis_intとena_intのサポートの有無,その制限事é 
     61(3-1-4) dis_intとena_intのサポートの有無,その制限事項
     62
     63dis_int と ena_int はサポートしない
    7864
    7965
    80 dis_int と ena_int はサポートしない
     66(3-1-5) CFG_INTの制限事項と拡張(ターゲット定義で使用できる割込み属性)
     67
     68レベル割込みしかサポートしないため,エッジ/レベルのトリガ設定は意味をもたない.
     69その他,ターゲット独自に使用可能な割込み属性はない.
    8170
    8271
    83 (3-1-5) CFG_INTの制限事é 
    84 ã¨æ‹¡å¼µï¼ˆã‚¿ãƒ¼ã‚²ãƒƒãƒˆå®šç¾©ã§ä½¿ç”¨ã§ãã‚‹å‰²è¾¼ã¿å±žæ€§ï¼‰
     72(3-1-6) カーネル管理外の割込み
    8573
    86 ãƒ¬ãƒ™ãƒ«å‰²è¾¼ã¿ã—かサポートしないため,エッジ/レベルのトリガ設定は意味をもたない.
    87 ãã®ä»–,ターゲット独自に使用可能な割込み属性はない.
     74FIQ割込みをカーネル管理外の割込みとして扱う.
     75
     76FIQ割込みが発生すると該当する割込みベクタからレジスタの退避を行なった後に
     77call_fiq_handler (core_config.c) が呼び出される.この関数は,
     78コアの全ての例外がマスクされた状態(ステータスレジスタのD,A,I,Fが全て1)で
     79呼び出される.
     80
     81FIQを利用するための設定,発生したFIQ 割込みに対する要因判別,
     82及び対応するハンドラ等の処理は独自に実装する必要がある.
     83
     84カーネル管理外の割込みを設定するためのAPIはサポートしない.
    8885
    8986
    90 (3-1-6) カーネル管理外の割込み
     87(3-2) CPUロック・割込みロック
    9188
    92 FIQ割込みをカーネル管理外の割込みとして扱う.
     89CPUロックは,ステータスレジスタのIビットの値で判別する.
     90全割込みロックフラグの実装ではこれに加えFビットも使用する.
    9391
    94 FIQ割込みが発生すると該当する割込みベクタからレジスタの退避を行なった後に
    95 call_fiq_handler (core_config.c) が呼び出される.この関数は,
    96 ã‚³ã‚¢ã®å
    97 ¨ã¦ã®ä¾‹å¤–がマスクされた状æ
    98 ‹(ステータスレジスタのD,A,I,Fがå
    99 ¨ã¦1)で
    100 å‘¼ã³å‡ºã•ã‚Œã‚‹ï¼Ž
    101 
    102 FIQを利用するための設定,発生したFIQ 割込みに対する要因判別,
    103 åŠã³å¯¾å¿œã™ã‚‹ãƒãƒ³ãƒ‰ãƒ©ç­‰ã®å‡¦ç†ã¯ç‹¬è‡ªã«å®Ÿè£
    104 ã™ã‚‹å¿
    105 è¦ãŒã‚る.
    106 
    107 ã‚«ãƒ¼ãƒãƒ«ç®¡ç†å¤–の割込みを設定するためのAPIはサポートしない.
     92CPUロックフラグは割込みロックフラグとは独立したフラグとしてサポートする.
     93そのため,SIL_LOC_INT呼び出し時はIフラグの状態を記憶し,
     94SIL_UNL_INT呼び出し時に元の状態に戻している.
    10895
    10996
    110 (3-2) CPUロック・割込みロック
     97(3-3) 性能評価用システム時刻の参照に関する規定
    11198
    112 CPUロックは,ステータスレジスタのIビットの値で判別する.
    113 å
    114 ¨å‰²è¾¼ã¿ãƒ­ãƒƒã‚¯ãƒ•ãƒ©ã‚°ã®å®Ÿè£
    115 ã§ã¯ã“れに加えFビットも使用する.
    116 
    117 CPUロックフラグは割込みロックフラグとは独立したフラグとしてサポートする.
    118 ãã®ãŸã‚ï¼ŒSIL_LOC_INT呼び出し時はIフラグの状æ
    119 ‹ã‚’記憶し,
    120 SIL_UNL_INT呼び出し時にå
    121 ƒã®çŠ¶æ
    122 ‹ã«æˆ»ã—ている.
     99get_utmをサポートしない.
    123100
    124101
    125 (3-3) 性能評価用システム時刻の参ç
    126 §ã«é–¢ã™ã‚‹è¦å®š
     102(3-4) スタートアップルーチンでの初期化内容
    127103
    128 get_utmをサポートしない.
     104スタートアップルーチンはターゲット依存部のドキュメントに記載する.
    129105
    130106
    131 (3-4) スタートアップルーチンでの初期化å†
    132 å®¹
    133 
    134 ã‚¹ã‚¿ãƒ¼ãƒˆã‚¢ãƒƒãƒ—ルーチンはターゲット依存部のドキュメントに記載する.
    135 
    136 
    137 (4) ディレクトリ構成・ファイル構成
     107(4) ディレクトリ構成・ファイル構成
    138108  ./arch/arm64_gcc/bcm283x/
    139109    MANIFEST
     
    163133    pl011.h
    164134
    165 (12) バージョン履歴
     135(12) バージョン履歴
    166136
    1671372018/05/30
    168  ãƒ»æœ€åˆã®ãƒªãƒªãƒ¼ã‚¹
     138 ・最初のリリース
    1691392019/04/15
    170  ãƒ»BCM283xチップ依存部の分離に合わせて修正
     140 ・BCM283xチップ依存部の分離に合わせて修正
  • ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/pl011.h

    • Property svn:mime-type set to text/plain; charset=utf-8
    r384 r386  
    1111 *             Nagoya Municipal Industrial Research Institute, JAPAN
    1212 *
    13  *  上記著作権è€
    14 ã¯ï¼Œä»¥ä¸‹ã®(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
    15  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    16  *  変・再é
    17 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    18  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    19  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    20  *      スコード中に含まれていること.
    21  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    22  *      用できる形で再é
    23 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    24 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    25  *      è€
    26 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    27  *      の無保証規定を掲載すること.
    28  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    29  *      用できない形で再é
    30 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    31  *      と.
    32  *    (a) 再é
    33 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    34 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    35  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    36  *    (b) 再é
    37 å¸ƒã®å½¢æ
    38 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    39  *        報告すること.
    40  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    41  *      害からも,上記著作権è€
    42 ãŠã‚ˆã³TOPPERSプロジェクトをå
    43 è²¬ã™ã‚‹ã“と.
    44  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    45  *      由に基づく請求からも,上記著作権è€
    46 ãŠã‚ˆã³TOPPERSプロジェクトを
    47  *      å
    48 è²¬ã™ã‚‹ã“と.
     13 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     14 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     15 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     16 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     17 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     18 *      スコード中に含まれていること.
     19 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     20 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     21 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     22 *      の無保証規定を掲載すること.
     23 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     24 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     25 *      と.
     26 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     27 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     28 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     29 *        報告すること.
     30 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     31 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     32 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     33 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     34 *      免責すること.
    4935 *
    50  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    51 ãŠ
    52  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    53  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    54  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    55  *  の責任を負わない.
     36 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     37 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     38 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     39 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     40 *  の責任を負わない.
    5641 *
    5742 *  $Id$
     
    5944
    6045/*
    61  *  ARM PrimCell UART(PL011)に関する定義
     46 *  ARM PrimCell UART(PL011)に関する定義
    6247 */
    6348
     
    6651
    6752/*
    68  *  UARTレジスタの番地の定義
     53 *  UARTレジスタの番地の定義
    6954 */
    7055#define UART_DR(base)           ((uint32_t *)((base) + 0x00U))
     
    8368
    8469/*
    85  *  フラグレジスタ(UART_FR)の参ç
    86 §å€¤
     70 *  フラグレジスタ(UART_FR)の参照値
    8771 */
    88 #define UART_FR_RXFE            UINT_C(0x10)    /* 受信バッファが空 */
    89 #define UART_FR_TXFF            UINT_C(0x20)    /* 送信バッファがフル */
     72#define UART_FR_RXFE            UINT_C(0x10)    /* 受信バッファが空 */
     73#define UART_FR_TXFF            UINT_C(0x20)    /* 送信バッファがフル */
    9074
    9175/*
    92  *  ライン制御レジスタ(UART_LCR_H)の設定値
     76 *  ライン制御レジスタ(UART_LCR_H)の設定値
    9377 */
    94 #define UART_LCR_H_PEN          UINT_C(0x02)    /* パリティを用いる */
    95 #define UART_LCR_H_EPS          UINT_C(0x04)    /* 偶数パリティに */
    96 #define UART_LCR_H_STP2         UINT_C(0x08)    /* ストップビットを2ビットに */
    97 #define UART_LCR_H_FEN          UINT_C(0x10)    /* FIFOを有効に */
    98 #define UART_LCR_H_WLEN8        UINT_C(0x60)    /* データ長を8ビットに */
     78#define UART_LCR_H_PEN          UINT_C(0x02)    /* パリティを用いる */
     79#define UART_LCR_H_EPS          UINT_C(0x04)    /* 偶数パリティに */
     80#define UART_LCR_H_STP2         UINT_C(0x08)    /* ストップビットを2ビットに */
     81#define UART_LCR_H_FEN          UINT_C(0x10)    /* FIFOを有効に */
     82#define UART_LCR_H_WLEN8        UINT_C(0x60)    /* データ長を8ビットに */
    9983
    10084/*
    101  *  制御レジスタ(UART_CR)の設定値
     85 *  制御レジスタ(UART_CR)の設定値
    10286 */
    103 #define UART_CR_UARTEN  UINT_C(0x0001)          /* UARTをイネーブルに */
    104 #define UART_CR_TXE             UINT_C(0x0100)          /* 送信をイネーブルに */
    105 #define UART_CR_RXE             UINT_C(0x0200)          /* 受信をイネーブルに */
     87#define UART_CR_UARTEN  UINT_C(0x0001)          /* UARTをイネーブルに */
     88#define UART_CR_TXE             UINT_C(0x0100)          /* 送信をイネーブルに */
     89#define UART_CR_RXE             UINT_C(0x0200)          /* 受信をイネーブルに */
    10690
    10791/*
    108  *  割込みマスクセット/クリアレジスタ(UART_IMSC)の設定値
     92 *  割込みマスクセット/クリアレジスタ(UART_IMSC)の設定値
    10993 */
    110 #define UART_IMSC_RXIM  UINT_C(0x0010)          /* 受信割込みマスク */
    111 #define UART_IMSC_TXIM  UINT_C(0x0020)          /* 送信割込みマスク */
     94#define UART_IMSC_RXIM  UINT_C(0x0010)          /* 受信割込みマスク */
     95#define UART_IMSC_TXIM  UINT_C(0x0020)          /* 送信割込みマスク */
    11296
    11397#ifndef TOPPERS_MACRO_ONLY
  • 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