Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

9465
557
421925


태그 : ARMv8 요약보기전체보기목록닫기

1 2 3 4 5 6 7 8 9

[Arm프로세서] Armv8: XEN 하이퍼바이저에서 익셉션 레벨을 체크

EL1에서 실행되는 리눅스 커널과 마찬가지로, EL2에서 구동되는 XEN 하이퍼바이저도 익셉션 레벨을 읽어서 제어하는 코드를 볼 수 있습니다. 이번에는 EL2에서 구동되는 XEN 하이퍼바이저에서 익셉션 레벨을 체크하는 루틴을 소개합니다.이번에는 EL2에서 실행되는 XEN 하이퍼바이저의 check_cpu_mode 레이블의 구현부를 분석하겠습니다.https...

[Arm프로세서] Armv8: 리눅스 커널에서 익셉션 레벨을 읽어서 제어하는 루틴

먼저 리눅스 커널이 부팅하는 과정에서 익셉션 레벨을 읽어서 제어하는 루틴을 소개합니다. Armv8 기반 리눅스 커널이 부팅을 할 때 el2_setup 레이블이 호출되는데, 이 레이블에서는 현재 익셉션 레벨을 읽어서 관련된 처리를 수행합니다. 다음은 el2_setup 레이블의 구현부입니다.https://elixir.bootlin.com/linux...

[Arm프로세서] Armv8 익셉션 레벨: 하이퍼바이저 콜

운영체제의 커널이 구동되는 EL1에서 hvc 명령어를 실행하면 하이퍼바이저 콜이 발생해, EL1에서 EL2로 익셉션 레벨이 변경됩니다. 하이퍼바이저와 같은 가상화 환경에서 게스트 OS가 하이퍼바이저에게 어떤 서비스를 요청할 때 hvc 명령어를 실행합니다. 그림 4.8 가상화 환경에서 hvc 명령어를 실행할 때의 흐름그림의 가운데 부분에서 ...

[Arm프로세서] Armv8 익셉션 레벨: SPSR(Saved Program Status Register) 레지스터

Armv8 아키텍처는 익셉션이 유발될 시점의 익셉션 레벨과 시스템 속성 정보를 저장하는 SPSR(Saved Program Status Register)를 제공합니다. SPSR은 익셉션이 발생했을 때의 PSTATE의 정보를 저장하는 용도로 사용되며, 익셉션을 처리한 후 익셉션이 발생한 EL과 관련된 처리를 하기 위해 사용됩니다.Armv8 아키텍처는 익셉션...

[Arm프로세서] Armv8 익셉션 레벨: PSTATE와 currentEL 레지스터

Armv8 아키텍처는 프로세서의 상태를 PSTATE를 통해 제공하는데, 이 정보 중에 익셉션 레벨이 포함돼 있습니다. 먼저 Armv8 아키텍처 문서를 보면서 PSTATE가 무엇인지 알아봅시다.(출처: DDI0487Fc_armv8_arm.pdf)D1.7 Process state, PSTATEIn the Armv8-A architecture, Process...

[Arm프로세서] Armv8 익셉션 레벨이란

익셉션 레벨은 무엇일까요? 먼저 익셉션 레벨을 가장 명확하게 설명하는 Arm 아키텍처 문서를 보면서 익셉션 레벨을 소개하겠습니다.익셉션 레벨에 대한 Arm 스팩 문서 분석다음 Arm 스팩 문서를 분석하면서 익셉션 레벨을 배워 봅시다. (출처: ARMv8-A_Architecture_Reference_Manual_(Issue_A.a))D1.1 Ex...

[Arm프로세서] AAPCS: Armv8: C 코드 최적화 - 함수 인자의 갯수는 9개 이하로 제한

6.4 절에서 Armv7 아키텍처에서 다룬 AAPCS는 실무에 적용할 만한 실용적인 내용이 많다고 설명했습니다. Armv8 아키텍처의 AAPCS도 마찬가지입니다.이번 절에서는 Armv8 아키텍처의 AAPCS에서 성능 개선을 위해 고려해야 할 2가지 내용을 소개합니다.Armv8 아키텍처의 AAPCS로 관점으로 보면 함수 인자의 갯수는 9개 이하로 제한하는...

[Arm프로세서] AAPCS: Armv8: C 코드 최적화 - 자주 호출되는 함수는 inline 키워드로 선언

[Arm프로세서] AAPCS: Armv8: 함수를 호출할 때 쓰이는 X0-X7 레지스터와 명령어 분석

SP 레지스터, X30 레지스터와 더불어 눈여겨봐야 할 레지스터가 X0-X7 레지스터입니다.함수를 호출할 때 전달되는 인자는 X0-X7 레지스터에 저장되고, 함수가 반환하는 값은 X0 레지스터로 저장되기 때문입니다.X0-X7 레지스터의 역할: 함수에 전달된 인자 저장01 0x10000 <main>:02 {03 0x10000:  &nb...

[Arm프로세서] AAPCS: Armv8: X30 링크 레지스터와 어셈블리 명령어 분석

SP 레지스터보다 링크 레지스터인 X30은 '함수 호출'에서 가장 중요한 역할을 수행합니다. 함수를 호출한 다음에 복귀할 주소를 X30 레지스터가 저장하기 때문입니다.우리가 함수를 작성하면 어디선가 함수를 호출할 것이라 예상합니다. 그런데 함수를 호출한 다음, 호출된 함수의 실행이 종료되면 (함수를 호출한 코드 기준으로) 바로 아랫 부분에 있는 코드가 ...
1 2 3 4 5 6 7 8 9