示例#1
0
void __init s3c_init_cpu(unsigned long idcode,
                         struct cpu_table *cputab, unsigned int cputab_size)
{
    cpu = s3c_lookup_cpu(idcode, cputab, cputab_size);

    if (cpu == NULL) {
        printk(KERN_ERR "Unknown CPU type 0x%08lx\n", idcode);
        panic("Unknown S3C24XX CPU");
    }

    printk("CPU %s (id 0x%08lx)\n", cpu->name, idcode);

    if (cpu->map_io == NULL || cpu->init == NULL) {
        printk(KERN_ERR "CPU %s support not enabled\n", cpu->name);
        panic("Unsupported Samsung CPU");
    }

    cpu->map_io();
}
示例#2
0
文件: init.c 项目: Holong/LinuxKernel
// idcode : samsung_cpu_id, cputab : cpu_ids, cputab_size : ARRAY_SIZE(cpu_ids) = 6
void __init s3c_init_cpu(unsigned long idcode,
			 struct cpu_table *cputab, unsigned int cputab_size)
{
	cpu = s3c_lookup_cpu(idcode, cputab, cputab_size);
	// cpu_ids 배열에서 idcode와 동일한 위치를 찾아낸 뒤 그 주소(cpu_table 구조체)를 반환함.

	if (cpu == NULL) {
		printk(KERN_ERR "Unknown CPU type 0x%08lx\n", idcode);
		panic("Unknown S3C24XX CPU");
	}

	printk("CPU %s (id 0x%08lx)\n", cpu->name, idcode);

	if (cpu->init == NULL) {
		printk(KERN_ERR "CPU %s support not enabled\n", cpu->name);
		panic("Unsupported Samsung CPU");
	}

	if (cpu->map_io)
		cpu->map_io();
		// exynos5_map_io 호출
		// exynos io의 실제 메모리 주소를 가상 메모리 주소에 매핑하고
		// vmlist와 static_vmlist에 등록시킴
}
示例#3
0
void __init s3c_init_cpu(unsigned long idcode,
			 struct cpu_table *cputab, unsigned int cputab_size)
{
	cpu = s3c_lookup_cpu(idcode, cputab, cputab_size);

	if (cpu == NULL) {
		printk(KERN_ERR "Unknown CPU type 0x%08lx\n", idcode);
		panic("Unknown S3C24XX CPU");
	}

	printk("CPU %s (id 0x%08lx)\n", cpu->name, idcode);

	if (cpu->init == NULL) {
		printk(KERN_ERR "CPU %s support not enabled\n", cpu->name);
		panic("Unsupported Samsung CPU");
	}

	/*!!C
	 * arm/mach-exynos/common.c 의 map_desc ... 로 정의
	 * 목적 : cpu io  memory map 의 주소들을 virtual address 맵핑
	 */
	if (cpu->map_io)
		cpu->map_io();
}