[head-common.S] virt& phys 사이의 offset 구하는 코드 관련해서 문의 드립니다.
글쓴이: songcode78 / 작성시간: 월, 2011/08/22 - 1:59오후
head-common.S 파일에서 아래의 부분을 보면 virt&phys 사이의 offset 을 구하는 코드가 있는데 해당 코드가 어떻게 offset을 구하는지 알 수 없어서 이렇게 질문 드립니다.
코드 상으로는 "4: .long ." 부분의 위치한 실제 어드레스와 "4: .long ."의 값을 빼서 offset을 구하는것 같은데요
실제로 "4: .long ."값이 이 무엇을 의미하는지 모르겠습니다.
고수님들의 도움 부탁드립니다.
__lookup_processor_type:
adr r3, 3f
ldmia r3, {r5 - r7}
add r3, r3, #8
sub r3, r3, r7 @ get offset between virt&phys
add r5, r5, r3 @ convert virt addresses to
add r6, r6, r3 @ physical address space
1: ldmia r5, {r3, r4} @ value, mask
and r4, r4, r9 @ mask wanted bits
teq r3, r4
beq 2f
add r5, r5, #PROC_INFO_SZ @ sizeof(proc_info_list)
cmp r5, r6
blo 1b
mov r5, #0 @ unknown processor
2: mov pc, lr
ENDPROC(__lookup_processor_type)
.align 2
3: .long __proc_info_begin
.long __proc_info_end
4: .long .
.long __arch_info_begin
.long __arch_info_endForums:


댓글 달기