본문 바로가기

분류 전체보기16

Intel pin 간단하게 정리하기 Intel Pin(https://www.intel.com/content/www/us/en/developer/articles/tool/pin-a-dynamic-binary-instrumentation-tool.html) Pin 은 intel이 개발한 개발용 플랫폼이다. 이것은 어플리케이션이 구동될때, instruction 레벨에서 세세히 보면서 다양하게 어플리케이션을 씹고 뜯고 맛볼 수 있다. 개발자는 pintool이라는 분석프로그램을 짜서, 특정 instruction이 처리되기전, 또는 후에 원하는 코드를 집어 넣을수도 있고, instruction들의 operand를 불러와서 자체적으로 처리할 수도 있다. pin tool의 메커니즘을 간단하게 설명하자면, 분석할 어플리케이션을 pin용 가상머신위에 돌린다.. 2022. 4. 16.
ARMv8에서 Virtual address를 통해 cache flush 시키기3 2편에서 분석한 결과 해당 어셈블리를 그대로 쓰면 될 것이라고 판단했다. 먼저 개인적인 호기심으로 현재 내 시스템에서 clidr_el1, ccsid_el1(level1), ccsid_el1(level2)가 궁금해서 asm 코딩을 통해서 뽑아보기로 하였다. 필자의 실험 환경은 xilnx의 ZCU102보드이며, 해당 보드는 ARM cortex-A53 프로세서를 사용한다. cortex-A53은 16-way의 1MB L2 캐시를 가지고 있다고 스펙에 적혀있다[1]. 과연 진짜 그럴까? 출력: clidr: 0xa200023, ccsid_l1: 0x700fe01a, ccsid_l2: 0x707fe07a 1. CLIDR_EL1 종류 값 설명 ICB 000(0) 비공개 LoUU 001(1) 2레벨부터 unificati.. 2020. 3. 25.
ARMv8에서 Virtual address를 통해 cache flush 시키기2 1편에서 적었던 참고 링크 중에 android kernel source로 dcache flush all을 위한 어셈블리 코드가 있었고, 해당 코드를 먼저 해당 코드를 분석해보자고 한다 참조: https://android.googlesource.com/kernel/msm.git/+/android-msm-anthias-3.10-lollipop-wear-release/arch/arm64/mm/cache.S 1.1. flush_dcache_all ENTRY(__flush_dcache_all) dsbsy// ensure ordering with previous memory accesses mrsx0, clidr_el1// read clidr andx3, x0, #0x7000000// extract loc from.. 2020. 3. 21.
ARMv8에서 Virtual address를 통해 cache flush 시키기1 [환경] ARM cortex-A53 quad core (64bit), r0p4[2] Linux 4.9.0 - armv8 목표: VA나 PFN을 통해서 dcache에 해당 데이터를 flush(clean and invalidate) 기존에 내가 사용하던 cache flush 함수와 kernel(arch/arm64/include/asm/cacheflush.h)에서 볼 수 있는 함수들 중에 쓸만한 게 없다. [현 상황] 나는 user space에서 사용되던 데이터를 D-cache에서 flush하고 싶은데, kernel 안의 함수를 보면, __flush_dcache_area(내가 기존에 작동하는 줄 알고 쓰고 있던것)은 kaddr용이였으며, user data를 flush할 수 없는 것으로 보인다. 1. arch/.. 2020. 3. 18.