ARM64 CPU Context Switch

아띨라 2022.07.24 13:02 조회 수 : 509

ARMv8 Linux Context Switch  대해서 공부하고 있습니다.

 

코드는 아래와 같습니다.

 

ENTRY(cpu_switch_to)
    mov    x10, #THREAD_CPU_CONTEXT
    add    x8, x0, x10
    mov    x9, sp
    stp    x19, x20, [x8], #16        // store callee-saved registers
    stp    x21, x22, [x8], #16
    stp    x23, x24, [x8], #16
    stp    x25, x26, [x8], #16
    stp    x27, x28, [x8], #16
    stp    x29, x9, [x8], #16
    str    lr, [x8]
    add    x8, x1, x10
    ldp    x19, x20, [x8], #16        // restore callee-saved registers
    ldp    x21, x22, [x8], #16
    ldp    x23, x24, [x8], #16
    ldp    x25, x26, [x8], #16
    ldp    x27, x28, [x8], #16
    ldp    x29, x9, [x8], #16
    ldr    lr, [x8]
    mov    sp, x9
    msr    sp_el0, x1
    ret
ENDPROC(cpu_switch_to)

 

질문 1,  Context Switch  시에 왜  Callee Register 하는 이유가 있을 까요?

PCS(Procedure Call Standard)나 ABI(Application Binary Interface) 등을 참고 하라는데 이해가 안되서요.

Task Context 라는 것이 어찌 보면 Sequence of function 이고, Callee Register 해도  Task Context 가 유지 되나요?

이전 ARM 에서는 R0 ~ R15 모두 했던 걸로 기억하는데요. 정확히 이해가 안됩니다.

 

질문 2,  PSTATE 는 왜 안하는지 모르겠어요.

 이전  ARM Core 에 비하여 Condition Flag를 관여하는 Instruction 이 적어진 것 알겠는데, 일부는 있던데요. 이런  Instruction 사이에 Context Switch 가 있어나면 어떻게 되는 것인가요? 

 

공부하는데 이해가 안되는 부분이어서 질문 남겨 봅니다. 의견 주시면 감사하겠습니다.

번호 제목 글쓴이 날짜 조회 수
공지 [공지] 프로그래밍 관련 Q&A 게시판 입니다. woos 2016.04.09 22254
517 alloc과 free함수에 대해서 질문입니다. [1] 정재훈 2011.06.28 93672
516 안드로이드 system 폴더안의 파일을 인식못하는데.. [5] 김영일 2011.04.14 69704
515 x86에서 ZONE_DMA 영역의 사용 [1] 홍문화 2011.05.02 58346
514 커널에서 page alloc에 관해서 [1] 미다리로23 2017.02.05 34580
513 디바이스 드라이버 모듈에서 작성한 함수를 커널에서 사용하는 방법 [1] 개짖는소리 2017.02.06 27052
512 Linux kernel의 CFS(Completely Fair Scheduling) 스케줄러에서 time slice 구하는 방법? [10] 김재호 2010.04.30 25229
511 "만들면서 배우는 OS..." 4장 kernel.asm 중 idtr 설정 질문드립니다 쿨쿨 2013.06.18 24964
510 리눅스 스케줄러 관련 [9] 홍문화 2011.02.23 22949
509 NFS NAS SAN 이란 무엇인가? file 박은병 2010.04.13 21882
508 s3c2440기반의 리눅스 커널 분석 중 MM관련 질문입니다. 유태경 2007.09.02 21523
507 /dev 폴더에 있는 node파일 중에서 어떤 것을 open해야 플래쉬를 사용할 수 있을까요? [1] 박종주 2012.02.17 19849
506 sparsemem에 대한 질문이 있습니다. [5] 안정모 2010.03.20 19719
505 16기 리눅스 커널 스터디 C조 18주차 질문입니다. [3] cien 2019.10.12 18832
504 tty, tty0, console, vc 는 각각 뭐하는 디바이스인지? [3] 이창만 2008.12.04 18557
503 ARM A8 이상의 프로세서를 공부할 때 스터디 방향 [4] 유강희 2011.06.15 18520
502 임베디드 OS 만들기 내용과 관련하여 문의드립니다. [5] 송인재 2010.03.25 18321
501 far call 이란 무엇인가요? [4] 박한범 2010.04.13 17841
500 파일시스템에 관한 질문(Htree [6] 사앙조 2017.05.22 17076
499 SMP관련 질문입니다. [2] 컴퓨터 2017.04.13 16586
XE Login