按照我的意思,改的话:- call_linux(0,mach_type,boot_mem_base + LINUX_PARAM_OFFSET,to);
- void call_linux(long a0, long a1, long a2,long a3)
- {
- ...
- __asm__(
- "mov r0, %0\n"
- "mov r1, %1\n"
- "mov r2, %2\n"
- "mov r3, %3\n"
- "mov ip, #0\n"
- "mcr p15, 0, ip, c13, c0, 0\n" /* zero PID */
- "mcr p15, 0, ip, c7, c7, 0\n" /* invalidate I,D caches */
- "mcr p15, 0, ip, c7, c10, 4\n" /* drain write buffer */
- "mcr p15, 0, ip, c8, c7, 0\n" /* invalidate I,D TLBs */
- "mrc p15, 0, ip, c1, c0, 0\n" /* get control register */
- "bic ip, ip, #0x0001\n" /* disable MMU */
- "mcr p15, 0, ip, c1, c0, 0\n" /* write control register */
- "mov pc, r3\n"
- "nop\n"
- "nop\n"
- : /* no outpus */
- : "r" (a0), "r" (a1), "r" (a2),"r",(a3)
- : "r0","r1","r2","r3","ip"
- );
- }
复制代码 就是多加一个参数。我的理解肯定有误,还望版主不吝指教。十分感谢! |