ARM high exception vector table에 관한질문입니다.
안녕하세요
ARMv4 기반 보드에서 low 벡터테이블을 high 벡터테이블로 바꾸려고 합니다.
코프로세서 컨트롤레지스터 v비트를 0 -> 1로 변경 하면 high 벡터테이블을 사용할수 있다고 메뉴얼에 나와있는데요
그 값을 바꾸니 인터럽트가 뜨면 ffff0000번지로 뛰게 되는데.. 실제 그쪽에 벡터테이블이 없이 그냥 빈공간으로 되어있는데..
그위치에 벡터테이블을 어떻게 등록해야하는지 궁금합니다.
.globl __vectors_start
__vectors_start:
swi SYS_ERROR0
b vector_und + stubs_offset
ldr pc, .LCvswi + stubs_offset
b vector_pabt + stubs_offset
b vector_dabt + stubs_offset
b vector_addrexcptn + stubs_offset
b vector_irq + stubs_offset
b vector_fiq + stubs_offset
The code copying the predefined exception vectors to the fixed address 0xffff0000 is defined in arch/arm/kernel/traps.c.
/* arch/arm/kernel/traps.c */
void __init trap_init(void)
인터넷을검색해보니
/* arch/arm/kernel/entry-armv.S */ 이렇게 벡터테이블이 작성되어있는 파일에 .globl로 선언해준다음에 trap_init()함수에서
강제적으로 memcpy()를 사용해여 0xffff 0000에 복사했는데요.. 복사자체가 안되더라구요.. 혹시 방법아시면 알려주셨으면 좋겠네요 ㅠㅠ
댓글 달기