FIQ, IRQ 를 Disable 하고, SVC 모드로 한다.
CP15 Register 0 에서 Process ID 를 읽어 온다.
__lookup_processor_type 를 호출하고, 결과를 R10 에 저장한다. 결과가 0 이라면, __error_p 로 분기한다.
__loopup_machine_type 를 호출하고, 결과를 R8 에 저장한다. 결과가 0 이라면, __error_a 로 분기한다.
__create_page_table 를 호출하여, 페이지 테이블을 생성한다.
R13 에 __switch_data 주소를 저장하고, LR 에 __enalbe_mmu 주소를 저장하고, proc_info_list 구조체의 PROCINFO_INITFUNC 으로 PC 값을 바꾼다.
arch 별로 proc-***.S 파일 형태로 구분되어 있는 setup 코드를 수행한다.
ARM920T (arch/arm/mm/proc-arm920.S)
__arm920_setup
V6 (arch/arm/mm/proc-v6.S )
__v6_setup
'리눅스커널' 카테고리의 다른 글
[ __create_page_tables ] /arch/arm/kernel/head.S (0) | 2009.10.02 |
---|---|
[ __lookup_machine_type ] arch/arm/kernel/head-common.S (0) | 2009.10.02 |
[ __lookup_processor_type ] arch/arm/kernel/head-common.S (0) | 2009.10.02 |
ARM Instruction (0) | 2009.10.02 |
Linux Kernel 분석 - 준비 (0) | 2009.10.02 |