In Misc. C, the decompress_kernel function has the following four parameters:
Output_start: 40008000, free_mem_ptr_p: SP, free_mem_ptr_end_p: SP + 64 K, arch_id: 9fc, it may be more suitable to change to mach_id. The machine number is used when mach_id corresponds to Chinese characters)
The final solution is that the image is placed at 40008000 points.
Unicore32-linux-objcopy-O Binary-R. Note-R. Note. GNU. Build-ID-R. comment-s vmlinux ARCH/Unicore/boot/Image
Call kernel: B call_kernel
Call_kernel:
B. l cache_clean_flush
B. l cache_off
MoV r0, #0 @ must be zero
MoV R1, R7 @ restore architecture number
MoV R2, R8 @ restore atags pointer
MoV PC, R4 @ call Kernel
The write_back policy is used during dcache initialization. Therefore, some data is extracted in the cache but not in the memory. Therefore, cache_clean_flush is performed, and then the cache is disabled. The cache operation is performed in the kernel, the parameters passed to the kernel are: R0: 0, R1, R7: 0x9fc, R2, and R8: 0x40000100. Absolutely jump to R4: start execution at 40008000
Unicore/kernel/head. s