ARM64 inline asm 포팅 가이드 (커널/Clang 포팅 관점)
ARM64(AArch64)에서 inline asm은 “문법이 어렵다”보다 컴파일러가 더 엄격하고 최적화가 더 공격적이라서 사고가 난다.특히 벤더 커널을 Clang으로 옮길 때는 constraint 선택 + clobber + barrier 3개가 대부분의 원인이다. 이 글에서는 ARM64에서…
ARM64(AArch64)에서 inline asm은 “문법이 어렵다”보다 컴파일러가 더 엄격하고 최적화가 더 공격적이라서 사고가 난다.특히 벤더 커널을 Clang으로 옮길 때는 constraint 선택 + clobber + barrier 3개가 대부분의 원인이다. 이 글에서는 ARM64에서…
이 글에서는 Linux 커널 기준으로 자주 사용하는 inline asm constraint를 정리한다. GCC + Clang 공통 기준으로, 특히 Clang에서 주의해야 할 포인트를 포함한다. 1. 기본 구조 asm volatile ( "asm template"…
Linux 커널은 전통적으로 GCC로 빌드되어 왔다. 하지만 최근 몇 년간 Clang / LLVM 기반 빌드가 빠르게 확산되었다. 현재는 둘 다 “정식 지원” 상태이며, 차이는 “지원 여부”가 아니라 특성의 차이에 가깝다.…
이 글은 Ubuntu 환경에서 Clang / LLVM 툴체인을 이용해 Linux 커널을 실제로 빌드하는 방법을 단계별로 정리한다. Clang/LLVM 툴체인 설치는 아래 글을 먼저 확인한다. https://junorionblog.co.kr/linux-%ec%bb%a4%eb%84%90-clang-llvm-%ed%88%b4%ec%b2%b4%ec%9d%b8-%ec%a4%80%eb%b9%84%ed%95%98%ea%b8%b0/ Ubuntu 커널 빌드에 대한건 아래 글을…
이 글은 리눅스 커널을 Clang/LLVM 툴체인으로 빌드하기 위한 실전 가이드다.LLVM=1 기반의 표준 빌드 플로우, 크로스 컴파일(arm64 포함), LLD/IAS, BTF(pahole), LTO까지 한 번에 정리한다. 커널에서 말하는 “LLVM 빌드”의 의미 커널 문서에서…
Clang/LLVM은 컴파일러 도구 체인을 구성하는 기술 묶음이다. LLVM: 컴파일러를 만들기 위한 공통 기반 인프라 Clang: LLVM 위에서 동작하는 C / C++ / Objective-C 컴파일러 프론트엔드 LLVM ? LLVM은 원래 Low…
Ubuntu에서 해상도 변경하려고 할 때 2560x1440 해상도가 없는 경우가 있다. 이 글에서는 Ubuntu에서 2560x1440 해상도를 수동으로 추가하는 방법을 간단하게 정리한다. (예: HDMI-1 출력 기준) 1. 현재 연결된 디스플레이 확인 xrandr…
현재 Ubuntu 26.04 LTS는 2026년 4월 Snapshot1은 개발 단계 이미지다. 실사용 PC, 운영 환경 설치는 권장하지 않는다. 4월에 정식 버전이 릴리즈되면 설치하도록 하고, 이 글에서는 가상머신에서 테스트용 설치를 전체로 설치하는…
Ubuntu 26.04 LTS 는 캐노니컬(Canonical)이 제공하는 차기 장기 지원(Long Term Support) 버전이다. Ubuntu 26.04 LTS의 정식 코드네임은 “Resolute Raccoon”이다. Resolute: 단호한, 흔들리지 않는 Raccoon: 환경 적응력이 뛰어난 동물 LTS 릴리스답게…
quilt는 여러 개의 패치를 스택(stack) 형태로 관리하는 도구다.각 패치는 순서대로 쌓이며, 위에 있는 패치가 아래 패치의 변경 내용을 기반으로 동작한다. 커널 개발에서 quilt를 쓰는 이유는 명확하다. 패치 단위로 작업을 나눌…