割込みを一時禁止にする方法(割り込み禁止/許可マクロ)

SHで、処理中の割込み禁止、許可処理をどう実現すれば良いか迷っています。

SuperH C/C++コンパイラパッケージ アプリケーションノート
(RJJ05B0557-0700)には以下のコードが記載されています。

#define disable() { save_cr=get_cr(); set_imask(0x0f); }
#define enable() { set_cr(save_cr); }

この処理で疑問なのが、なぜステータスレジスタをまるごと退避、戻しを

しているのか?という点です。

禁止時はget_imaskでIビットの値を退避、許可時はset_imaskで

退避したIビットの値をIビットに戻せば良い気がするのですが。。。

みなさまはどのような処理で割込み禁止/許可を行っていますでしょうか?