Armv8 Register & Context

EEEFFEE·2023년 11월 22일
0

Armv8 Architecture

목록 보기
1/15

23.11.22 최초 작성

1. Register

1.1 범용 레지스터

  • X0 ~ X30 : 연산 시 데이터를 저장하는 공간

1.2 스페셜 레지스터

  • XZR / WZR : 제로 레지스터 (0을 저장해놓는 레지스터)

  • PC : 프로그램 카운터

  • SP_EL<N> (0~3)

    • Exception Levelstack pointer
    • Exception Level에서 프로세스가 실행될 때 프로세스의 stack 공간 주소를 가리킴
  • SPSR_EL<N> (1~3)

    • Exception Levelprogram status register
    • 이전 Exception Levelprogram status 저장
  • ELR_EL<N> (1~3)

    • Exception Levelexception link Resgiser
    • 이전 Exception Level로 복귀할 때 다음에 수행 할 명령어의 주소 정보(PC)를 저장

2. Context

  • context switching시 다음과 같은 구조체를 참고해 실행 됨
  • 스레드의 정보를 담고 있는 thread_struct구조체 내부에 레지스터의 정보를 담는 cpu_context구조체가 존재함
struct thread_struct{
	struct cpu_context cpu_context;
	...
}

struct cpu_context{
	unsigned long X19;
    unsigned long X20;
    unsigned long X21;
    ...
    unsigned long fp;
    unsigned long sp;
    unsigned long pc;
}

3. AAPCS

0개의 댓글