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

文字コードを設定

File:
1 edited

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/gic_support.S

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/plain to text/plain;charset=UTF-8
    r279 r321  
    88 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    99 *
    10  *  上記著作権è€
    11 ã¯ï¼Œä»¥ä¸‹ã®(1)~(4)の条件を満たす場合に限り,本ソフトウェ
    12  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    13  *  変・再é
    14 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    28  *      と.
    29  *    (a) 再é
    30 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    31 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    32  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    33  *    (b) 再é
    34 å¸ƒã®å½¢æ
    35 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    36  *        報告すること.
    37  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    38  *      害からも,上記著作権è€
    39 ãŠã‚ˆã³TOPPERSプロジェクトをå
    40 è²¬ã™ã‚‹ã“と.
    41  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    42  *      由に基づく請求からも,上記著作権è€
    43 ãŠã‚ˆã³TOPPERSプロジェクトを
    44  *      å
    45 è²¬ã™ã‚‹ã“と.
     10 *  上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ
     11 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15 *      スコード中に含まれていること.
     16 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19 *      の無保証規定を掲載すること.
     20 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22 *      と.
     23 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     25 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26 *        報告すること.
     27 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31 *      免責すること.
    4632 *
    47  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    48 ãŠ
    49  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    50  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    51  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    52  *  の責任を負わない.
     33 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37 *  の責任を負わない.
    5338 *
    5439 *  $Id$
     
    5641
    5742/*
    58  *              カーネルの割込みコントローラ依存部のアセンブリ言語部(GIC用)
     43 *              カーネルの割込みコントローラ依存部のアセンブリ言語部(GIC用)
    5944 */
    6045
    6146#define TOPPERS_MACRO_ONLY
    6247#define TOPPERS_ASM_MACRO
    63 #define UINT_C(val)                     (val)           /* uint_t型の定数を作るマクロ */
    64 #define ULONG_C(val)            (val)           /* ulong_t型の定数を作るマクロ */
    65 #define CAST(type, val)         (val)           /* 型キャストを行うマクロ */
     48#define UINT_C(val)                     (val)           /* uint_t型の定数を作るマクロ */
     49#define ULONG_C(val)            (val)           /* ulong_t型の定数を作るマクロ */
     50#define CAST(type, val)         (val)           /* 型キャストを行うマクロ */
    6651#define GIC_REG(base, offset)   ((base) + (offset))
    6752#include "kernel_impl.h"
     
    7358
    7459/*
    75  *  割込みハンドラ呼出し前の割込みコントローラ操作
     60 *  割込みハンドラ呼出し前の割込みコントローラ操作
    7661 *
    77  *  r4に割込み番号を返す.irc_end_intで用いるæƒ
    78 å ±ï¼ˆå‰²è¾¼ã¿ç™ºç”Ÿå‰ã®å‰²è¾¼ã¿
    79  *  優å
    80 ˆåº¦ãƒžã‚¹ã‚¯ï¼‰ã‚’,スタックのå
    81 ˆé ­ã«ä¿å­˜ã™ã‚‹ï¼Ž
     62 *  r4に割込み番号を返す.irc_end_intで用いる情報(割込み発生前の割込み
     63 *  優先度マスク)を,スタックの先頭に保存する.
    8264 */
    8365        ATEXT
     
    8668ALABEL(irc_begin_int)
    8769        /*
    88          *  割込み要因を取得する.
     70         *  割込み要因を取得する.
    8971         */
    9072        ldr             r1, =GICC_IAR
     
    9274
    9375        /*
    94          *  割込み番号を求める.
     76         *  割込み番号を求める.
    9577         */
    96         lsl             r4, r3, #22                     /* 下位10ビットを取り出す */
     78        lsl             r4, r3, #22                     /* 下位10ビットを取り出す */
    9779        lsr             r4, r4, #22
    9880
    9981        /*
    100          *  割込み要求をクリアする.
     82         *  割込み要求をクリアする.
    10183         */
    10284        and             r0, r4, #31
     
    10890
    10991        /*
    110          *  割込み要因の割込み優å
    111 ˆåº¦ã‚’求め,割込み優å
    112 ˆåº¦ãƒžã‚¹ã‚¯ã«è¨­å®šã™ã‚‹ï¼Ž
     92         *  割込み要因の割込み優先度を求め,割込み優先度マスクに設定する.
    11393         */
    114         ldr             r1, =GICC_RPR           /* 受け付けた割込みの割込み優å
    115 ˆåº¦ã‚’取得 */
     94        ldr             r1, =GICC_RPR           /* 受け付けた割込みの割込み優先度を取得 */
    11695        ldr             r0, [r1]
    117         ldr             r1, =GICC_PMR           /* 割込み発生前の割込み優å
    118 ˆåº¦ã‚’取得 */
     96        ldr             r1, =GICC_PMR           /* 割込み発生前の割込み優先度を取得 */
    11997        ldr             r2, [r1]
    120         str             r0, [r1]                        /* 新しい割込み優å
    121 ˆåº¦ãƒžã‚¹ã‚¯ã‚’セットする */
    122         asm_data_sync_barrier r0        /* 割込み優å
    123 ˆåº¦ãƒžã‚¹ã‚¯ãŒã‚»ãƒƒãƒˆã•ã‚Œã‚‹ã®ã‚’å¾
    124 ã¤ */
    125         str             r2, [sp]                        /* irc_end_intで用いるæƒ
    126 å ±ã‚’保存 */
     98        str             r0, [r1]                        /* 新しい割込み優先度マスクをセットする */
     99        asm_data_sync_barrier r0        /* 割込み優先度マスクがセットされるのを待つ */
     100        str             r2, [sp]                        /* irc_end_intで用いる情報を保存 */
    127101
    128102        /*
    129          *  EOIを発行する.
     103         *  EOIを発行する.
    130104         */
    131         ldr             r1, =GICC_EOIR          /* EOIレジスタへの書込み */
     105        ldr             r1, =GICC_EOIR          /* EOIレジスタへの書込み */
    132106        str             r3, [r1]
    133107
    134108        /*
    135          *  割込み番号を返値としてリターンする.
     109         *  割込み番号を返値としてリターンする.
    136110         */
    137111        bx              lr
    138112
    139113/*
    140  *  割込みハンドラ呼出し後の割込みコントローラ操作
     114 *  割込みハンドラ呼出し後の割込みコントローラ操作
    141115 */
    142116        ATEXT
     
    145119ALABEL(irc_end_int)
    146120        /*
    147          *  割込み優å
    148 ˆåº¦ãƒžã‚¹ã‚¯ã‚’å
    149 ƒã«æˆ»ã™ï¼Ž
     121         *  割込み優先度マスクを元に戻す.
    150122         */
    151         ldr             r2, [sp]                        /* irc_begin_intで保存したæƒ
    152 å ±ã‚’復帰 */
    153         ldr             r1, =GICC_PMR           /* 割込み優å
    154 ˆåº¦ãƒžã‚¹ã‚¯ã‚’å
    155 ƒã«æˆ»ã™ */
     123        ldr             r2, [sp]                        /* irc_begin_intで保存した情報を復帰 */
     124        ldr             r1, =GICC_PMR           /* 割込み優先度マスクを元に戻す */
    156125        str             r2, [r1]
    157126        bx              lr
    158127
    159128/*
    160  *  CPU例外発生前の割込み優å
    161 ˆåº¦ã®å–å¾—
     129 *  CPU例外発生前の割込み優先度の取得
    162130 *
    163  *  CPU例外の発生で割込み優å
    164 ˆåº¦ãŒå¤‰ã‚ã‚‹ã“とはないため,現在の割込み優å
    165 ˆ
    166  *  度を返す.
     131 *  CPU例外の発生で割込み優先度が変わることはないため,現在の割込み優先
     132 *  度を返す.
    167133 */
    168134        ATEXT
     
    171137ALABEL(irc_get_intpri)
    172138        /*
    173          *  割込み優å
    174 ˆåº¦ãƒžã‚¹ã‚¯ã‚’外部表現に変換して返す.
     139         *  割込み優先度マスクを外部表現に変換して返す.
    175140         */
    176141        ldr             r1, =GICC_PMR
     
    181146
    182147/*
    183  *  CPU例外ハンドラ呼出し前の割込みコントローラ操作
     148 *  CPU例外ハンドラ呼出し前の割込みコントローラ操作
    184149 *
    185  *  irc_end_excで用いるæƒ
    186 å ±ï¼ˆCPU例外発生前の割込み優å
    187 ˆåº¦ãƒžã‚¹ã‚¯ï¼‰ã‚’,スタッ
    188  *      クのå
    189 ˆé ­ã«ä¿å­˜ã™ã‚‹ï¼Ž
     150 *  irc_end_excで用いる情報(CPU例外発生前の割込み優先度マスク)を,スタッ
     151 *      クの先頭に保存する.
    190152 */
    191153        ATEXT
     
    194156ALABEL(irc_begin_exc)
    195157        /*
    196          *  割込み優å
    197 ˆåº¦ãƒžã‚¹ã‚¯ã‚’保存する.
     158         *  割込み優先度マスクを保存する.
    198159         */
    199         ldr             r1, =GICC_PMR           /* 現在の割込み優å
    200 ˆåº¦ã‚’取得 */
     160        ldr             r1, =GICC_PMR           /* 現在の割込み優先度を取得 */
    201161        ldr             r2, [r1]
    202         str             r2, [sp]                        /* irc_end_excで用いるæƒ
    203 å ±ã‚’保存 */
     162        str             r2, [sp]                        /* irc_end_excで用いる情報を保存 */
    204163        bx              lr
    205164
    206165/*
    207  *  CPU例外ハンドラ呼出し後の割込みコントローラ操作
     166 *  CPU例外ハンドラ呼出し後の割込みコントローラ操作
    208167 */
    209168        ATEXT
     
    212171ALABEL(irc_end_exc)
    213172        /*
    214          *  割込み優å
    215 ˆåº¦ãƒžã‚¹ã‚¯ã‚’å
    216 ƒã«æˆ»ã™ï¼Ž
     173         *  割込み優先度マスクを元に戻す.
    217174         */
    218         ldr             r2, [sp]                        /* irc_begin_excで保存したæƒ
    219 å ±ã‚’復帰 */
    220         ldr             r1, =GICC_PMR           /* 割込み優å
    221 ˆåº¦ãƒžã‚¹ã‚¯ã‚’å
    222 ƒã«æˆ»ã™ */
     175        ldr             r2, [sp]                        /* irc_begin_excで保存した情報を復帰 */
     176        ldr             r1, =GICC_PMR           /* 割込み優先度マスクを元に戻す */
    223177        str             r2, [r1]
    224178        bx              lr
Note: See TracChangeset for help on using the changeset viewer.