__disable_fiq コンパイラ組み込み関数

このコンパイラ組み込み関数は、FIQ 割り込みをディセーブルにします。

Note

通常、このコンパイラ組み込み関数は、CPSR で F ビットを設定することによって、FIQ 割り込みをディセーブルします。ただし、v7-M の場合は、フールトマスクレジスタ(FAULTMASK)が設定されます。v6-M では、FIQ 割り込みがサポートされていません。

Show/hide構文

int __disable_fiq(void);
void __disable_fiq(void);

Show/hide使用法

int __disable_fiq(void); は、高速割り込みをディセーブルにし、それ以前に FIQ 割り込みマスクが PSR に持っていた値を返します。

void __disable_fiq(void); は高速割り込みをディセーブルにします。

Show/hide戻り値

int __disable_fiq(void); は、FIQ 割り込みがディセーブルにされる以前に FIQ 割り込みマスクが PSR に持っていた値を返します。

Show/hide制約条件

--cpu=7 でコンパイルする場合は、int __disable_fiq(void); はサポートされません。これは、一般的な ARMv7 アーキテクチャと ARMv7 A、R、M の各プロファイルとの例外処理モデルの違いによるものです。つまり、--cpu=7 でコンパイルする場合、コンパイラは、すべての ARMv7 プロセッサで動作する命令シーケンスを生成することはできないため、int __disable_fiq(void); はサポートされません。void __disable_fiq(void); 関数プロトタイプを --cpu=7 で使用することはできます。

__disable_fiq コンパイラ組み込み関数を実行できるのは、特権モード、つまり非ユーザモードの場合のみです。このコンパイラ組み込み関数をユーザモードで実行しても、CPSR 内の割り込みフラグが変更されることはありません。

Show/hide

void foo(void)
{
    int was_masked = __disable_fiq();
    /* ... */
    if (!was_masked)
        __enable_fiq();
}

Show/hide関連項目

Copyright © 2010-2011 ARM. All rights reserved.ARM DUI 0491EJ
Non-ConfidentialID081711