[Arm프로세서] Armv7: 익셉션 핸들러란
By Guillermo Austin Kim | 2020년 12월 27일 |
처음 익셉션 벡터 테이블을 분석하면 다음과 같은 의문이 생기는 경우가 많습니다. "이와 관련된 코드는 어디에 구현돼 있을까?" 이 질문에 답을 하려면 익셉션 벡터와 관련된 코드가 무엇인지 알아야 하는데, 이를 익셉션 벡터 핸들러라고 합니다. 익셉션 벡터 핸들러는 익셉션의 종류 별로 소프트웨어적으로 처리되는 목적의 명령어로 구성돼 있는데 익셉션 벡터 주소에서 브랜치됩니다. 익셉션 핸들러 코드 분석하기 이제부터 오픈 소스 기반의 운영체제인 리눅스 커널에서 확인된 익셉션 벡터와 익셉션 백터 핸들러의 코드를 보면서 배운 내용을 다져봅시다. 다음은 익셉션 벡터와 익셉션 핸들러를 브랜치하는 코드입니다. 01 ffff0000: ea0003ff b 0xffff1004 <vecto
[ARM프로세서] ARMv7: 소프트웨어 인터럽트 익셉션의 실행 흐름
By Guillermo Austin Kim | 2020년 11월 24일 |
[ARM프로세서] ARMv7: SW 인터럽트 익셉션의 실행 흐름 ‘svc’ 명령어를 실행하면 ARM 코어는 소프트웨어적으로 익셉션을 유발합니다. ARM 코어가 'svc' 명령어를 디코딩하면 이를 익셉션의 한 종류로 감지하는데, ARM 스팩 문서에서는 이를 슈퍼바이저 콜(Supervisor Call)이라고 부릅니다. 'svc' 명령어를 실행하면, 외부 하드웨어에서 발생하는 것이 아닌, 소프트웨어적으로 인터럽트 익셉션이 유발되므로 흔히 소프트웨어 인터럽트라고도 합니다. 또한, SW 인터럽트는 운영체제의 시스템 콜 기능과 연관이 깊은 기능입니다. 시스템 콜은 SW 인터럽트를 활용해 구현됐기 때문입니다. 다음 그림을 보면서 ‘svc’ 명령어를 실행하면 ARM 코어는 소프트웨어적으로 익셉션을 유발하는 흐름을 살
[Arm프로세서] 트러스트존(TrustZone): 시큐어 모니터 콜(Secure Monitor Call)이란
By Guillermo Austin Kim | 2021년 12월 27일 |
논 시큐어 월드에서 시큐어 월드로 진입하려면 smc 명령어를 실행해야 합니다. 먼저 arm 스팩 문서를 분석하면서 smc 명령어를 알아봅시다. B1.9.5 Secure Monitor Call (SMC) exceptionThe Secure Monitor Call exception is implemented only as part of the Security Extensions. The Secure Monitor Call instruction, SMC, requests a Secure Monitor function, causing the processor to enter Monitor mode. 위 내용은 다음과 같이 정리할 수 있습니다. * 시큐어 모니터 콜 익셉션은 Security Extensi
[Arm프로세서] 트러스트존(TrustZone): 익셉션 레벨과 시큐어 모드와의 관계
By Guillermo Austin Kim | 2022년 1월 3일 |
트러스트존은 실행 흐름은 시큐워 월드와 논 시큐어 월드로 분류할 수 있는데, 시큐워 월드에 보안성의 수준을 높인 Trusted OS를 구현합니다. 그런데 세세한 트러스트존의 설계 방식은 Arm 아키텍처마다 약간 다릅니다. 이는 Armv8 아키텍처에도 적용됩니다. 다음 그림을 보면서 Armv8 아키텍처의 트러스트존을 알아봅시다. 그림 11.6 Armv8 아키텍처에서 논 시큐어 월드와 시큐어 월드 위 그림은 Armv8 아키텍처에서 논 시큐어 월드와 시큐어 월드가 처리되는 흐름을 나타냅니다. 그림의 가장 왼쪽 부분을 보면 EL0-EL3이 보입니다. 이는 익셉션 레벨을 의미하는데, Armv8 아키텍처에서는 익셉션 레벨을 기준으로 익셉션이 처리되고 실행 권한이 관리됩니다. 그림의 왼쪽 상단에는 논 시큐어