Guillermo Austin Kim

Sources

Posts

998 posts

[Arm프로세서] Armv8: VBAR_EL1 - 리눅스 커널 익셉션 벡터와 익셉션 핸들러

Guillermo Austin Kim|2021년 2월 9일

Armv8 기반으로 구동되는 리눅스 커널의 익셉션 벡터와 익셉션 핸들러를 소개하기 전에,이전에 소개한 VBAR_EL1 기준 익셉션 벡터 테이블을 보겠습니다. 표 9.19 VBAR_EL1 기준의 익셉션 벡터 테이블 위 익셉션 벡터 테이블에서 EL1 with SP_EL0 항목에 대한 익셉션 벡터와 익셉션 핸들러 코드를 보겠습니다. [중요]익셉션 벡터 베이스 주소(VBAR_EL1)는 0xffffff8008082000이라고 가정합니다. 'EL1 with SP_EL0' 'EL1 with SP_EL0' 항목에 대응되는 익셉션 벡터와 익셉션 핸들러의 전체 코드는 다음과 같습니다. ffffff8008082000 :ffffff8008082000: d10503ff sub sp

[Arm프로세서] Armv8: 익셉션 핸들러 코드 분석하기

Guillermo Austin Kim|2021년 2월 9일

이전 포스트에서는 Armv8 아키텍처의 관점으로 익셉션 벡터 테이블을 살펴봤습니다. 이 부분까지 읽은 소프트웨어 개발자 분들은 Armv8 아키텍처의 익셉션 벡터 테이블이 무엇인지 감이 올 것이지만, 구체적인 무엇인가가 머릿 속에 남지 않는다는 느낌을 받을 수 있습니다. 익셉션 벡터란 Arm 코어가 익셉션을 유발하면 프로그램 카운터로 브랜치하는 주소인데, 구체적인 주소와 이 주소(익셉션 벡터)에 어떤 명령어가 있는 지 파악하지 않았기 때문입니다. 사실 대부분 소프트웨어 개발자들은 어떤 개념을 배우면 샘플 코드를 분석하면서 공부한 내용을 다지는 경우가 많습니다. 그래서 실전 프로젝트에서 활용되는 운영체제의 익셉션 벡터에 위치한 익셉션 핸들러의 코드를 분석합니다. 이번 절에는 오픈 소스 진영에서 가장 많이 알

[Arm프로세서] Armv8: VBAR_ELx 기준으로 익셉션 벡터 테이블 분석 정리

Guillermo Austin Kim|2021년 2월 8일

이전 포스트까지 EL1에 존재하는 VBAR_EL1와 EL1에 있는 VBAR_EL2 기준으로 익셉션 벡터 테이블에 대해 알아봤습니다. 이제 원점으로 돌아가서 이번 절의 앞 부분에 소개한, Armv8 스팩 문서에 있는 익셉션 벡터 테이블을 보면서 배운 내용을 정리해봅시다. VBAR_EL1 기준으로 바라본 익셉션 벡터 테이블 먼저 VBAR_EL1 기준으로 익셉션 벡터 테이블을 분석해봅시다. 표 9.18 Armv8 아키텍처의 익셉센 벡터 테이블(출처: DDI0487Fc_armv8_arm.pdf) 표의 왼쪽 행의 2번째 열에 보이는 'Current Exception level'은 운영체제의 커널이 구동하는 EL1을 의미하며, EL1에서 익셉션이 유발되면 익셉션 벡터 베이스 주소에 아래와 같은 오프셋을 더한

[Arm프로세서] Armv8: VBAR_EL2 기준 익셉션 벡터 테이블 분석하기

Guillermo Austin Kim|2021년 2월 8일

이번에는 EL1와 EL2으로 구성된 시스템 아키텍처에서 익셉션 벡터 테이블에 대해 살펴보겠습니다. 먼저 다음 그림을 같이 보겠습니다. 그림 9.14 2개 익셉션 벡터 테이블이 있는 시스템 아키텍처의 구조 그림 9.14를 보면 EL0, EL1, EL2로 표기된 부분이 보입니다. 기존에 설명한 바와 같이, EL0에는 유저 애플리케이션, EL1에는 운영체제 커널이 구동됩니다. 그림의 가운데 부분에 보이는 '익셉션 벡터 테이블(VBAR_EL1)'는 운영체제 커널이 구동되는 EL1에 위치합니다. 그림 아랫 부분에 보이는 '익셉션 벡터 테이블(VBAR_EL2)'는 하이퍼바이저가 구동되는 EL2에 위치합니다. [정보]EL2에 보이는 하이퍼바이저는 2개 이상의 멀티 운영체제를 구동시키고 관리하는 가상화 시스템의

[Arm프로세서] Armv8: VBAR_EL1 기준 익셉션 벡터 테이블 분석하기

Guillermo Austin Kim|2021년 2월 2일

일반적이면서 심플한 시스템에서 확인되는, 다음 그림과 같은 시스템 아키텍처 기준으로 익셉션 벡터 테이블에 대해 알아보겠습니다. 그림 9.13 심플한 아키텍처 기반의 익셉션 벡터 테이블 그림 9.13을 보면 시스템에는 EL0와 EL1만이 존재합니다. [정보]이렇게 가장 심플한 아키텍처 기준으로 익셉션 벡터를 설명드린 이유는 "먼저 가장 심플한 시스템에서 익셉션 벡터에 대한 개념"을 잡고, 배운 내용을 내용을 확장해 나가는 게 효율적인 학습 방법이기 때문입니다. 윗 부분에 EL0와 'App'가 보이는데, 이는 EL0에서 실행되는 카카오톡과 크롬 브라우저와 같은 유저 애플리케이션을 뜻합니다. 아랫 부분에는 EL1에 보이는데, EL1에는 운영체제의 커널이 구동되며 운영체제의 커널 내부에 익셉션 벡터 테