1. Using arm-Linux-GCC 4.3.2 to compile the u-boot-1.1.6 appears in function' _ aeabi_ldiv0 ':
(. Text + 0x8): Undefined reference to 'raise '...
Compile u-boot-1.1.6 usage
Arm-Linux-GCC 3.4.5.
Other related reading
1) http://www.arm9home.net/simple/index.php? T1960.html
2) http://kongweile.iteye.com/blog/1576113 (ABI and Eabi)
2. # define declare_global_data_ptr register volatile gd_t * gd asm ("R8 ")
This statement tells the compiler to use the R8 register to store the gd_t pointer GD, that is, this definition declares a pointer and specifies its storage location.
Register indicates that the variable is placed in the machine register
Volatile is used to specify the value of a variable that can be modified asynchronously by an external process.
And the pointer is initialized in start_armboot () (board. C:
/* Pointer is writable since we allocated a register for it */
GD = (gd_t *) (_ armboot_start-example _malloc_len-sizeof (gd_t ));
In this way, GD points to an available memory address.
Original article: http://hi.baidu.com/rwen2012/item/783c47cf40d23427e80f2e51
3. _ ASM _ volatile _ ("": "Memory ");
This is the GCC Embedded Assembly, see: http://topic.csdn.net/u/20090521/11/35609357-57b9-4c7c-af6a-04a76eef49a3.html