\linux-4.4.202\arch\arm\kernel\head-common.S
/*确定r2 指针的内容有效性。需要检查指针对齐,是否在在物理RAM的前16k中,以及ATAG_ CORE标记是第一个
并且存在的。如果选择了CONFIG_OF_FLATTREE
,则它也将接受一个dtb指针。未来的版本此功能的可能对物理地址更宽容,并且
*如果需要的话,也可以移动ATAGS块。
*返回:
*r2:有效的atags指针、有效的dtb指针或零
*r5、r6 已损坏
*/
__vet_atags:
tst r2, #0x3 @ aligned?
bne 1f
ldr r5, [r2, #0]
#ifdef CONFIG_OF_FLATTREE
ldr r6, =OF_DT_MAGIC @ is it a DTB?
cmp r5, r6
beq 2f
#endif
cmp r5, #ATAG_CORE_SIZE @ is first tag ATAG_CORE?
cmpne r5, #ATAG_CORE_SIZE_EMPTY
bne 1f
ldr r5, [r2, #4]
ldr r6, =ATAG_CORE
cmp r5, r6
bne 1f
2: ret lr @ atag/dtb pointer is ok
1: mov r2, #0
ret lr
ENDPROC(__vet_atags)