목록분류 전체보기 (2)
블로그
kernel v5.1 (arch/arm64/mm/cache.S) __inval_dcache_area는 특정 메모리 영역에 해당하는 cache line을 무효화 하는 프로시저이다. __inval_dcache_area는 입력된 주소가 캐시라인에 대하여 정렬되어있지 않더라도 모든 주소에 해당하는 캐시라인을 무효화 한다. /* *__inval_dcache_area(kaddr, size) * * Ensure that any D-cache lines for the interval [kaddr, kaddr+size) * are invalidated. Any partial lines at the ends of the interval are *also cleaned to PoC to prevent data loss. *..
다음 소스코드는 linux ARM64 kernel v5.1의 소스코드이다. preserve_boot_args는 부트로더로부터 전달된 인자인 x0, ... , x3 레지스터를 저장하는 프로시저이다. x0는 FDT(Flatten Device Tree)의 주소 값을 담고 있다. mov x21, x0 x21번 레지스터에 x0값을 복사한다. adr_l x0, boot_args adr_l, dst, sym 은 pseudo operation으로 symbol(sym)의 주소 값을 pc에 대한 offset형태인 상대 주소 값의 형태로 dst레지스터에 저장한다. 따라서 다음 명령어는 x0레지스터에 boot_args의 상대 주소를 저장한다. stp x21, x1, [x0] stp는 Store pair of registers..