机続き。引出しを。1x6材を半分に割って引き出しの本体に、1x4材から前板を。

荒木取りしたところまで。

ナス(手前)も発芽してきた。一時モヤシ状態になっていたトマトもなんとかい けそうか。トマトはわき芽をかいてそれを差しておいたのからでも十分に収穫 可能なのであまり蒔かなくていい。

SH4A続き。SH4Aの内蔵周辺モジュールの割り込み優先度はINT2PRIレジスタに設 定し、これは5bitで設定する。この設定はCPUのSR.IMASKに上位4bitが反映され る。evbsh3の場合、sys/arch/evbsh3/include/intr.hから
ここでiplはsys/arch/evbsh3/include/intr.hで
とはいえロックでは落ちなくなったけれど、割り込みまわりは、まだおかしい。

荒木取りしたところまで。

ナス(手前)も発芽してきた。一時モヤシ状態になっていたトマトもなんとかい けそうか。トマトはわき芽をかいてそれを差しておいたのからでも十分に収穫 可能なのであまり蒔かなくていい。

SH4A続き。SH4Aの内蔵周辺モジュールの割り込み優先度はINT2PRIレジスタに設 定し、これは5bitで設定する。この設定はCPUのSR.IMASKに上位4bitが反映され る。evbsh3の場合、sys/arch/evbsh3/include/intr.hから
typedef uint8_t ipl_t;
typedef struct {
ipl_t _ipl;
} ipl_cookie_t;
static inline ipl_cookie_t
makeiplcookie(ipl_t ipl)
{
return (ipl_cookie_t){._ipl = ipl << 4};
}
static inline int
splraiseipl(ipl_cookie_t icookie)
{
return _cpu_intr_raise(icookie._ipl);
}
のように、splではSR.IMASKの設定で割り込みを制御する。(splraiseiplの設定
は外部割り込みコントローラにしてもいい。というかそういうハードの場合は
そうせざるを得ない。hpcshがその例)
ここでiplはsys/arch/evbsh3/include/intr.hで
/* Interrupt priority levels */ #define IPL_VM 12 #define IPL_SCHED 14 /* clock */ #define IPL_HIGH 15 /* everything */と設定されている。IPL_VM以下の優先度はsys/sys/intr.hで
#define IPL_BIO IPL_VM #define IPL_NET IPL_VM #define IPL_TTY IPL_VM #define IPL_AUDIO IPL_VM #define IPL_CLOCK IPL_SCHED #define IPL_SERIAL IPL_HIGH #define splbio() splvm() #define splnet() splvm() #define spltty() splvm() #define splaudio() splvm() #define splclock() splsched() #define splserial() splhigh()と設定されている。なので、SH4Aの周期タイマ割り込みの優先度は IPL_SCHED(14) << 1で0x1cあるいは0x1dでないといけなかったのに、0x1f(最高 優先度)としていた。これだとIPL_HIGHでしか割り込みがブロックされない。 IPL_SCHEDにしてもタイマ割り込みが入ってきてしまったのが、ロックまわりの タイミングプロブレムだった...。
とはいえロックでは落ちなくなったけれど、割り込みまわりは、まだおかしい。
