4.10.5. CPS

CPS(更改处理器状态)会更改 CPSR 中的一个或多个模式以及 A、I 和 F 位,但不更改其他 CPSR 位。

CPS 只允许在特权模式下使用,在用户模式下不起作用。

CPS 不能是有条件的,并且不允许在 IT 块中使用。

语法

CPSeffect iflags{, #mode}
CPS #mode

其中:

effect

是下列项之一:

IE

启用中断或中止。

ID

禁用中断或中止。

iflags

是由下面一个或多个指令组成的序列。

a

启用或禁用不精确的中止。

i

启用或禁用 IRQ 中断。

f

启用或禁用 FIQ 中断。

mode

指定要更改到的目标模式的编号。

条件标记

此指令不更改条件标记。

16 位指令

这些指令的下列形式可用于 Thumb-2 之前的 Thumb 代码中,在 Thumb-2 代码中使用时为 16 位指令:

CPSIE iflags

CPSID iflags

您不能在 16 位 Thumb 指令中指定模式更改。

体系结构

此 ARM 指令可用于 ARMv6 及更高版本。

此 32 位 Thumb 指令可用于 ARMv6T2 及更高版本。

此 16 位 Thumb 指令可用于 ARMv6 及更高版本的 T 变体。

示例

    CPSIE if      ; enable interrupts and fast interrupts
    CPSID A       ; disable imprecise aborts
    CPSID ai, #17 ; disable imprecise aborts and interrupts, and enter FIQ mode
    CPS #16       ; enter User mode
Copyright © 2002-2008 ARM Limited. All rights reserved.ARM DUI 0204IC
Non-Confidential