实际包含的宏为:
cpu_sr = os_cpu_save_sr();
os_cpu_save_sr: MRS R0, CPSR; ORR R1,R0,#NO_INT; MSR CPSR,R1;
汇编好像是这样的,把CPRS读到R0,屏蔽FIQ和IRQ后反写回CPSR.
有点不明白.这个宏可以在任务中任何位置使用,为什么调用的时候就敢随便把R0的内容覆盖掉?,还有这里返回给cpu_sr使用的R1还是R0?.
OS_EXIT_CRITICL() os_cpu_restore_sr(cpu_sr); 操作R0能明白.第一个参数是通过R0传递的.可上面那个根本没参数输入阿..
??呵呵.: 求解~
|