怎样增加decompress_kernel参数

ShowMan 2009-07-13 07:17:12
decompress_kernel的原型如下:
ulg decompress_kernel(ulg output_start, ulg free_mem_ptr_p, ulg free_mem_ptr_end_p,
int arch_id)
现在希望增加一个参数ulg last_addr;
变成
ulg decompress_kernel(ulg output_start, ulg free_mem_ptr_p, ulg free_mem_ptr_end_p,
int arch_id,ulg last_addr)

这时候,我想在head.s调用这个函数:
/*
* r0 = decompressed kernel length
* r1-r3 = unused
* r4 = kernel execution address
* r5 = decompressed kernel start
* r6 = processor ID
* r7 = architecture ID
* r8 = atags pointer
* r9-r14 = corrupted
*/
add r1, r5, r0 @ end of decompressed kernel
adr r2, reloc_start
ldr r3, LC1
add r3, r2, r3
1: ldmia r2!, {r9 - r14} @ copy relocation code
stmia r1!, {r9 - r14}
ldmia r2!, {r9 - r14}
stmia r1!, {r9 - r14}
cmp r2, r3
blo 1b

bl cache_clean_flush
add pc, r5, r0 @ call relocation code

/*
* We're not in danger of overwriting ourselves. Do this the simple way.
*
* r4 = kernel execution address
* r7 = architecture ID
*/
wont_overwrite: mov r0, r4
mov r3, r7
bl decompress_kernel
b call_kernel

我应该怎么修改这段arm 代码,让我能够传入第5个参数。。

...全文
188 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ShowMan 2009-07-15
  • 打赏
  • 举报
回复
看来会arm 汇编人还是少, 晚上结贴, 领分的来。
rzsheng 2009-07-15
  • 打赏
  • 举报
回复
关键要弄明白 decompress_kernel()

的参数是怎么使用寄存器的,你所增加的这个第5个参数是使用哪些寄存器,

往这些寄存器里传参数就可以了。
pottichu 2009-07-15
  • 打赏
  • 举报
回复
这个不懂, 来接分的。

不过,实在不明白,楼主为什么会有这样的需求?
或者仅仅是兴趣而已。
hefuhua 2009-07-14
  • 打赏
  • 举报
回复
不东修改汇编的,可以用c语言写个函数,反编译下去掉些废指令应该可行
ShowMan 2009-07-14
  • 打赏
  • 举报
回复
顶上去, 看看可有人会解?
yhf365 2009-07-13
  • 打赏
  • 举报
回复
arm的汇编?
抽象,不知所云...
只能帮定了~
lambert_s 2009-07-13
  • 打赏
  • 举报
回复
这个不懂。。。
只能帮顶了!
顺便学习~~

4,469

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧