[Arm프로세서] Armv7: Arm 동작 모드 별로 스택을 저장

Guillermo Austin Kim|2021년 10월 5일
Posts

[Arm프로세서] Armv7: Arm 동작 모드 별로 스택을 저장

Guillermo Austin Kim|2021년 10월 5일

리눅스 커널이 Armv7 아키텍처로 빌드가 되면 Arm 아키텍처와 관련된 기능을 초기화하는 루틴이 실행됩니다. 가장 대표적인 사례가 Arm 동작 모드 별로 스택을 설정하는 루틴입니다. 다음 코드를 보면서 Arm 동작 모드를 변경하는 방식을 알아봅시다. void notrace cpu_init(void)02 {03 ...04 /*05 * setup stacks for re-entrant exception handlers06 */07 __asm__ (08 "msr cpsr_c, %1\n\t"09 "add r14, %0, %2\n\t"10 "mov sp, r14\n\t"11 "msr cpsr_c, %3\n\t"12 "add r14, %0, %4\n\t"13 "mov sp, r14\n\t"14 "msr cps