核心分析2(setup arch)

2021-10-11 02:27:17 字數 1980 閱讀 6418

確定當前核心的機器碼,然後確定當前核心所用的cpu

機器碼的描述符。裡面包含了機器平台的相關資訊。

struct machine_desc ;
static void __init setup_processor(void)

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

printk("cpu: %s [%08x] revision %d (armv%s), cr=%08lx\n",

cpu_name, read_cpuid_id(), read_cpuid_id() & 15,

proc_arch[cpu_architecture()], cr_alignment);

sprintf(init_utsname()->machine, "%s%c", list->arch_name, endianness);

sprintf(elf_platform, "%s%c", list->elf_name, endianness);

elf_hwcap = list->elf_hwcap;

#ifndef config_arm_thumb

elf_hwcap &= ~hwcap_thumb;

#endif

cacheid_init();

cpu_proc_init();

}

含義:通過machine_arch_type來查詢正確機器碼描述符,得到正確的cpu資訊

查詢machine_arch_type的定義命令:grep 「machine_arch_type」 * -nr

定義machine_arch_type的檔案: generated/mach-types.h

含義:通過所傳cpu的機器碼到核心段中尋找相對應的機器碼結構體描述符。

machine_arch_type

__lookup_machine_type

.align	2

3: .long __proc_info_begin

.long __proc_info_end

4: .long .

.long __arch_info_begin

.long __arch_info_end

__lookup_machine_type:

adr r3, 4b

ldmia r3,

sub r3, r3, r4 @ get offset between virt&phys

add r5, r5, r3 @ convert virt addresses to

add r6, r6, r3 @ physical address space

1: ldr r3, [r5, #machinfo_type] @ get machine type

teq r3, r1 @ matches loader number?

beq 2f @ found

add r5, r5, #sizeof_machine_desc @ next machine_desc

cmp r5, r6

blo 1b

mov r5, #0 @ unknown machine

2: mov pc, lr

endproc(__lookup_machine_type)

Linux核心啟動 setup arch

bootloader 可以向linux 傳遞引數,編譯核心時也可以配置boot options 除錯中使用的u boot bootargs如下 noinitrd root dev mtdblock3 rw console ttysac0,115200 init linuxrc mem 64m 核心版...

(2)核心配置的分析

我們從網絡卡的配置,來分析 vim config dm9000 593 594 ethernet 10 or 100mbit 595 596 config net ethernet y 597 config mii y 598 config smc91x is not set 599 config ...

mysql核心分析文件 mysql 核心分析

mysql從功能上來講,並不完善,適用於oltp,不適用於olap,在開源資料庫而言,對於重要的資料儲存的話,而是建議採用postgresql 下面把mysql和postgresql從核心級做一些對比分析,找出mysql快,但功能不足的方面.估計要很長時間才能寫完,每天看到哪寫到哪.1.mysql是...