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

modify svn:mimetype of files

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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
Note: See TracChangeset for help on using the changeset viewer.