source: ssp_aarch64/trunk/arm64_gcc/gic_support.S@ 353

Last change on this file since 353 was 353, checked in by nmir-saito, 6 years ago

initial import

File size: 4.6 KB
Line 
1/*
2 * TOPPERS/SSP Kernel
3 * Smallest Set Profile Kernel
4 *
5 * Copyright (C) 2018 by Naoki Saito
6 * Nagoya Municipal Industrial Research Institute, JAPAN
7 *
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 * プロセッサ依存モジュール アセンブリ言語部(GIC)
56 */
57
58#define TOPPERS_MACRO_ONLY
59#define UINT_C(val) (val) /* uint_t型の定数を作るマクロ */
60#define ULONG_C(val) (val) /* ulong_t型の定数を作るマクロ */
61#define CAST(type, val) (val) /* 型キャストを行うマクロ */
62
63#define GIC_REG(base, offset) ((base) + (offset))
64
65#include "kernel_impl.h"
66
67/*
68 * 例外å…
69¥å£ã®GIC操作
70 * x22: 例外番号(0..7)
71 */
72 .text
73 .align 2
74 .global gic_exc_entry
75gic_exc_entry:
76 mov x0, sp // 割込み優å…
77ˆåº¦ãƒžã‚¹ã‚¯ã®ä¿å­˜
78 ldr x9, =GICC_PMR
79 ldr x9, [x9]
80 str x9, [x0, #0]
81
82 str x22, [x0, #8] // 例外番号の保存
83
84 mov x1, x22 // 引数をセットして call_exc_handler 呼び出し
85 ldr x30, =gic_ret_int
86 b call_exc_handler
87
88/*
89 * 割込みå…
90¥å£ã®GIC操作
91 */
92 .text
93 .align 2
94 .global gic_int_entry
95gic_int_entry:
96 mov x0, sp
97 /*
98 * 割込みコントローラ操作
99 */
100 ldr x9, =GICC_IAR // 割込み要因を保存
101 ldr w9, [x9]
102 str w9, [x0, #8]
103
104 ldr x10, =GICC_RPR // 割込み要因の優å…
105ˆåº¦ã‚’割込み優å…
106ˆåº¦ãƒžã‚¹ã‚¯ã«ã‚»ãƒƒãƒˆ
107 ldr w10, [x10]
108
109 ldr x11, =GICC_PMR
110 ldr w12, [x11] // 割込み発生前のマスクの値を取り出しておく
111 str w10, [x11]
112
113 dsb sy // 割込み優å…
114ˆåº¦ãƒžã‚¹ã‚¯ãŒã‚»ãƒƒãƒˆã•ã‚Œã‚‹ã®ã‚’å¾…
115つ
116
117 str w12, [x0, #0] // 割込み発生前の優å…
118ˆåº¦ãƒžã‚¹ã‚¯ã‚’保存
119 ldr x11, =GICC_EOIR // EOIの発行
120 str w9, [x11]
121
122 mov w0, w9 // 引数をセットして call_int_handler 呼び出し
123 ldr x30, =gic_ret_int
124 b call_int_handler
125
126
127/*
128 * 割込み出口のGIC操作
129 */
130 .text
131 .align 2
132gic_ret_int:
133 mov x0, sp
134 ldr w9, [x0, #0] // 割込み優å…
135ˆåº¦ãƒžã‚¹ã‚¯ã‚’å…
136ƒã«æˆ»ã™
137 ldr x10, =GICC_PMR
138 str w9, [x10]
139
140 dsb sy // 割込み優å…
141ˆåº¦ãƒžã‚¹ã‚¯ãŒã‚»ãƒƒãƒˆã•ã‚Œã‚‹ã®ã‚’å¾…
142つ
143
144 b ret_int
Note: See TracBrowser for help on using the repository browser.