[RISC-V] 익셉션 벡터 핸들러 코드 산책 - 리눅스 커널

Guillermo Austin Kim|2020년 9월 27일
Posts

[RISC-V] 익셉션 벡터 핸들러 코드 산책 - 리눅스 커널

Guillermo Austin Kim|2020년 9월 27일

이번 시간에는 RISC-V 기반 리눅스 커널에 구현된 익셉션 벡터 테이블과 익셉션 벡터 핸들러를 분석하겠습니다. 익셉션 벡터 핸들러를 호출하는 코드 확인하기 다음은 익셉션 벡터 핸들러의 구현부입니다. RISCV_PTR do_trap_insn_misaligned RISCV_PTR do_trap_insn_fault RISCV_PTR do_trap_insn_illegal RISCV_PTR do_trap_break RISCV_PTR do_trap_load_misaligned RISCV_PTR do_trap_load_fault RISCV_PTR do_trap_store_misaligned RISCV_PTR do_trap_store_fault RISCV_PTR do_trap_ecall_u /* system cal

Related Posts

3 posts

리눅스 커널, 드디어 6.0 버전대 시대로 진입

며칠 지난 소식이지만, 새로운 10월의 시작과 함께 하듯이 10월 2일 리눅스 커널의 6.0 릴리즈가 등장했습니다. 기존 안정 버전 5.19 버전대에서 6.0 대에서 한 번에 올라왔지만, 메이저 버전업에 기대하는 천지개벽 같은 요소는 그리 없습니다. 버전을 6.0으로 올린 것도 5.19에서 5.20으로 가기에는 서브 버전이 좀 숫자가 크다... 고 해서 올린 의미 정도이니까요. 하지만 지속적으로 진행 중인 변화의 폭 자체는 그리 작지 않습니다. 이번 커널 6.0에서도 최신 하드웨어들에 대한 지원들이 추가되었습니다. 프로세서에서는 3세대 제온 스케일러블 ''아이스 레이크''나 AMD 라이젠 쓰레드리퍼, AMD 에픽 프로세서 등에서의 성능 최적화 등이 적용되었고, 인텔의 차세대 프로세서가 될 4세대 제온 스케일러

[리눅스커널] IPI(Inter Processor Interrupt) Call 요청 루틴(하이 레벨 뷰)

Guillermo Austin Kim|2022년 3월 21일

IPI(Inter Processor Interrupt)의 약자로 지정한 CPU 코어를 타겟으로 인터럽트(소프트웨어적)를 유발하는 매커니즘입니다. 이번 포스트에서는 리눅스 커널에서 IPI Call을 요청하는 루틴을 리뷰하겠습니다. IPI Call은 아키텍처에 의존적으로 처리되므로 하이 레벨과 로우 레벨로 코드가 구현돼 있습니다. * High Level 코드 위치 kernel/sched/core.c kernel/smp.c kernel/irq/ipi.c * Low Level (Arm 아키텍처) 코드 위치 arch/arm64/kernel/smp.c drivers/irqchip/irq-gic-v3.c IPI Call 요청 루틴(하이 레벨) 아래 함수는 Qualcomm Watchdog

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

Guillermo Austin Kim|2022년 2월 15일

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