CHAPTER 01
1. mcause/scause와 mie/mip에서 trap entry를 시작한다
interrupt/exception bit, cause number, delegation, xIE/xPIE와 xtvec mode를 hart별로 확인합니다. 외부 controller pending과 hart external-interrupt pending bit를 같은 번호로 보지 않습니다.
cause
최상위 interrupt bit와 cause code를 분리합니다.
delegation
mideleg에 따라 M-mode interrupt가 S-mode로 위임됩니다.
xtvec
direct/vectored mode와 base alignment가 entry 주소를 결정합니다.
xstatus
trap entry 시 xIE/xPIE와 privilege stack이 갱신됩니다.
레지스터·번호·소유권 대조
| 항목 | 소유자 | 값의 의미 | 정상 증거 | 오류 해석 |
|---|---|---|---|---|
| mcause/scause | hart CSR | interrupt와 cause | 예상 external cause | exception과 오인 |
| mie/sie | hart CSR | local enable | external bit enabled | controller 정상이나 hart 차단 |
| mip/sip | hart CSR | pending summary | controller delivery와 일치 | PLIC/IMSIC 앞 경계 |
| mideleg | hart CSR | S-mode 위임 | OS 실행 level과 일치 | M-mode에 머묾 |
| mtvec/stvec | hart CSR | entry base/mode | 정렬된 유효 주소 | 잘못된 vector entry |
실패 경계 판정
| 증상 | 직전 통과 | 우선 확인 | 반증 시험 | 판정 |
|---|---|---|---|---|
| PLIC pending, sip.SEIP 0 | source pending | context delivery/threshold | threshold 0과 enable 확인 | controller→hart |
| SEIP 1, trap 없음 | hart pending | sie/sstatus.SIE | mask 해제 시험 | hart masking |
| trap cause 다름 | entry 실행 | scause decode | raw XLEN 값 보존 | decode 오류 |
| M-mode만 받음 | external pending | mideleg/firmware | delegation readback | privilege routing |
| return 후 즉시 재진입 | handler 실행 | source/complete | claim/complete trace | controller 완료 |
실제 검증 절차
| 순서 | 실행 | 남길 증거 | 판정 목적 |
|---|---|---|---|
| 1 | trap 직전 CSR snapshot을 per-hart 저장합니다. | cause/enable/pending | entry 조건 |
| 2 | delegation과 실행 privilege를 boot 단계별로 기록합니다. | M/S handoff | routing 확인 |
| 3 | direct/vectored target 주소를 disassembly와 대조합니다. | 실제 PC | entry 검증 |
| 4 | local timer/software/external cause를 각각 주입합니다. | cause별 handler | 분류 검증 |
주의CSR pending bit는 외부 source ID를 담지 않습니다. PLIC claim 또는 IMSIC top-of-pending 정보를 별도로 읽어야 합니다.
공개적으로 다시 확인할 수 있는 자료
공개되지 않은 vendor register나 integration별 offset을 추측해서 채우지 않았습니다. 아래 제조사 자료, architecture 문서와 Linux v6.18.37 원본에서 다시 확인할 수 있는 범위만 사용했습니다.
RISC-V PLIC specification
gateway, priority, target context와 claim/complete
RISC-V AIA specification
APLIC, IMSIC, interrupt files와 virtualization
Linux SiFive PLIC driver
PLIC domain, enable, claim/complete와 chained handler
Linux RISC-V INTC
local interrupt cause와 root domain