[ARM] 익셉션이 발생하면 프로세스는 어떻게 동작할까 - ARMv8
By Guillermo Austin Kim | 2020년 11월 2일 |
이번에는 64비트 기반 ARMv8 아키텍처 기준으로 proc_func_ptr 함수의 코드를 봅시다. 01 ffffff8008106d7c <proc_func_ptr>:02 ffffff8008106d7c: d10083ff sub sp, sp, #0x2003 ffffff8008106d80: f90007e0 str x0, [sp,#8]04 ffffff8008106d84: b90017ff str wzr, [sp,#20]05 ffffff8008106d88: f94007e0 ldr x0, [sp,#8]06 ffffff8008106d8c: f9000fe0 str x0, [sp,#24]07 ffffff8008106d90: f9400fe0 ldr x0, [sp
[ARM] 익셉션이 발생하면 프로세스는 어떻게 동작할까 - ARMv7
By Guillermo Austin Kim | 2020년 11월 2일 |
많은 학생이나 SW 개발자들은 "ARM의 익셉션 벡터 테이블을 열심히 읽어도 잘 모르겠다", 혹은 "무슨 내용인지 와 닿지 않는다"라는 불만을 토로합니다. 또한 "ARM 익셉션의 개념이 어렵다"라고 말하기도 합니다. 그 이유에 대해 곰곰히 생각해 봤는데, 소프트웨어 관점으로 익셉션이 무엇인지 분석하지 않았기 때문이라는 결론에 이르게 됐습니다. 여기서 말하는 소프트웨어란 용어는 조금 애매하고 추상적인 의미를 내포하는듯 합니다. 그런데 소프트웨어란 용어를 구체적으로 표현하면 "운영체제의 프로세스"라고 말할 수 있습니다. 소프트웨어 개발자가 입력한 코드는 CPU에 가까운 어셈블리 명령어로 실행되는데, 이를 실행하는 주인공은 프로세스이기 때문입니다. 익셉션이 발생하면 프로세스는 어떻게 동작할까요? 어떤 익셉션
[Arm프로세서] 트러스트존(TrustZone): 시큐어 상태(Secure State)와 SCR_EL3 레지스터란
By Guillermo Austin Kim | 2022년 1월 4일 |
이전 포스트에서 소개했듯이 트러스트존 아키텍처 관점으로 보면 시큐어 상태와 논 시큐어 상태가 존재합니다. 일반적으로 우리가 알고 있는 유저 애플리케이션이나 운영체제 커널은 논 시큐어 상태에서 동작한다고 볼 수 있습니다. 그렇다면 각 익셉션 레벨 별로 현재 시큐어 상태인지 아닌지는 어떻게 알 수 있을까요? 바로 SCR_ELx 레지스터의 값을 통해 알 수 있습니다. [정보]SCR_ELx에서 보이는 ELx는 익셉션 레벨을 뜻하면 EL0--EL3까지를 뜻합니다. SCR_ELx 레지스터는 EL3에서만 변경하거나 접근할 수 있습니다. 다음은 EL3에서만 접근할 수 있는 SCR_EL3 레지스터의 다이어그램입니다. 그림 11.7 SCR_EL3 레지스터의 Bit Assignment SCR 레지스터의 맵을 보면