CPS

CPS(プロセッサ状態の変更命令)は、他の CPSR ビットを変更することなく、CPSR のモード、A、I、および F のビットの 1 つ以上を変更します。

CPS は、特権モードでのソフトウェア実行でのみ使用でき、ユーザモードでは作用しません。

CPS は、条件付きにすることはできないため、IT ブロックでは使用できません。

Show/hide構文

CPSeffect iflags{, #mode}
CPS #mode

各項目には以下の意味があります。

effect

次のいずれかを指定します。

IE

割り込みまたはアボートをイネーブルにします。

ID

割り込みまたはアボートをディセーブルにします。

iflags

以下の項目のシーケンスを指定します。

a

不正確なアボートをイネーブルまたはディセーブルします。

i

IRQ 割り込みをイネーブルまたはディセーブルします。

f

FIQ 割り込みをイネーブルまたはディセーブルします。

mode

変更先のモードの番号を指定します。

Show/hide条件フラグ

この命令による条件フラグへの影響はありません。

Show/hide16 ビット命令

これらの命令は、T32 コード内では次の形式で使用できます。これらは 16 ビット命令です。

  • CPSIE iflags

  • CPSID iflags

16 ビット T32 命令ではモードの変更を指定できません。

Show/hide可用性

この命令は、A32 および T32 で使用できます。

T32 では、この命令の 16 ビットおよび 32 ビットバージョンを使用できます。

Show/hide

    CPSIE if      ; 割り込みと高速割り込みをイネーブルにする
    CPSID A       ; 不正確なアボートをディセーブルにする
    CPSID ai, #17 ; 不正確なアボートと割り込みをディセーブルにし、FIQ モードに移行する
    CPS #16       ; ユーザモードに移行する
Copyright © 2014 ARM. All rights reserved.ARM DUI 0802AJ
Non-ConfidentialID061814