/************使能中断**********************/
enable_interrupts ();
enable_interrupts 函数在lib_arm/interrupts.c中定义:
/* enable IRQ interrupts */
void enable_interrupts (void)
{
unsigned long temp;
__asm__ __volatile__("mrs %0, cpsr\n"
"bic %0, %0, #0x80\n"
"msr cpsr_c, %0"
: "=r" (temp)
:
: "memory");
}
上面的函数使用一段内嵌汇编代码将CPSR寄存器中的禁止/使能中断位清零,也就是打开了中断。
if ((s = getenv ("loadaddr")) != NULL) {
//获得环境变量load_addr的值
load_addr = simple_strtoul (s, NULL, 16);
}
/******************网络初始化*********************************/
#if defined(CONFIG_CMD_NET)
#if defined(CONFIG_NET_MULTI)
puts ("Net: ");
//打印网卡信息,就是UBOOT刚上电时打印的那个Net:
#endif
eth_initialize(gd->bd);
//初始化网卡
/****************跳转到main_loop**************************************/
for (;;) {
main_loop ();
}