Arm Linux Kernel Hacks

rousalome.egloos.com

포토로그 Kernel Crash


통계 위젯 (화이트)

693
557
422265


태그 : Aarch64 요약보기전체보기목록닫기

1

[Linux][ARM] Coprocessor(코프로세서) Assembly

ARM 프로세스 내 Coprocessor라는 하드웨어가 있습니다. Co-Processor라는 것은 Co-worker랍니다. CPU 혼자 모든 일을 다 할 수 없으니 Co-Processor가 필요한 것입니다.Co-Processor는 C언어 같이 어떤 코드 흐름을 제어하는 일보다는 ARM Core나 Cache을 콘트롤하는 역할을 수행합니다. 그래서...

[ARM64]signal - sa_handler signal handler 실행 (code walk-through)

#리눅스 커널 런큐 & 프로세스Runqueue(런큐) 디버깅 - Process 프로세스 상태Runqueue(런큐) Timestamp(실행 시간) 확인signal - sa_handler signal handler 실행  signal - signal handler data structure signal에 대해서는 리눅스 시...

ARM64 - ttrb0 Special Register 설정 건

current_thread_info를 보면  ttbr0 레지스터 확인을 할 수 있거든요. (리눅스 커널 버젼: 4.4 이상)  (struct thread_info *) (struct thread_info*)(0xFFFFFFE5783BFEE0 & ~0x3fff) = 0xFFFFFFE5783BC000 =    (l...

ARM64(Aarch64) - 함수 호출시 Stack Push(스택 푸쉬) 규약

아래와 같은 콜 스택에서 유저 공간에서 돌던 레지스터 Stack Push와 Exception 발생 시 Stack Push에 대해서 살펴봤어요. 이제는 평상시 함수 호출 시 어떻게 Stack Push를 하는 지 점검하려고 해요.자 계속 그 동안 다뤄왔던 아래 "rild"란 프로세스의 콜스택에서 rpi_ipc_router_sendmsg()-> rpi_...

ARM64 - Exception 시 Stack Push

유저 공간에서 시스템 콜을 호출할 때 유저 공간에서 돌던 레지스터를 커널 공간 스택 Bottom Address 근처에 Push하거든요. 이번에는 Exception(Data abort)이 발생했을 때 스택에 어떤 값들을 Push하는 지 점검해 볼께요.아래는 ch_pop_remote_rx_intent() 함수에서 exception이 발생한 콜스택인데요. T...

ARM64- 스택 푸쉬(Stack Push) Userspace -> Kernel Space

유저 스페이스에서 커널 스페이스로 전환하려면 시스템 콜을 호출해야 한다 것은 마르고 닳도록 들었죠?이번에는 ARM64 Architecture에서 EL0 ->EL1로 변환될 시, Stack을 어떻게 Push하는 지 살펴볼께요."rild"란 프로세스의 콜스택을 예를 들어 볼 께요. 잘 보면, 유저 공간에서 sendto란 시스템 콜을 호출했다는 걸 알 ...

ARM64(Aarch64) - Special Register 설정(Trace32)

AArch64 64비트 아키텍쳐에서 설정해야 할 Special Register에 대해서 잠깐 살펴볼께요.우선 커널이 구동될 때의 Exception Level이 1이니까 EL1 모드만 점검하죠.TTBR1_EL1약자는 Translation Table Base Register인데, 가상주소와 물리주소를 변환할 때 쓰이죠.Trace32로 이 레지스터를 설정하고...
1