内核解压问题 arch/arm/boot/compressed/head.S

时间:2023-02-01 16:34:04
各位大侠
       好!!!

小弟最近在看arch/arm/boot/compressed/head.S。有一处不明,请赐教
请问这句话是什么意思? 为什么要#28?

====================================

                ldr     r4, =zreladdr
#endif

                bl      cache_on

restart:        adr     r0, LC0
                ldmia   r0, {r1, r2, r3, r6, r10, r11, r12}
                ldr     sp, [r0, #28]


====================================
                .align  2
                .type   LC0, #object
LC0:            .word   LC0                     @ r1
                .word   __bss_start             @ r2
                .word   _end                    @ r3
                .word   _edata                  @ r6
                .word   input_data_end - 4      @ r10 (inflated size location)
                .word   _got_start              @ r11
                .word   _got_end                @ ip
                .word   .L_user_stack_end       @ sp
                .size   LC0, . - LC0
=====================================
代码来自高通内核,应该和Upstream差别不大

4 个解决方案

#1


ldr     sp, [r0, #28]  这句话 没搞明白  ,为啥sp,这样就获取到了。。。

#2


我自己顶一顶

#3


应该是 4 * 7 ( r1, r2, r3, r6, r10, r11, r12  7 个寄存器)

#4


正解,太感谢了~

#1


ldr     sp, [r0, #28]  这句话 没搞明白  ,为啥sp,这样就获取到了。。。

#2


我自己顶一顶

#3


应该是 4 * 7 ( r1, r2, r3, r6, r10, r11, r12  7 个寄存器)

#4


正解,太感谢了~