回覆列表
  • 1 # 使用者9937787127551

    ARM 核心工作模式的切換是要自己寫程式碼的, 設定CPSR 暫存器低5位進行切換

    0b10001 快速中斷模式

    0b10010 中斷模式

    0b10011 管理模式

    0b10111 中止模式

    0b11011 未定義

    0b11111 系統模式

    以下程式碼就是切換CPU工作模式的示例

    ;********** Begin init stact ***********/

    ;在6種模式下切換並設定堆疊指標

    MRS R0,CPSR ;把CPSR讀取到R0

    BIC R0,#0x1f ;低5位清零

    LDR R1,=MODE_Fiq ;設定R1 為0b10001

    ORR R0,R0,R1 ;R0和R1相或,設定低5位

    MSR CPSR_c,R0 ;把R0的值重新賦值到CPSR

    LDR SP,=Stact_Fiq

    BIC R0,#0x1f ;低5位清零

    LDR R1,=MODE_Irq

    ORR R0,R0,R1

    MSR CPSR_c,R0

    LDR SP,=Stact_Irq

    BIC R0,#0x1f ;低5位清零

    LDR R1,=MODE_Svc

    ORR R0,R0,R1

    MSR CPSR_c,R0

    LDR SP,=Stact_Svc

    BIC R0,#0x1f ;低5位清零

    LDR R1,=MODE_Abort

    ORR R0,R0,R1

    MSR CPSR_c,R0

    LDR SP,=Stact_Abort

    BIC R0,#0x1f ;低5位清零

    LDR R1,=MODE_Undef

    ORR R0,R0,R1

    MSR CPSR_c,R0

    LDR SP,=Stact_Undef

    BIC R0,#0x1f ;低5位清零

    LDR R1,=MODE_Sys

    ORR R0,R0,R1

    MSR CPSR_c,R0

    LDR SP,=Stact_Sys

  • 中秋節和大豐收的關聯?
  • 在哪裡買戒指便宜?