2014-11-24 8 views
0

저는 ARM1176JZF-S 프로세서가있는 raspberry pi B +의 트러스트 영역 확장 작업을하고 있습니다. smc 호출의 즉치 값은 어디에 저장됩니까?

세계 사이를 전환하는 데 사용되는 SMC (보안 모니터 호출) 명령

는 형식이다 : 나는 SMC 예외 처리기에서이 값을 가져 오지하려고

"SMC#imm4" eg : smC#0

. 나의 초기 가정은 이것이 R0 레지스터에 저장 될 수 있다는 것이었다. 그러나 내가 통과 한 가치와 다른 가치를 얻고 있습니다. 그렇다면이 값은 어디에 저장되어 있습니까?

답변

1

이 값은 명령어의 opcode의 일부입니다. 반환 주소에서 메모리를 읽고 opcode를 구문 분석하고 즉각적인 값을 추출해야합니다.

이러한 작업은 뱅킹 된 레지스터를 읽는 것과는 다소 비싸기 때문에 일반적인 방법은 프로세서 레지스터를 사용하여 수행 할 작업을 지정하는 것입니다. 실제로 ARM은 R0을 "SMC Function Identifier"로, R1-R6을 인수로 사용할 것을 제안하는 "SMC Calling Convention"을 개발했습니다.