RISC-V/레지스터 (4) 썸네일형 리스트형 [RISC-V] tp 레지스터 (Register)의 핵심 정보 - task_struct Background리눅스 커널은 함수와 자료 구조로 구성되어 있다. 자료 구조 중에서 가장 중요한 것은 무엇일까? 정답은 없지만, 많은 커널 개발자들은 task_struct 구조체라고 답할 것이다. task_struct는 프로세스의 속성 정보를 나타내는 구조체이다. task_struct 구조체의 주소만 알면 커널의 대부분의 정보를 확인할 수 있다. 예를 들면: -모든 프로세스의 task_struct 구조체 주소 -모든 프로세스의 콜 스택 -모든 프로세스별로 오픈한 파일 디스크립터 정보그런데 이러한 task_struct 구조체가 범용 레지스터에서 확인될 수 있다면 어떤 생각이 들까? 아마 다음과 같을 것이다: 디버깅 관점: 디버깅을 매우 효율적으로 할 수 있겠다. 보안 관점: 시스템의 중요한 정보를 레지스.. [Linux Kernel] RISC-V: swapper_pg_dir 변수를 이용한 satp 주소 찾기 배경RISC-V 아키텍처에는 여러 가지 CSR(Control and Status Register) 레지스터가 있습니다. 그중 하나가 satp 레지스터입니다. satp 레지스터의 역할은 무엇일까요? 첫 번째(1st) 페이지 테이블 엔트리의 주소를 저장하는 역할을 합니다. 만약 TRACE32 같은 디버깅 장비를 사용하면 satp 레지스터 값을 직접 확인할 수 있습니다. 하지만 TRACE32 없이 리눅스 커널 내부에서 satp 값을 확인하는 방법은 무엇일까요? 이 글에서는 그 방법에 대해서 상세히 다룹니다. 리눅스 커널: swapper_pg_dirsatp 값(첫 번째 페이지 테이블의 엔트리 주소)을 확인하려면 swapper_pg_dir 전역 변수의 가상 주소를 먼저 알아야 합니다. 왜 swapper_pg_di.. [RISC-V] CSR (Control and Status) 레지스터 소개 RISC-V 아키텍처는 시스템의 세부 속성을 설정할 수 있는 CSR(Control and Status) 레지스터를 제공합니다. 다음과 같은 모든 속성은 CSR 레지스터를 통해 설정합니다:익셉션 벡터 베이스 주소 설정MMU를 통한 가상 메모리 설정주요 Privilege Mode에서 트랩되는 방식CSR(Control and Status) 레지스터는 시스템의 주요 속성을 설정하므로 부팅 과정에서 대부분 설정됩니다. CSR 레지스터를 소개했으니 CSR 레지스터에 접근할 수 있는 Privilege Mode에 대해 알아봅시다. Privilege Mode과 CSR 레지스터 CSR 레지스터의 이름을 보면 접두사로 m 혹은 s가 보입니다. 주요 CSR 레지스터의 목록은 아래와 같습니다: Machine Mode: msta.. [RISC-V] 레지스터: 범용 레지스터 RISC-V 아키텍처에서 레지스터를 배우려면 어떤 내용을 알아야 할까요? RISC-V 아키텍처에서는 다음과 같은 레지스터를 제공합니다.범용 레지스터CSRs(Control and Status) 레지스터범용 레지스터먼저 범용 레지스터에 대해 알아 봅시다. 범용 레지스터는 어셈블리 명령어의 입력과 출력을 저장하는 용도로 사용됩니다. 개념 상 C 언어의 변수와 비슷한 개념입니다. 어셈블리 명령어를 분석하실 때 반드시 레지스터를 알아야 합니다. RISC-V 아키텍처에서 정의된 범용 레지스터의 목록은 다음과 같습니다. Armv8 아키텍처와 비슷하게 레지스터의 갯수는 X0에서 X31까지 있습니다. 레지스터의 갯수가 많은 편입니다. 대부분 어셈블리 명령어의 인풋과 출력 결과를 저장하기 위해 사용되는데, 함수가 호출될.. 이전 1 다음