[커널 20차] 28주차
2023.11.19 00:44
2023.11.18 (28주차) - 약 8명 참여
head.S: init_cpu_task 부터 __primary_switched의 set_cpu_boot_mode_flag 분기 전까지 진행
1. init_cpu_task x4, x5, x6
- 인자 값
x4: init_task의 주소
x5, x6: temp
1) per_cpu를 간단하게 살펴보았다.
Cpu 별로 독립적인 메모리 공간을 제공하는 것을 per cpu 변수라 한다.
http://jake.dothome.co.kr/per-cpu/
https://www.bhral.com/post/가볍게-살펴보는-per-cpu
2) sp_el0가 init_task의 시작 주소를 가리키는 것
https://github.com/torvalds/linux/commit/6cdf9c7ca687e01840d0215437620a20263012fc
3) tpidr에 cpu_offset을 저장하는 것
- tpidr 을 사용하는 이유는 tpidr의 정해진 용도가 아닌, 접근 속도를 빠르게 하기 위해 스크래치 레지스터로 활용하는 것 같다.
- 1차 및 2차 부트 경로의 일관성과 관련있는 것 같고, smp_prepare_boot_cpu()에서 CPU0의 오프셋을 다시 초기화해야한다고 나와있다.
https://github.com/iamroot20/linux-stable/commit/3d8c1a013d78f32ee266097496cbd89b734b5fcb
cf) pt_regs.stackframe : 마지막 프레임 (backtrace)
cf) TSK_TI_SCS_SP (/arch/arm64/kernel/asm-offsets.c) thread_info.scs_sp
cf) __per_cpu_offset (mm/percpu.c)
2. vbar_el1 설정
(arch/arm64/kernel/entry.S)
3. Arm64 함수호출규약
(__primary_switched 중)
stp x29, x30, [sp, #-16]! mov x29, sp |
427 라인과 455 라인. 첫번째 추가
https://github.com/iamroot20/linux-stable/commit/60699ba18b69ff210ed0304bc23f6c9d11d27a72
424 라인과 465 라인. 변경
https://github.com/iamroot20/linux-stable/commit/8e334d729bc4787f728e9e5abc91649f131124ff
- 함수 콜 스택을 그려보는 시간을 가짐. 아래의 C 코드
#include <stdio.h> void func3() { int a, b, c; a = 20; b = 3; c = a * b; } void func2() { int a, b, c; a = 50; b = 10; c = 50 - 10; func3(); } void fun1() { int a, b, c; a = 100; b = 100; c = a + b; func2(); } int main(void) { func1(); return 0; } |
4. FDT 시작 주소 보관 (fdt_pointer)
5. kimage_voffset
kimage_vaddr : kaslr offset이 더해진 커널 가상 주소의 시작
x0 : _text, 커널 물리 주소 시작
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
공지 | [공지] 스터디 정리 노트 공간입니다. | woos | 2016.05.14 | 626 |
248 | [커널 19차] 103 주차 | Min | 2024.04.28 | 4 |
247 | [커널 20차] 48주차 | 무한질주 | 2024.04.25 | 22 |
246 | [커널 19차] 102 주차 | Min | 2024.04.20 | 37 |
245 | [커널 19차] 101 주차 | Min | 2024.04.13 | 63 |
244 | [커널 19차] 100 주차 | Min | 2024.04.13 | 16 |
243 | [커널 19차] 99 주차 | Min | 2024.03.30 | 82 |
242 | [커널 19차] 98 주차 | Min | 2024.03.23 | 55 |
241 | [커널 19차] 97 주차 | Min | 2024.03.16 | 50 |
240 | [커널 19차] 96 주차 | Min | 2024.03.14 | 32 |
239 | [커널 19차] 95 주차 [2] | Min | 2024.03.03 | 111 |
238 | [커널 20차] 32주차 | brw | 2023.12.16 | 386 |
237 | [커널 20차] 29주차 | brw | 2023.11.27 | 161 |
236 | [커널 20차] 27주차 | brw | 2023.11.21 | 86 |
235 | [커널 20차] 26주차 | brw | 2023.11.21 | 48 |
» | [커널 20차] 28주차 | 이민찬 | 2023.11.19 | 64 |
233 | [커널 20차] 25주차 | 이민찬 | 2023.10.30 | 120 |
232 | [커널 20차] 24주차 | 이민찬 | 2023.10.22 | 743 |
231 | [커널 20차] 23주차 | 이민찬 | 2023.10.14 | 81 |
230 | [커널 20차] 22주차 | 이민찬 | 2023.10.08 | 76 |
229 | [커널 20차] 21주차 | 이민찬 | 2023.09.23 | 116 |
.