ARM920T協處理器CP15

ARM 427瀏覽

ARM920T處理器包含了ARM9TDMI內核,ARM9TDMI實現了ARM architecture v4T。

ARM920T處理器包含兩個協處理器:

CP14。用于調試

CP15。系統控制協處理器,提供附加的寄存器用來配置和控制cache,MMU,保護系統,時鐘模式,和ARM920T其他的系統選項,如大小端操作。你可以使用MCR,MRC訪問定義在CP15中的寄存器。

CP15定義了16個寄存器,寄存器的映射圖如下:

注:寄存器位置0可以訪問兩個寄存器,通過opcode_2的值來確定。

ARM920T存在3個地址。

只能在特權模式下使用MCR和MRC指令訪問CP15。這些指令的格式是:

MCR/MRC{cond} P15,,Rd,CRn,CRm,

指令CDP,LDC,STC和非特權模式的MRC,MCR指令操作CP15會導致未定義指令異常。MRC和MCR指令的CRn域指定了要訪問的協處理寄存器。opcode_1,和CRm域應該是0,除非值被指定用來選擇需要的操作。

Register 0,ID code register

可以通過讀CP15 register 0,opcode_2域設置成除了1的任何值(在讀的時候CRm應該為0)。

如:

MRC p15,0,Rd,c0,c0,0;return ID register

cache type register 0

包含cache的大小和體系結構的信息。可以通過設置域為1,讀CP15 register 0來訪問cache type register。例如:

MRC p15,0,Rd,c0,c0,1;returns cache details

Dsize和Isize域格式一樣:

Register1,control register

這個寄存器包含了ARM920T的控制位。

MRC p15,0,Rd,c1,c0,0 ;read control register

MCR p15,0,Rd,c1,c0,0;write control register

Register 2,translation table base(TTB)register

這個是頁表基址寄存器。

使用下面的指令訪問TTB:

MRC p15,0,Rd,c2,c0,0;read TTB register

MCR p15,0,Rd,c2,c0,0;write TTB register

Register 3,domain access control register

這個是讀寫域訪問控制寄存器。

MRC p15,0,Rd,c3,c0,0;read domain 15:0 access permissions

MCR p15,0,Rd,c3,c0,0;write domain 15:0 access permissions

Register 4,reserved

Register 5,fault status registers

Register 6,fault address registers

Register 7,cache operations register

Register 8,TLB operations register

用來管理Translation Lookaside Buffers(TLBs),指令TLB和數據TLB。

Register 9,cache lockdown register

opcode_2=0x0 訪問的是Dcache

opcode_2=0x1 訪問的是 Icache

Regiter 10,TLB lockdown register

opcode_2=0x0 訪問的是D TLB

opcode_2=0x1 訪問的是 I TLB

Register 11,12,and 14,reserved

Register 13,FCSE PID register

是快速上下文切換擴展寄存器。

MRC p15,0,Rd,c13,c0,0;read FCSE_PID

MCR p15,0,Rd,c13,c0,0; write FCSE_PID

ARM9TDMI發出的地址在0~32MB范圍內的被CP15的register 13轉換。地址A變成A+(FCSE_PID×32MB)。FCSE_PID是一個7位的域,能夠使128×32MB的進程被映射。

Register 15,test configuration register

作者:李萬鵬

七星彩走势图2元网官网