4.5 IRQ 割り込みと FIQ 割り込みの制御のためのコンパイラ組み込み関数

IRQ 割り込みおよび FIQ 割り込みを制御するコンパイラ組み込み関数には、__disable_irq__enable_irq__disable_fiq、および __enable_fiq があります。

これらのコンパイラ組み込み関数を使用して、モード、状態、不正確なデータアボート設定を含むその他の CPSR ビットを変更することはできません。これは、ユーザモードでは CPSR および SPSR の制御ビットを変更することはできないので、コンパイラ組み込み関数を使用できるのは、プロセッサが既に特権モードの場合のみであることを意味します。
これらのコンパイラ組み込み関数は、以下に示すように、ARM と Thumb のどちらの状態でも、すべてのプロセッサアーキテクチャに使用できます。
  • ARMv6 以降をサポートするプロセッサ用にコンパイルしている場合、CPS 命令がこれらの関数に対してインラインで生成されます。以下に例を示します。
        CPSID  i
    
  • ARM ステートで ARMv4 または ARMv5 をサポートするプロセッサ用にコンパイルしている場合、コンパイラによって、MRS および MSR 命令のシーケンスがインライン展開されます。以下に例を示します。
        MRS  r0, CPSR
        ORR  r0, r0, #0x80
        MSR  CPSR_c, r0
    
  • Thumb ステートで ARMv4 または ARMv5 をサポートするプロセッサ用にコンパイルしている場合、または --compatible が使用されている場合、コンパイラによって、ヘルパ関数が呼び出されます。以下に例を示します。
        BL    __ARM_disable_irq
    
非機密扱いPDF file icon PDF 版ARM DUI0472LJ
Copyright © 2010-2015 ARM.All rights reserved.