lookup_processor_type에 processor_id 를 인자로 전달하여 호출한다.
processor_id 는 head.S 에서 저장한 CPU ID 값이며, 이 함수의 호출 결과로 구조체 proc_info_list 에 대한 포인터를 얻는다.
processor_id 는 head.S 에서 저장한 CPU ID 값이며, 이 함수의 호출 결과로 구조체 proc_info_list 에 대한 포인터를 얻는다.
각 전역 변수에 값을 대입한다. elf_hwcap 는 하드웨어 지원사항을 나타낸다.
init_uts_ns.name.machine 를 arch_name, ENDIANNESS 스트링으로 저장한다.
elf_platform 를 elf_name 과 ENDIANNESS 스트링으로 저장한다.
cpu_proc_int 를 호출하는데, processor._proc_init() 로 정의되어 있다.
CPU별로 정의되어 있는 processor_function내에 존재하는 초기화 코드를 수행한다.
CPU별로 정의되어 있는 processor_function내에 존재하는 초기화 코드를 수행한다.
// arch/arm/mm/proc-arm920.S
arm920_processor_functions
// arch/arm/mm/proc-v6.S
v6_processor_functions
두 코드 다 하는 일 없이 바로 리턴한다.
cpu_name = list->cpu_name;
#ifdef MULTI_CPU
processor = *list->proc;
#endif
#ifdef MULTI_TLB
cpu_tlb = *list->tlb;
#endif
#ifdef MULTI_USER
cpu_user = *list->user;
#endif
#ifdef MULTI_CACHE
cpu_cache = *list->cache;
#endif
elf_hwcap = list->elf_hwcap;
'리눅스커널' 카테고리의 다른 글
[ build_mem_type_table ] arch/arm/mm/mmu.c (0) | 2009.10.02 |
---|---|
[ convert_to_tag_list ] arch/arm/kernel/setup.c (0) | 2009.10.02 |
[ setup_arch ] arch/arm/kernel/setup.c (0) | 2009.10.02 |
[ volatile , barrier ] (0) | 2009.10.02 |
Memory Barrier (0) | 2009.10.02 |