CP15 레지스터에 대한 의문점...

김승주의 이미지

#######################################################
ldr r0, =0x2001 /* 모든 coprocessors에 접근을 허용한다 */
mcr p15,0,r0,c15,c1,0
nop
nop
nop

#########################################

안녕하세요..

PXA255를 공부 하던 중 의문점이 있어서 질문 올립니다..

모니터 프로그램 START.S 파일 내용중에.....

저 위에 값이 "0x2001" 이잖아요..

데이터 시트상 보면 "0x0001" 이 되어야 허용모드 아닌가요?

"0x2001" 이면 CP13을 "1" 값으로 한 것인데 왜 그런가 모르겠습니다;;

CP0 는 ALLOWED 모드이고

CP1 ~ CP13 까지는 ZERO 가 되어야 한다고 데이터 시트에

나와 있는데 왜 "0x2001"을 했는지 모르겠네요...

specerx의 이미지

제가 PXA255을 잘 알지못해 확실한 답변은 못드리겠지만 ARM과 비슷하리라 생각하고 몇자 적습니다.

CP15 는 system control coprocessor 입니다.
CP15 는 c0 에서 부터 c15 까지 16개의 레지스터가 있습니다.

mcr p15,0,r0,c15,c1,0
            ^^^^^

위 코드를 이해 하시기 위해서는 c15 레지스터에 대해 데이터 시트에서 다시 찾아보시기 바랍니다.

PS.
ARM 의 경우 http://www.arm.com/documentation/ARMProcessor_Cores/index.html 에서 Technical Reference Manual 들을 받아 볼 수 있는데 XScale 의 경우는 저런 문서를 어디서 찾아야 할지 알 수 없군요.
워낙 얄팍한 지식이라 많은 도움을 드리지 못하는군요.
------------------------------