ARM Linux静态映射分析(2)

s3c2410 machine_desc结构体定义如下:
        /* arch/arm/mach-s3c2410/mach-smdk2410.c */
        MACHINE_START(SMDK2410, "SMDK2410") /* @TODO: request a new identifier and switch
                                        * to SMDK2410 */
                /* Maintainer: Jonas Dietsche */
                .phys_io = S3C2410_PA_UART,
                .io_pg_offst = (((u32)S3C24XX_VA_UART) >> 18) & 0xfffc,
                .boot_params = S3C2410_SDRAM_PA + 0x100,
                .map_io = smdk2410_map_io,
                .init_irq = s3c24xx_init_irq,
                .init_machine = smdk2410_init,
                .timer = &s3c24xx_timer,
        MACHINE_END

其中的宏MACHINE_START和MACHINE_END定义如下:
        /*
          * Set of macros to define architecture features. This is built into
          * a table by the linker.
          */
        #define MACHINE_START(_type,_name) \
        const struct machine_desc __mach_desc_##_type \
          __attribute__((__section__(".arch.info.init"))) = { \
                .nr = MACH_TYPE_##_type, \
                .name = _name,

#define MACHINE_END \
        };

其中MACH_TYPE_##_type 为GCC扩展语法中的字符拼接标识,在预编译的时候会用真正的字符代替,比如我们这里就是MACH_TYPE_SMDK2410

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwxfzf.html