AARCH64

포스트: 6|조회수: 0|ARTIFACT
Items

Posts

6 posts

ARM64 - Exception 시 Stack Push

Guillermo Austin Kim|2017년 12월 25일

유저 공간에서 시스템 콜을 호출할 때 유저 공간에서 돌던 레지스터를 커널 공간 스택 Bottom Address 근처에 Push하거든요. 이번에는 Exception(Data abort)이 발생했을 때 스택에 어떤 값들을 Push하는 지 점검해 볼께요. 아래는 ch_pop_remote_rx_intent() 함수에서 exception이 발생한 콜스택인데요. Trace32로 잡았어요. 이 때 Stack 정보 좀 살펴볼께요.-000|do_mem_abort()-001|el1_da(asm) -->|exception-002|ch_pop_remote_rx_intent()-003|glink_tx_common()-004|glink_txv()-005|ipc_router_glink_xprt_write()-006|msm_

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

Guillermo Austin Kim|2017년 12월 24일

AArch64 64비트 아키텍쳐에서 설정해야 할 Special Register에 대해서 잠깐 살펴볼께요.우선 커널이 구동될 때의 Exception Level이 1이니까 EL1 모드만 점검하죠. TTBR1_EL1약자는 Translation Table Base Register인데, 가상주소와 물리주소를 변환할 때 쓰이죠. Trace32로 이 레지스터를 설정하고 싶으면 아래 커맨드를 써야 하지오.Data.Set SPR:0x30201 %Quad 0x82ba1000 // TTBR1_EL1 TCR_EL1Translation Control Register의 약자인데 Stage 1 가상 주소 Translation 시 필요한 Translation 베이스 레지스터 정보를포함하고 있어요.Trace32로 이 레지스터를