[Arm프로세서] 트러스트존(TrustZone): 익셉션 레벨과 시큐어 모드와의 관계
By Guillermo Austin Kim | 2022년 1월 3일 |
트러스트존은 실행 흐름은 시큐워 월드와 논 시큐어 월드로 분류할 수 있는데, 시큐워 월드에 보안성의 수준을 높인 Trusted OS를 구현합니다. 그런데 세세한 트러스트존의 설계 방식은 Arm 아키텍처마다 약간 다릅니다. 이는 Armv8 아키텍처에도 적용됩니다. 다음 그림을 보면서 Armv8 아키텍처의 트러스트존을 알아봅시다. 그림 11.6 Armv8 아키텍처에서 논 시큐어 월드와 시큐어 월드 위 그림은 Armv8 아키텍처에서 논 시큐어 월드와 시큐어 월드가 처리되는 흐름을 나타냅니다. 그림의 가장 왼쪽 부분을 보면 EL0-EL3이 보입니다. 이는 익셉션 레벨을 의미하는데, Armv8 아키텍처에서는 익셉션 레벨을 기준으로 익셉션이 처리되고 실행 권한이 관리됩니다. 그림의 왼쪽 상단에는 논 시큐어
[Arm프로세서] 하이퍼바이저: HCR_EL2 레지스터에 접근하는 명령어
By Guillermo Austin Kim | 2022년 2월 8일 |
HCR_EL2 레지스터를 구성하는 비트 맵 정보를 파악하면 "이 비트를 어떻게 설정할 수 있을까?"란 의문이 생길 수 있습니다. Armv8 아키텍처에서는 HCR_EL2 레지스터의 값을 읽고 쓸 수 있는 명령어를 제공합니다. HCR_EL2 레지스터의 값을 읽기 위해서 다음과 같은 형식의 명령어를 실행하면 됩니다. 그림 12.4 HCR_EL2 레지스터를 읽는 MRS 명령어 그림 12.4는 HCR_EL2 레지스터의 값을 Xt 레지스터로 로딩하는 명령어입니다. 위 그림에서 보이는 <Xt>는 Armv8 아키텍처에서 정의된 범용 레지스터를 뜻합니다. x0, x1, x2와 같은 레지스터가 지정될 수 있습니다. 이 명령어로 HCR_EL2 레지스터의 어떤 비트가 활성화돼 있는지 알 수 있습니다. mrs
[Arm프로세서] 익셉션(Exception) 동작 슈도 코드 소개
By Guillermo Austin Kim | 2020년 12월 15일 |
Armv8 문서를 보면 Arm 코어에서 하드웨어적으로 처리하는 동작을 슈도 코드로 표기한 부분을 볼 수 있습니다.문서 이름과 해당 절은 다음과 같습니다. * 문서 이름: DDI0487Fc_armv8_arm.pdf * 해당 절 Part J Architectural Pseudocode J1.1 Pseudocode for AArch64 operation J1-7612 J1.1.1 aarch64/debug J1.1.2 aarch64/exceptions J1.2 Pseudocode for AArch32 operation 샘플 코드에 익숙한 소프트웨어 개발자들에게 샘플 혹은 슈도 코드는 유익한 정보입니다.특히 하이퍼바이저나 트러스트존과 같은 Arm Extention 기능의 동작 원리
[ARMv8] 익셉션 클래스가 구현된 코드 분석하기: 리눅스 커널
By Guillermo Austin Kim | 2020년 9월 23일 |
[ARMv8] 익셉션 클래스가 구현된 코드 분석하기: 리눅스 커널 이번 포스트에서는 ARMv8 에서 소개된 익셉션 클래스가 ARMv8 기반의 리눅스 커널에서 어떤 방식으로 구현됐는지 분석합니다. # 익셉션 클래스 소개 소스를 분석하기 전에 ARMv8의 익셉션 클래스를 Q/A 형식으로 소개합니다. Q: 익셉션 클래스란 무엇인가? 익셉션 클래스는 익셉션이 발생한 세부 원인(Cause)를 나타내며 Synchronous 유형의 익셉션이 발생했을 때 익셉션 클래스를 읽을 수 있습니다. Q: 익셉션 클래스는 언제 어떻게 읽을 수 있나? 익셉션 클래스는 Synchronous 유형의 익셉션이 발생했을 때 익셉션 신드롬 레지스터(Exception Syndrom Register)를 통해 읽습니다.익셉션 클래스는