1 | =====================================================================
|
---|
2 | ARM64ããã»ããµä¾åé¨
|
---|
3 | Last Modified: '19/04/16
|
---|
4 | =====================================================================
|
---|
5 |
|
---|
6 |
|
---|
7 | (1) 対å¿ãã¦ããã¿ã¼ã²ããã·ã¹ãã ã®ç¨®é¡ã»æ§æ
|
---|
8 |
|
---|
9 | ARM64ä¾åé¨ã¯ï¼ARMv8-A ã¢ã¼ããã¯ãã£ãã¿ã¼ã²ããã¨ãã¦ããï¼ARMv8-A ã¯
|
---|
10 | 64ãããã¢ã¼ããã¯ãã£ã§ããå½ä»¤ã»ããã¬ãã«ã§ãARMã¨ã¯ç°ãªãããï¼
|
---|
11 | ARMä¾åé¨ã¨åãã¦ããï¼
|
---|
12 |
|
---|
13 | ã³ã¢ç¥ç§°çã¯æ¬¡ã®éãï¼
|
---|
14 |
|
---|
15 | ã³ã¢ç¥ç§°ï¼arm64
|
---|
16 | éçºç°å¢ç¥ç§°ï¼gcc
|
---|
17 |
|
---|
18 | (2) 使ç¨ããéçºç°å¢ã¨åä½æ¤è¨¼ããæ¡ä»¶ï¼ãã¼ã¸ã§ã³ï¼ãªãã·ã§ã³çï¼
|
---|
19 |
|
---|
20 | ã«ã¼ãã«ã¯GCCãç¨ãã¦ã³ã³ãã¤ã«ããï¼åä½ç¢ºèªãããã¼ã¸ã§ã³ã¯åã¿ã¼ã²
|
---|
21 | ããä¾åé¨ã®ããã¥ã¡ã³ãã«è¨è¼ããï¼
|
---|
22 |
|
---|
23 | (3) ã¿ã¼ã²ããå®ç¾©äºé
|
---|
24 | ã®è¦å®
|
---|
25 |
|
---|
26 | (3-1) ãã¼ã¿åã«é¢ããè¦å®
|
---|
27 |
|
---|
28 | ãã¼ã¿å㯠arch/gcc/tool_stddef.h ã§å®ç¾©ããã¦ããå
|
---|
29 | 容ã§ï¼floatåã¨
|
---|
30 | doubleåã¯ï¼ããããIEEE754æºæ ã®å精度浮åå°æ°ç¹æ°ã¨å精度浮åå°æ°ç¹
|
---|
31 | æ°ã§ããï¼
|
---|
32 |
|
---|
33 | ãã®ã»ãï¼ã¹ã¿ãã¯é åã確ä¿ããããã®ãã¼ã¿åã®ããã«
|
---|
34 | int128_t ããã³ uint128_t ãå®ç¾©ãã¦ããï¼
|
---|
35 |
|
---|
36 | (3-2) å²è¾¼ã¿å¦çã«é¢ããè¦å®
|
---|
37 |
|
---|
38 | ãããã«æè¼ãããå²è¾¼ã¿ã³ã³ããã¼ã©ã«ããç°ãªãï¼
|
---|
39 | ãã®ããï¼ä»¥ä¸ã®äºé
|
---|
40 | ã«ã¤ãã¦ã¯ãããä¾åé¨ã«è¨è¼ããï¼
|
---|
41 |
|
---|
42 | ã»å²è¾¼ã¿ãã³ãã©çªå·ã¨å²è¾¼ã¿çªå·ã®å²å½ã¦ï¼ä¸¡è
|
---|
43 | ã®å¯¾å¿
|
---|
44 | ã»å²è¾¼ã¿åªå
|
---|
45 | 度ã®æ®µéæ°ï¼TMIN_INTPRIã®å¤ï¼ï¼ãã®è¨å®æ¹æ³
|
---|
46 | ã»dis_intã¨ena_intã®ãµãã¼ãã®æç¡ï¼ãã®å¶éäºé
|
---|
47 |
|
---|
48 | ã»CFG_INTã®å¶éäºé
|
---|
49 | ã¨æ¡å¼µï¼ã¿ã¼ã²ããå®ç¾©ã§ä½¿ç¨ã§ããå²è¾¼ã¿å±æ§ï¼
|
---|
50 | ã»ã«ã¼ãã«ç®¡çå¤ã®å²è¾¼ã¿
|
---|
51 |
|
---|
52 | (3-3) CPUä¾å¤å¦çã«é¢ããè¦å®
|
---|
53 |
|
---|
54 | ã»CPUä¾å¤ãã³ãã©çªå·
|
---|
55 |
|
---|
56 | Synchronousä¾å¤ããã³SErrorä¾å¤ãCPUä¾å¤ã¨ãã¦æ±ãï¼
|
---|
57 |
|
---|
58 | ARMv8ã§ã¯ï¼ä¾å¤çºçæã®ä¾å¤ã¬ãã«(EL)ï¼ä½¿ç¨ã¹ã¿ãã¯ï¼å®è¡ç¶æ
|
---|
59 | (AArch32 or AArch64)ï¼
|
---|
60 | çºçããä¾å¤ã®ç¨®é¡ã«ããï¼ã¸ã£ã³ãå
|
---|
61 | ã¨ãªãä¾å¤ãã¯ã¿ä¸ã®ãªãã»ããã¢ãã¬ã¹ãç°ãªãï¼
|
---|
62 | CPUä¾å¤ãã³ãã©ã¯ãã®ã¸ã£ã³ãå
|
---|
63 | ã®ãªãã»ããã¢ãã¬ã¹ã§åºå¥ãããã¨ã«ãï¼
|
---|
64 | ããããç°ãªãCPUä¾å¤ãã³ãã©çªå·ãå²ãå½ã¦ãï¼
|
---|
65 |
|
---|
66 | ä¾å¤çºçæã®ç¶æ
|
---|
67 | ä¾å¤ã®ç¨®é¡ ä¾å¤çªå· ãä¾å¤ãã¯ã¿å
|
---|
68 | é ããã®ãªãã»ãã
|
---|
69 | AArch64, EL1t(EL1, SP_EL0) Synchronous 0 0x0000
|
---|
70 | AArch64, EL1t(EL1, SP_EL0) SError 1 0x0180
|
---|
71 | AArch64, EL1h(EL1, SP_EL1) Synchronous 2 0x0200
|
---|
72 | AArch64, EL1h(EL1, SP_EL1) SError 3 0x0380
|
---|
73 | AArch64, EL0 (EL0, SP_EL0) Synchronous 4 0x0400
|
---|
74 | AArch64, EL0 (EL0, SP_EL0) SError 5 0x0580
|
---|
75 | AArch32, EL0 (EL0, SP_EL0) Synchronous 6 0x0600
|
---|
76 | AArch32, EL0 (EL0, SP_EL0) SError 7 0x0780
|
---|
77 |
|
---|
78 |
|
---|
79 | (3-4) CPUããã¯ã»å²è¾¼ã¿ããã¯
|
---|
80 |
|
---|
81 | ãããã«ããå®è£
|
---|
82 | æ¹æ³ãç°ãªãããï¼ãããä¾åé¨ã«è¨è¼ããï¼
|
---|
83 |
|
---|
84 |
|
---|
85 | (3-5) æ§è½è©ä¾¡ç¨ã·ã¹ãã æå»ã®åç
|
---|
86 | §ã«é¢ããè¦å®
|
---|
87 |
|
---|
88 | ã·ã¹ãã ã«ãã£ã¦ç°ãªããããããä¾åé¨ã¾ãã¯ã¿ã¼ã²ããä¾åé¨ã®ããã¥ã¡ã³ãã§è¨è¼ããï¼
|
---|
89 |
|
---|
90 |
|
---|
91 | (3-6) ã¹ã¿ã¼ãã¢ããã«ã¼ãã³ã§ã®åæåå
|
---|
92 | 容
|
---|
93 |
|
---|
94 | ã¹ã¿ã¼ãã¢ããã«ã¼ãã³ãåæã¨ããããã»ããµã®ç¶æ
|
---|
95 | ã¯ã·ã¹ãã ã«ããç°ãªãããï¼
|
---|
96 | ã¹ã¿ã¼ãã¢ããã«ã¼ãã³ã¯ã¿ã¼ã²ããä¾åé¨ã®ããã¥ã¡ã³ãã«è¨è¼ããï¼
|
---|
97 |
|
---|
98 | (4) ã¿ã¤ããã©ã¤ãé¢é£ã®æ
|
---|
99 | å ±
|
---|
100 |
|
---|
101 | ã«ã¼ãã«ã®ã¿ã¤ã ãã£ãã¯ã¨ãã¦ï¼Generic Timer ã使ç¨ããï¼
|
---|
102 | ãã£ãã¯å¨æã¯1msecã¨ããï¼ã¾ãTIC_DENOåã³TIC_NUMEã®æ¢å®å¤ã¨ãã¦1ã«å®ç¾©ããï¼
|
---|
103 |
|
---|
104 |
|
---|
105 | (5) ã¿ã¼ã²ããä¾åé¨ã§ã®è¨å®å¯è½é
|
---|
106 | ç®
|
---|
107 |
|
---|
108 | ã¿ã¼ã²ããä¾åé¨ã§ã¯ä»¥ä¸ã®ãã¯ããå®ç¾©ããï¼
|
---|
109 | ããã¤ãã¯ããã»ããµã®ä¾åé¨ã«ããã¦æ¢å®å¤ãå®ç¾©ããã¦ããï¼
|
---|
110 |
|
---|
111 | ã»TMIN_INTPRI : å²è¾¼ã¿åªå
|
---|
112 | 度ã®æå°å¤ï¼æé«å¤ï¼
|
---|
113 | ã»TIC_NUME : ã¿ã¤ã ãã£ãã¯ã®å¨æã®åå
|
---|
114 | ã»TIC_DENO : ã¿ã¤ã ãã£ãã¯ã®å¨æã®åæ¯
|
---|
115 | ã»INTPRI_TIMER : ã¿ã¤ãå²è¾¼ã¿åªå
|
---|
116 | 度
|
---|
117 | ã»INTATR_TIMER : ã¿ã¤ãå²è¾¼ã¿ã®å²è¾¼ã¿å±æ§
|
---|
118 | ã»DEFAULT_ISTKSZ : ã¹ã¿ãã¯ãµã¤ãºï¼16byteåä½ã§æå®ï¼
|
---|
119 |
|
---|
120 |
|
---|
121 | (6) ãã£ã¬ã¯ããªæ§æã»ãã¡ã¤ã«æ§æ
|
---|
122 | ./arch/arm64_gcc/
|
---|
123 | MANIFEST
|
---|
124 | common/Makefile.core
|
---|
125 | common/arm64.h
|
---|
126 | common/core_cfg1_out.h
|
---|
127 | common/core_check.trb
|
---|
128 | common/core_config.c
|
---|
129 | common/core_config.h
|
---|
130 | common/core_design.txt
|
---|
131 | common/core_kernel.h
|
---|
132 | common/core_kernel.trb
|
---|
133 | common/core_rename.def
|
---|
134 | common/core_rename.h
|
---|
135 | common/core_sil.h
|
---|
136 | common/core_stddef.h
|
---|
137 | common/core_support.S
|
---|
138 | common/core_sym.def
|
---|
139 | common/core_test.h
|
---|
140 | common/core_timer.c
|
---|
141 | common/core_timer.cfg
|
---|
142 | common/core_timer.h
|
---|
143 | common/core_unrename.h
|
---|
144 | common/core_user.txt
|
---|
145 |
|
---|
146 | (12) ãã¼ã¸ã§ã³å±¥æ´
|
---|
147 |
|
---|
148 | 2018/05/30
|
---|
149 | ã»æåã®ãªãªã¼ã¹
|
---|
150 | 2019/04/15
|
---|
151 | ã»BCM283xãããä¾åé¨ã®åé¢ã«åããã¦ä¿®æ£
|
---|