OMIT_MULTIPRC_INTERRUPTをマクロ定義することで,割込み要求を複数のプロセッサで受け付けない仕様に対応.arch/arm_gcc/common/gic_kernel.trbの使用をやめる(chip_kernel.trbからのIncludeを削除.ファイル自体は別途SVNで削除予定).OMIT_MULTIPRC_INTERRUPTをデフォルトで有効化し,従来の単一プロセッサ受付の挙動を維持.$cfgData[:DEF_INH][key][:class]の参照を:prcid経由に変更
:class経由から:prcid経由に変更.interrupt.trbのDEF_INH/CRE_ISR処理を更新.LOCK型の定義を変更.キャッシュラインサイズにアラインさせる.try_glockの追加
try_glockを追加.sta_kerにおいて,CPUロック状態を維持したままジャイアントロックを取得するために使用.istk_tableが必要ない場合に対応
istk_table)を生成しない設定(OMIT_ISTK)を用意.TNUM_INTNOとTMIN_INTNOを廃止.TMAX_INHNOを追加(TMAX_INTNOと同値).TMAX_EXCNOを追加.inh_table,intcfg_table,exc_tableの生成方法を改善.TNUM_INHNO/TNUM_EXCNOは互換性のため残置.$INTNO_GLOBAL,$INHNO_GLOBALの追加
$INTNO_GLOBALと$INHNO_GLOBALを作るコードを追加.save_context)の追加
mig_tskでタスクを別のプロセッサへ再割付する際に,コプロセッサ等の物理レジスタにのみ存在する追加コンテキストを保存域へ退避させるためのフックsave_contextを,ターゲット非依存部(kernel/task_manage.c,kernel/kernel_impl.h)に追加.mig_tskの各分岐(自タスク移行/同一プロセッサの他タスク移行/待ち・休止状態のタスクの再割付)の前で一度呼び出す.release_context)の追加
release_contextを,ターゲット非依存部(kernel/task.c,kernel/kernel_impl.h)に追加.全終了経路(ext_tsk/ter_tsk/ras_ter/ena_ter)の合流点であるtask_terminateの先頭で一度呼び出す.save_contextと異なり終了タスクのコンテキストは保存不要なため,所有権の解放のみを行えばよく軽量である.既定は空マクロで,他ターゲット・追加コンテキストを持たない構成には影響しない.set_dspflgの不具合を修正
set_dspflgで,レディキューが空の場合にはp_schedtskにNULLを設定するように修正.これに伴い,primap_emptyをtask.cからtask.hに移動.assert)を,bitmap_searchからsearch_schedtskに移動(ターゲット依存部でbitmap_searchを定義する場合にもチェックが働くようにするため).DEF_ICSに対してHRP3/HRMP3でのみ必要なカーネルドメインのチェックを実施していた問題を修正.
_kernel_istk_tableがリンクされない場合のエラーチェック回避
_kernel_istk_tableをコードから使用せず,リンクされない場合は,パス3でエラーチェックをしないように変更.ras_intが使用できないターゲットへの対応
dis_int等の処理内でCPUロック状態にしないことができるように変更
dis_int,ena_int,clr_int,ras_int,prb_int内で,CPUロック状態にしないことができるように変更.CPU例外の扱いを変更
不正なクラスIDのエラーチェックの方法を変更
target_class.trb)を新設.-Cオプションで渡すように,コンフィギュレータとsample/Makefile等を変更.kernel.trbからコンフィギュレータに移動.CRE_XXXで,他の種類のオブジェクトの識別子との衝突についてもエラーとするように変更
objdumpコマンドによるダンプ形式を受け付けるように拡張
objdumpコマンドによるダンプ形式を読み込めるように拡張.ARM依存部のFPUサポートに,常にFPUを使用する実装を追加
USE_ARM_FPU_ALWAYS)を追加.USE_ARM_FPUからUSE_ARM_FPU_SELECTIVEに変更)の実装を改善.ARMのGIC依存部の仕様変更
不要な割込みハンドラ情報を生成しないように修正
標準のCPU例外ハンドラの初期化コードの修正
define_excを呼び出すように修正.[ARM向けターゲット依存部] MPCore内蔵タイマの初期化/終了処理の修正
コンフィギュレータの不具合修正
SRecord.rbに,不連続なデータ領域のコピーに対応したcopy_dataを追加し,cfg.rbのBCOPYをそれを用いるように修正.シリアルドライバのマルチコア対応
優先度上昇状態を管理するように変更
mutex_scan_ceilmtx,mtxhook_scan_ceilmtxを削除.カーネルが生成する割込みハンドラから呼び出す関数名の変更
kernel_cfg.cに生成する割込みハンドラから呼び出すカーネル内の関数名に,_kernel_を付けるように変更.POSIX依存部に対応するための変更
OMIT_ISTACK)を用意.リンカスクリプトでフック呼出しのためのPROVIDEの使用をやめる
arch/arm_gcc/common/start.Sで,hardware_init_hookとsoftware_init_hookを無条件に呼び出すように変更し,weak属性付きの空関数を用意.
hardware_init_hook,software_init_hook,software_term_hookを0に定義するPROVIDE記述を削除.
target_kernel_impl.cで,software_term_hookの呼出し処理を,weak属性付きの空関数を使う形に変更.
ミューテックスの実装を拡張が容易なように変更
mutex_raise_priorityを導入.また,mutex_drop_priorityのインタフェースを変更し,インライン関数に.
remove_mutexを導入.コンフィギュレータの実装改善
pass1.rbを,rubyの新しいバージョンでエラーにならないように修正.PCB中のtarget_pcbの宣言位置を先頭に移動
[ARM向けターゲット依存部] ARMコアサポートモジュールを見直し
arm.cの内容をarm.hに移し,arm.cを廃止.[ARM向けターゲット依存部] 初期化手順を見直し
hardware_init_hookで実施することとし,mpcore_initializeでは実施しないことに.[ARM向けターゲット依存部] メモリの設定をアプリケーション依存で変更し やすいように変更.
arm_memory_areaとarm_tnum_memory_areaにweak属性を追加.その他の実装改善
configure.rb)とユーティリティプログラムを,FileUtilsライブラリをなるべく使わないように変更.gentest.rb)の出力形式の改善.configureとsample/Makefileの機能改善
configure.rb)でコンパイルオプションを外せるように,sample/Makefileを拡張.sample/Makefileの変更
%.cppに対するvpath指定を追加.テストプログラムの改善- 変更
get_tst()が終了せずに固まってしまう問題を修正.ドキュメントの改善
バージョン番号の更新
リネームする関数名の追加
unlock_cpuとsense_lockを,リネーム記述(target_rename.defまたはそこからインクルードされるファイル)に追加する(ARM依存部を使っている場合には,core_rename.defに追加しているので,対応の必要がない).
フック呼出し処理の変更
hardware_init_hookとsoftware_init_hookの呼出し処理を,weak属性付きの空関数を使う形に変更する.
hardware_init_hook,software_init_hook,software_term_hookを0に定義するPROVIDE記述を削除する.
software_term_hookの呼出し処理を,weak属性付きの空関数を使う形に変更する.クラス定義ファイルを新設
target_class.trbを新設し,$clsDataの定義をtarget_kernel.trbから移動する.[ARM依存部] 常にFPUを使用する実装に対応
ASM_ARM_FPU_TYPEの定義を追加する.USE_ARM_FPUを定義している場合は,USE_ARM_FPU_SELECTIVEに変更する.-mcuオプションを設定する.[ARM依存部] 初期化手順の見直しに対応
hardware_init_hookに,キャッシュとMMUをディスエーブルする処理を追加する.arm_enable_cache,arm_disable_cacheを使用している場合,データキャッシュと命令キャッシュの操作関数を個別に呼ぶように変更する.
CPU例外の扱いを変更に対応
CPUEXC1が定義されていれば,別の名前に変更する(ARM依存部では_CPUEXC1としている).