ARMV8

포스트: 45|조회수: 0|ARTIFACT
Items

Posts

45 posts

[Arm프로세서] XEN 하이퍼바이저: EL2 익셉션 벡터 핸들러 코드 분석

Guillermo Austin Kim|2022년 2월 17일

XEN 하이퍼바이저의 익셉션 벡터 핸들러를 해석하는 방법을 소개했으니 이어서 익셉션 벡터 핸들러의 코드를 분석하겠습니다. 먼저 2~14번째 줄을 보겠습니다. 2 26a800: 17fffc00 b 269800 3 26a804: d503201f nop4 26a808: d503201f nop...5 26a880: 17fffbfb b 26986c 6 26a884: d503201f nop7 26a888: d503201f nop...8 26a900: 17fffbf6 b 2698d8 9 26a904: d503201f nop10 26a908: d50

[Arm프로세서] XEN 하이퍼바이저: 익셉션 핸들러 코드 소개

Guillermo Austin Kim|2022년 2월 15일

운영체제나 RTOS 커널의 세부 동작을 파악하려면 익셉션이 유발되면 처리되는 익셉션 벡터 핸들러를 잘 알아야 합니다. 익셉션 벡터 핸들러의 코드를 보면 Armv8 아키텍처에서 정의된 스팩에 따라 익셉션 벡터 핸들러가 구현됐다는 사실을 알 수 있습니다. XEN 하이퍼바이저의 익셉션 벡터 핸들러 코드도 예외는 아닙니다. 게스트 OS와 하이퍼바이저와 통신하는 주요 인터페이스가 XEN 하이퍼바이저의 익셉션 벡터 핸들러이니 잘 익혀둘 필요가 있습니다. 익셉션 핸들러 코드 소개 포스트에서 분석할 XEN 하이퍼바이저의 익셉션 벡터 핸들러 전체 어셈블리 코드를 소개합니다. 1 000000000026a800 :2 26a800:17fffc00 b269800 &lt

[Arm프로세서] XEN 하이퍼바이저 소개

Guillermo Austin Kim|2022년 2월 14일

그런데 오픈 소스 기반으로 개발되고 있는 하이퍼바이저가 있는데 그 중에서 가장 많이 사용되는 하이퍼바이저는 XEN입니다. XEN은 오픈 소스 프로젝트라서 누구나 XEN 하이퍼바이저의 코드를 내려받아 빌드해 실행할 수 있습니다. XEN에 대한 소개는 다음 홈페이지에서 확인할 수 있습니다.  이번 절에서는 Armv8 아키텍처에서 실행되는 XEN 하이퍼바이저의 익셉션 벡터 핸들러 코드를 분석합니다. 코드 분석을 통해 하이퍼바이저를 지원하기 위해 사용되는 레지스터와 명령어를 분석하고, 게스트 Exit 관점 중심으로 하이퍼바이저의 동작을 설명합니다. [정보]XEN 하이퍼바이저는 오픈 소스 프로젝트라 누구나 소스를 빌드해 실행하고 XEN 프로젝트에 컨트리뷰션(기여)를 할 수 있습니다. 그런데 대부분 상용 소프

[Arm프로세서] 하이퍼바이저 관점의 익셉션 벡터 테이블 분석하기

Guillermo Austin Kim|2022년 2월 11일

이전 절에서 익셉션 벡터 테이블의 스팩을 분석했습니다. 이어서 EL2가 실행되는 하이퍼바이저 관점에서 익셉션 벡터 테이블을 분석하겠습니다. 다음은 하이퍼바이저가 실행되는 EL2에서 본 익셉션 벡터 테이블의 동작 방식을 나타낸 표입니다. 표 12.2 하이퍼바이저 관점에서 본 익셉션 벡터 테이블 'EL2 with SP_EL0' 열의 내용을 분석하겠습니다. 'EL2 with SP_EL0'은 익셉션 레벨에 상관없이 스택을 설정하는 조건에서 실행되는 익셉션의 종류 별 오프셋을 나타냅니다. 그런데 일반적으로 대부분의 하이퍼바이저에서 지원하지 않습니다. [정보]XEN 하이퍼바이저에서는 'EL2 with SP_EL0' 익셉션을 지원하지 않습니다. 이어서 'EL2에서 발생'로 표기된 부분을 보겠습니다. 0x