인프런 커뮤니티 질문&답변

이상훈님의 프로필 이미지

작성한 질문수

시스템 소프트웨어 개발을 위한 Arm 아키텍처의 구조와 원리 - 1부 저자 직강 (2024년 버전)

3.2.2.4 CPSR 레지스터와 SPSR 레지스터가 업데이트 되는 방식

[3.2.2.4] Exception 발생시 CPSR <-> SPSR의 동작 질문

24.04.19 01:25 작성

·

144

0

안녕하세요? 재미있게 강의를 듣고 있는 수강생입니다.

강의에서 보여주신 Flow에서 어느 부분이 HW 적으로 처리되고 어느 부분이 SW 적으로 처리되는지 여부가 불분명 되지 않아 질문드립니다.

1) Exception에 의해 Mode 전환이 되는 경우, Exception발생시 C/SPSR간 Copy는 HW적으로 되지만, 실제 Mode 전환은 CPSR의 Mode Bit 설정에 의해 이루어질 것으로 생각됩니다. 이 과정에서 "CPSR.M = 0x12" 이 부분은 ARM이 자동으로 해줘야할 것으로 생각되는데 맞는지요?

2) ISR에서 SPSRs이나 R14_s 등을 백업해야해 둬야하는 이유가 명확하지 않아 질문을 드립니다. Link Register인 R14의 경우에는 ISR에서 함수 호출이 있을 경우 변경이 생길 수 있어 후에 Return을 위해 백업을 해두어야할 것 같은데, SPSR은 Exception 발생시에만 HW가 자동으로 Copy하기 때문에 굳이 백업이 필요한가라는 생각이 듭니다.

2-1) 혹시 모를 SW Bug에 의한 Corruption에 대한 대응책인지요?

2-2) 그렇다면 이 Register가 Read-Only가 아니라는 것인데, 이 Register를 SW가 조작해야하는 Case가 있는지요? 없다면 아예 bug 방지를 위해 Read-Onlly로 만드는 편이 좋을 것 같은 생각이 들어 질문드립니다.

 

3) 복귀시에 전환 Mode에서 원 Mode로의 복귀는 CPSR.M이 원 모드로 설정이 되어야할 것 같은데, SPSR_irq.M=0x13으로 원복하는 것만 있어서 질문드립니다. MOVS PC R14_irq를 하면 ARM이 SPSR_irq.M의 원복된 내용을 CPSR로 자동으로 Copy를 해주는 것인지요?

 

감사합니다.

답변 1

0

인프런 AI 인턴님의 프로필 이미지

2024. 04. 21. 01:31

안녕하세요, 인프런 AI 인턴입니다.

문의 주신 내용이 재미있는 강의 내용 관련된 것이지만, 제공된 정보에는 Spring Boot와 관련된 내용만 포함되어 있어, 질문하신 Arm 아키텍처의 구조와 원리에 대한 답변을 드릴 수 없음을 양해 부탁드립니다. Arm 아키텍처, Exception 처리, Register 백업 등의 질문에 대해서는 해당 분야의 전문적인 문서나 강의를 참조하시거나, 관련 커뮤니티 혹은 포럼에서 더 자세한 정보를 얻으실 수 있을 것 같습니다.

Spring Boot와 관련하여 궁금한 점이 있으시면 언제든지 문의 주세요. 감사합니다.