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

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

modify svn:mimetype of files

  • Property svn:executable set to *
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/plain; charset=utf-8
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# 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
15# ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
16# 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
17# (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
18# 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
19# スコード中に含まれていること.
20# (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
21# 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
22# 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
23# の無保証規定を掲載すること.
24# (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
25# 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
26# と.
27# (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
28# 作権表示,この利用条件および下記の無保証規定を掲載すること.
29# (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
30# 報告すること.
31# (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
32# 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
33# また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
34# 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
35# 免責すること.
36#
37# 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
38# よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
39# に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
40# アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
41# の責任を負わない.
42#
43# $Id: chip_kernel.trb 386 2019-04-17 03:13:00Z nmir-saito $
44#
45
46#
47# パス2の生成スクリプトのチップ依存部(BCM2837用)
48#
49
50#
51# 有効な割込み番号,割込みハンドラ番号
52#
53$INTNO_VALID = [ *($TMIN_INTNO..$TMAX_INTNO) ]
54$INHNO_VALID = $INTNO_VALID
55
56#
57# 有効なCPU例外ハンドラ番号
58#
59$EXCNO_VALID = [ *(0..7) ]
60
61#
62# ATT_ISRで使用できる割込み番号とそれに対応する割込みハンドラ番号
63#
64$INTNO_ATTISR_VALID = $INTNO_VALID
65$INHNO_ATTISR_VALID = $INHNO_VALID
66
67#
68# DEF_INT/DEF_EXCで使用できる割込みハンドラ番号/CPU例外ハンドラ番号
69#
70$INHNO_DEFINH_VALID = $INHNO_VALID
71$EXCNO_DEFEXC_VALID = $EXCNO_VALID
72
73#
74# CFG_INTで使用できる割込み番号と割込み優先度
75#
76$INTNO_CFGINT_VALID = [*($TMIN_INTNO..11),*(32..39),93, 107,109,110,*(112..119),121]
77$INTPRI_CFGINT_VALID = Array($TMIN_INTPRI..$TMAX_INTPRI)
78
79#
80# 割込み属性中のターゲット依存に用いるビット
81#
82#$TARGET_INTATR =
83
84#
85# コア依存部のインクルード
86#
87IncludeTrb("arm64_gcc/common/core_kernel.trb")
88
89$kernelCfgC.comment_header("Target-dependent Definitions (BCM2837)")
90
91#
92# 割込み要求ライン優先度テーブル
93#
94
95$kernelCfgC.comment_header("Interrupt Priority Table")
96
97$kernelCfgC.add("const PRI _kernel_intpri_table[] = {")
98$INTNO_VALID.each_with_index do |intnoVal, index|
99 $kernelCfgC.add(",") if index > 0
100 $kernelCfgC.append("\t/* 0x#{sprintf("%03x", intnoVal)} */ ")
101 if $cfgData[:CFG_INT].has_key?(intnoVal)
102 $kernelCfgC.append("INT_IPM(#{$cfgData[:CFG_INT][intnoVal][:intpri]})")
103 else
104 $kernelCfgC.append("0U")
105 end
106end
107
108$kernelCfgC.add
109$kernelCfgC.add2("};")
110
111#
112# 割込み優先度マスクテーブル
113#
114
115$kernelCfgC.comment_header("Interrupt Priority Mask Table")
116
117$kernelCfgC.add("const uint32_t _kernel_iipm_mask_table[(TNUM_INTPRI + 1) * 4] = {")
118[0,*$INTPRI_CFGINT_VALID].sort{|a,b|b<=>a}.each_with_index do |ipriMask, index|
119 masks = [0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff]
120
121 $cfgData[:CFG_INT].each_key {|intno|
122 intpri = "#{sprintf("%d", $cfgData[:CFG_INT][intno][:intpri])}".to_i
123 if(intpri < ipriMask) then
124 masks[intno/32] &= ~(1 << intno%32)
125 end
126 }
127
128 $kernelCfgC.add if index > 0
129 (0..3).each {|i|
130 $kernelCfgC.append("#{sprintf("\t0x%08x,", masks[i])}")
131 }
132 $kernelCfgC.append("\t/* #{sprintf("intpri mask(%3d)", ipriMask)} */ ")
133end
134
135$kernelCfgC.add
136$kernelCfgC.add2("};")
137
138
139#
140# 割込みハンドラテーブル
141#
142$kernelCfgC.comment_header("Interrupt Handler Table")
143
144$kernelCfgC.add("const INTHDR _kernel_inh_table[] = {")
145$INHNO_VALID.each_with_index do |inhnoVal, index|
146 $kernelCfgC.add(",") if index > 0
147 $kernelCfgC.append("\t/* 0x#{sprintf("%03x", inhnoVal)} */ ")
148 if $cfgData[:DEF_INH].has_key?(inhnoVal)
149 $kernelCfgC.append("(INTHDR)(#{$cfgData[:DEF_INH][inhnoVal][:inthdr]})")
150 else
151 $kernelCfgC.append("(INTHDR)(_kernel_default_int_handler)")
152 end
153end
154$kernelCfgC.add
155$kernelCfgC.add2("};")
156
157#
158# CPU例外ハンドラテーブル
159#
160$kernelCfgC.comment_header("CPU Exception Handler Table")
161
162$kernelCfgC.add("const EXCHDR _kernel_exc_table[] = {")
163$EXCNO_VALID.each_with_index do |excnoVal, index|
164 $kernelCfgC.add(",") if index > 0
165 $kernelCfgC.append("\t/* #{excnoVal} */ ")
166 if $cfgData[:DEF_EXC].has_key?(excnoVal)
167 $kernelCfgC.append("(EXCHDR)(#{$cfgData[:DEF_EXC][excnoVal][:exchdr]})")
168 else
169 $kernelCfgC.append("(EXCHDR)(_kernel_default_exc_handler)")
170 end
171end
172$kernelCfgC.add
173$kernelCfgC.add2("};")
Note: See TracBrowser for help on using the repository browser.