新聞中心

詳解ARM9的CPSR寄存器

作者: 時間:2016-11-22 來源:網(wǎng)絡(luò) 收藏
最近在學(xué)習(xí)嵌入式底層系統(tǒng)開發(fā),在寫啟動代碼時要設(shè)置各個模式的SP,需要調(diào)整CPU的工作模式,部分代碼如下:
[plain]view plaincopy
print?
  1. .equDISABLE_IRQ,0x80
  2. .equDISABLE_FIQ,0x40
  3. .equSYS_MOD,0x1f
  4. .equIRQ_MOD,0x12
  5. .equFIQ_MOD,0x11
  6. .equSVC_MOD,0x13
  7. .equABT_MOD,0x17
  8. .equUND_MOD,0x1b
  9. msrcpsr_c,#(DISABLE_IRQ|DISABLE_FIQ|SVC_MOD)
  10. ldrsp,=_SVC_STACK
  11. msrcpsr_c,#(DISABLE_IRQ|DISABLE_FIQ|IRQ_MOD)
  12. ldrsp,=_IRQ_STACK
  13. msrcpsr_c,#(DISABLE_IRQ|DISABLE_FIQ|FIQ_MOD)
  14. ldrsp,=_FIQ_STACK
  15. msrcpsr_c,#(DISABLE_IRQ|DISABLE_FIQ|ABT_MOD)
  16. ldrsp,=_ABT_STACK
  17. msrcpsr_c,#(DISABLE_IRQ|DISABLE_FIQ|UND_MOD)
  18. ldrsp,=_UND_STACK
  19. msrcpsr_c,#(DISABLE_IRQ|DISABLE_FIQ|SYS_MOD)
  20. ldrsp,=_SYS_STACK
代碼中用到了cpsr_c,那么究竟cpsr_c與cpsr是什么關(guān)系?

本文引用地址:http://m.butianyuan.cn/article/201611/319969.htm

ARM9的每種工作模式除R0~R15共16個寄存器外,還有第17個寄存器CPSR(Current Program Status Register),叫做當(dāng)前程序狀態(tài)寄存器,CPSR中一些位被用于標(biāo)識各種狀態(tài),一些位被用于標(biāo)識當(dāng)前出于什么工作模式。CPSR有4個8位區(qū)域:標(biāo)志域(F)、狀態(tài)域(S)、擴展域(X)、控制域(C)。

在ARM 處理器中,只有MSR 指令可以直接設(shè)置狀態(tài)寄存器CPSR或SPSR。指令格式如下:
MSR{cond} psr_fields,#immed_8r(8位立即數(shù))
MSR{cond} psr_fields,Rm
其中: psr 指CPSR 或SPSR
fields 指定傳送的區(qū)域。Fields 可以是以下的一種或多種(字母必須為小寫):

  • c 控制域屏蔽字節(jié)(psr[7…0])
  • x 擴展域屏蔽字節(jié)(psr[27…8])
  • s 狀態(tài)域屏蔽字節(jié)(psr[31.…28])


關(guān)鍵詞: ARM9CPSR寄存

評論


技術(shù)專區(qū)

關(guān)閉