저는 공부를 하는 학생입니다.
책을 읽던도중 질문점이 생겼습니다.
예를들어 Interrupt가 발생하여서 Exception Vector Table로 이동을 하는데..
이동과 동시에 IRQ Mode로 된다고 합니다.. 이와같은 처리는 하드웨어적으로 처리가 일어난다고 하는데.
하드웨어 적으로 어떻게 Mode를 바꾸어 주는것인가요?''
자료가 있으면 보내주셔도 감사합니다..
댓글 2
.
저는 공부를 하는 학생입니다.
책을 읽던도중 질문점이 생겼습니다.
예를들어 Interrupt가 발생하여서 Exception Vector Table로 이동을 하는데..
이동과 동시에 IRQ Mode로 된다고 합니다.. 이와같은 처리는 하드웨어적으로 처리가 일어난다고 하는데.
하드웨어 적으로 어떻게 Mode를 바꾸어 주는것인가요?''
자료가 있으면 보내주셔도 감사합니다..
.
안녕하세요.
IRQ mode 라는 언급때문에 섣부르게 ARM 이라고 판단을 했습니다.
혹시나 x86 이라면, 저도 x86은 잘 모르지만 내나 유사한 메카니즘을 사용하리라 생각됩니다.
http://web.eecs.umich.edu/~prabal/teaching/eecs373-f10/readings/ARM_Architecture_Overview.pdf
위 링크의 pdf file에서 10페이지를 보면 hw에서 처리하는 순서가 나옵니다.
대충 요약하면 아래와 같습니다.
When an exception occurs, the core:
ß Copies CPSR into SPSR_<mode>
ß Sets appropriate CPSR bits
ß Change to ARM state
ß Change to exception mode
ß Disable interrupts (if appropriate)
ß Stores the return address in LR_<mode>
ß Sets PC to vector address
ARM에 대해 아시는지 모르겠지만 cpsr의 하위비트가 mode를 구별하기 위해 사용됩니다.
exception발생시 cpsr 을 spsr에 저장하고 cpsr에서 mode 를 구별하기 위해 사용되는 부분을 해당 exception에 맞게 설정합니다.
당연히 hw 가 설정합니다.
그럼 이만~