在arch/arm/boot/compressed/misc.c文件: 307 arch_decomp_setup(); 308 309 makecrc(); 310 *((volatile unsigned long *)0x40E00054) &= (~(3<<28)); //ABING GPAF0_L 311 *((volatile unsigned long *)0x40E0001C) = (1<<14); //ABING GPDR0 312 *((volatile unsigned long *)0x40E00024) = (1<<14); //ABING GPCR0 313 putstr("Uncompressing Linux..."); 314 *((volatile unsigned long *)0x40E00018) = (1<<14); //ABING GPSR0 315 gunzip(); 316 *((volatile unsigned long *)0x40E00024) = (1<<14); //ABING GPCR0 317 putstr(" done, booting the kernel.\n"); 318 return output_ptr; 参考include/asm-arm/arch-pxa/uncompress.h文件访问串口的代码: #define ((volatile unsigned long *)0x40100000)
#define ((volatile unsigned long *)0x40200000)
#define ((volatile unsigned long *)0x40700000)
#define
static void (char )
{
while (!([5] & 0x20));
[0] = ;
}
/*
* This does not append a newline
*/
static void (const char *)
{
while (*) {
(*);
if (* == '\n')
('\r');
++;
}
}可以这样定义: #define __raw_readl(a) (*(volatile unsigned int *)(a)) #define __raw_writel(v,a) (*(volatile unsigned int *)(a) = (v)) #define __raw_readw(a) (*(volatile unsigned short *)(a)) #define __raw_writew(v,a) (*(volatile unsigned short *)(a) = (v)) |
