source: ssp_rpi3/trunk/arch/arm64_gcc/bcm283x/chip_kernel.trb@ 384

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

add target dependent files of ssp for rpi3

  • Property svn:executable set to *
  • Property svn:keywords set to Id
File size: 6.2 KB
Line 
1# -*- coding: utf-8 -*-
2#
3# TOPPERS/SSP Kernel
4# Toyohashi Open Platform for Embedded Real-Time Systems/
5# Advanced Standard Profile Kernel
6#
7# Copyright (C) 2015 by FUJI SOFT INCORPORATED, JAPAN
8# Copyright (C) 2015,2016 by Embedded and Real-Time Systems Laboratory
9# Graduate School of Information Science, Nagoya Univ., JAPAN
10# Copyright (C) 2017, 2019 by Naoki Saito
11# Nagoya Municipal Industrial Research Institute, JAPAN
12#
13#
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è²¬ã™ã‚‹ã“と.
50#
51# 本ソフトウェアは,無保証で提供されているものである.上記著作権者
52お
53# よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
54# に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
55# アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
56# の責任を負わない.
57#
58# $Id: chip_kernel.trb 384 2019-04-16 11:01:09Z nmir-saito $
59#
60
61#
62# パス2の生成スクリプトのチップ依存部(BCM2837用)
63#
64
65#
66# 有効な割込み番号,割込みハンドラ番号
67#
68$INTNO_VALID = [ *($TMIN_INTNO..$TMAX_INTNO) ]
69$INHNO_VALID = $INTNO_VALID
70
71#
72# 有効なCPU例外ハンドラ番号
73#
74$EXCNO_VALID = [ *(0..7) ]
75
76#
77# ATT_ISRで使用できる割込み番号とそれに対応する割込みハンドラ番号
78#
79$INTNO_ATTISR_VALID = $INTNO_VALID
80$INHNO_ATTISR_VALID = $INHNO_VALID
81
82#
83# DEF_INT/DEF_EXCで使用できる割込みハンドラ番号/CPU例外ハンドラ番号
84#
85$INHNO_DEFINH_VALID = $INHNO_VALID
86$EXCNO_DEFEXC_VALID = $EXCNO_VALID
87
88#
89# CFG_INTで使用できる割込み番号と割込み優å…
90ˆåº¦
91#
92$INTNO_CFGINT_VALID = [*($TMIN_INTNO..11),*(32..39),93, 107,109,110,*(112..119),121]
93$INTPRI_CFGINT_VALID = Array($TMIN_INTPRI..$TMAX_INTPRI)
94
95#
96# 割込み属性中のターゲット依存に用いるビット
97#
98#$TARGET_INTATR =
99
100#
101# コア依存部のインクルード
102#
103IncludeTrb("arm64_gcc/common/core_kernel.trb")
104
105$kernelCfgC.comment_header("Target-dependent Definitions (BCM2837)")
106
107#
108# 割込み要求ライン優å…
109ˆåº¦ãƒ†ãƒ¼ãƒ–ル
110#
111
112$kernelCfgC.comment_header("Interrupt Priority Table")
113
114$kernelCfgC.add("const PRI _kernel_intpri_table[] = {")
115$INTNO_VALID.each_with_index do |intnoVal, index|
116 $kernelCfgC.add(",") if index > 0
117 $kernelCfgC.append("\t/* 0x#{sprintf("%03x", intnoVal)} */ ")
118 if $cfgData[:CFG_INT].has_key?(intnoVal)
119 $kernelCfgC.append("INT_IPM(#{$cfgData[:CFG_INT][intnoVal][:intpri]})")
120 else
121 $kernelCfgC.append("0U")
122 end
123end
124
125$kernelCfgC.add
126$kernelCfgC.add2("};")
127
128#
129# 割込み優å…
130ˆåº¦ãƒžã‚¹ã‚¯ãƒ†ãƒ¼ãƒ–ル
131#
132
133$kernelCfgC.comment_header("Interrupt Priority Mask Table")
134
135$kernelCfgC.add("const uint32_t _kernel_iipm_mask_table[(TNUM_INTPRI + 1) * 4] = {")
136[0,*$INTPRI_CFGINT_VALID].sort{|a,b|b<=>a}.each_with_index do |ipriMask, index|
137 masks = [0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff]
138
139 $cfgData[:CFG_INT].each_key {|intno|
140 intpri = "#{sprintf("%d", $cfgData[:CFG_INT][intno][:intpri])}".to_i
141 if(intpri < ipriMask) then
142 masks[intno/32] &= ~(1 << intno%32)
143 end
144 }
145
146 $kernelCfgC.add if index > 0
147 (0..3).each {|i|
148 $kernelCfgC.append("#{sprintf("\t0x%08x,", masks[i])}")
149 }
150 $kernelCfgC.append("\t/* #{sprintf("intpri mask(%3d)", ipriMask)} */ ")
151end
152
153$kernelCfgC.add
154$kernelCfgC.add2("};")
155
156
157#
158# 割込みハンドラテーブル
159#
160$kernelCfgC.comment_header("Interrupt Handler Table")
161
162$kernelCfgC.add("const INTHDR _kernel_inh_table[] = {")
163$INHNO_VALID.each_with_index do |inhnoVal, index|
164 $kernelCfgC.add(",") if index > 0
165 $kernelCfgC.append("\t/* 0x#{sprintf("%03x", inhnoVal)} */ ")
166 if $cfgData[:DEF_INH].has_key?(inhnoVal)
167 $kernelCfgC.append("(INTHDR)(#{$cfgData[:DEF_INH][inhnoVal][:inthdr]})")
168 else
169 $kernelCfgC.append("(INTHDR)(_kernel_default_int_handler)")
170 end
171end
172$kernelCfgC.add
173$kernelCfgC.add2("};")
174
175#
176# CPU例外ハンドラテーブル
177#
178$kernelCfgC.comment_header("CPU Exception Handler Table")
179
180$kernelCfgC.add("const EXCHDR _kernel_exc_table[] = {")
181$EXCNO_VALID.each_with_index do |excnoVal, index|
182 $kernelCfgC.add(",") if index > 0
183 $kernelCfgC.append("\t/* #{excnoVal} */ ")
184 if $cfgData[:DEF_EXC].has_key?(excnoVal)
185 $kernelCfgC.append("(EXCHDR)(#{$cfgData[:DEF_EXC][excnoVal][:exchdr]})")
186 else
187 $kernelCfgC.append("(EXCHDR)(_kernel_default_exc_handler)")
188 end
189end
190$kernelCfgC.add
191$kernelCfgC.add2("};")
Note: See TracBrowser for help on using the repository browser.