[커널 17차 A조] 13주차

2020.11.21 21:42

주영 조회 수:101

2020년 11월 21일

 

linux version : mainline 5.9

 

head.S 종료

 

SYM_FUNC_START_LOCAL(__primary_switched)

.macro kernel_ventry, el, label, regsize = 64

http://jake.dothome.co.kr/arm64-vector/

TBNZ x0, #THREAD_SHIFT를 하는 이유:

관련 commit: 872d8327ce8982883b8237b2c320c8666f14e561

TPIDRRO_EL0, EL0 Read-Only Software Thread ID Register

스택 오버플로우 발생 시, 오버플로우 스택 생성

 

__primary_switched

X29에는 값이 없으므로 0으로 넣는다. (함수 콜을 한 적이 없으므로)

관련 커밋 60699ba18b69ff210ed0304bc23f6c9d11d27a72

 

__efistub_memset        = __pi_memset;

기존에는 memset을 사용하지 않고, 직접 반복문을 사용하는 식으로 BSS를 초기화했는데, 이제 memset을 사용한다.

 

TST X23, ~(MIN_KIMG_ALIGN - 1) - 상위 비트가 0이라면 kaslr_early_init()함수를 실행하지 않았다는 의미이다.

즉, primary_switched를 처음 실행한 것이이다.

 

CONFIG_RANDOMIZE_BASE이 설정되어 있고 Randomize가 되어 있지 않으면

 

kaslr_early_init으로 진입하여, KASLR을 위한 무작위 값을 x23에 update 한다.

 

HEAD.S 종료

 

자료

https://docs.google.com/presentation/d/1mg9ZJGTZOdFBgcrqNyp_-M_dReu5wP59esIury_U57Y/edit?usp=sharing

 

번호 제목 글쓴이 날짜 조회 수
공지 [공지] 스터디 정리 노트 공간입니다. woos 2016.05.14 627
248 [커널 19차] 103 주차 Min 2024.04.28 7
247 [커널 20차] 48주차 무한질주 2024.04.25 23
246 [커널 19차] 102 주차 Min 2024.04.20 38
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 387
237 [커널 20차] 29주차 brw 2023.11.27 161
236 [커널 20차] 27주차 brw 2023.11.21 86
235 [커널 20차] 26주차 brw 2023.11.21 48
234 [커널 20차] 28주차 이민찬 2023.11.19 64
233 [커널 20차] 25주차 이민찬 2023.10.30 120
232 [커널 20차] 24주차 이민찬 2023.10.22 746
231 [커널 20차] 23주차 이민찬 2023.10.14 81
230 [커널 20차] 22주차 이민찬 2023.10.08 76
229 [커널 20차] 21주차 이민찬 2023.09.23 116
XE Login