boot/compressed/head.S 코드 분석 (2)

다음은 head.S 의 dtb_check_done 및 wont_overwrite label 의 어셈블리 코드를 분석한 것이다.
이 부분은 물리메모리에 로드된 커널 이미지가 압축이 풀린 후의 이미지 위치와 겹치는 부분이 있을 경우 재배치를 수행하는 코드이다.
문서에도 기록했지만, 로드된 이미지의 위치에 따라 재배치의 수행여부를 결정하게 되며, 재배치를 수행한 이후에는 pc 의 위치를 restart label 로 변경하여 이 부분부터 다시 수행하게 된다.
일단 재배치가 한번 수행이 된 후에는 마치 처음부터 재배치가 필요없는 정상적인 위치에 이미지가 로드된 것처럼 restart label 부터의 수행과정을 거치게 된다.
압축해제 이전의 이미지 위치와 압축해제 이후의 이미지 덩어리의 예상 위치에 따라 각각 어떤 분기 과정들을 거쳐야하는지를 유념하고 코드 분석과정을 보기 바란다.

You may also like...

0 0 votes
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x