文章目录
-
-
-
- kernel
-
- include
-
-
- generated目录
- debug目录
- asm目录
- uapi目录
- lib
- mm
-
-
- v6处理器 相关
- cache & tlb
- 异常
- 页表相关
- 其他
- mach-s3c
-
-
- 板级整体描述
- cpu
- pm
- 内存
- MMC
- 其他设备
boot : 压缩相关, 不考虑解读
lib : 底层库相关,咱不考虑解读
---
include : 各种 inline 函数, 各种宏
asm debug generated uapi
kernel :
mm :
mach-s3c :
kernel
linux_simple/arch/arm$ l kernel/
asm-offsets.c devtree.c entry-header.S irq.c ptrace.c signal.h suspend.c time.c
atags.h elf.c head-common.S Makefile reboot.c sigreturn_codes.S sys_arm.c traps.c
atags_parse.c entry-armv.i head.S opcodes.c reboot.h sleep.S tcm.c unwind.c
bugs.c entry-armv.S hyp-stub.S phys2virt.S setup.c smccc-call.S
debug.S entry-common.S io.c process.c signal.c stacktrace.c
entry
entry-armv.S : 非CONFIG_CPU_V7M 的 PL1异常向量表(包括mmu开启下的reset异常)
: __pabt_invalid/__dabt_invalid/__irq_invalid/__und_invalid
:__dabt_svc/__irq_svc/__und_fault/__und_svc/__pabt_svc/__fiq_svc
:__fiq_abt
:__dabt_usr/__irq_usr/__und_usr/__und_usr_fault_32/__und_usr_fault_16/__pabt_usr/__fiq_usr
:ret_from_exception/__switch_to
:vector_\name
:fp_enter/no_fp
entry-common.S : 非CONFIG_CPU_V7M 和 CONFIG_CPU_V7M 异常共同部分
:ret_fast_syscall/ret_to_user_from_irq/ret_to_user/ret_from_fork/
:vector_swi
:sys_syscall/sys_sigreturn_wrapper/sys_rt_sigreturn_wrapper/sys_statfs64_wrapper/sys_fstatfs64_wrapper
:sys_mmap2/sys_oabi_pread64/sys_oabi_pwrite64/sys_oabi_truncate64/sys_oabi_ftruncate64/sys_oabi_readahead
entry-header.S : 被 entry-armv.S 和 entry-common.S 包含
: store_user_sp_lr/load_user_sp_lr/restore_user_regs
: ct_user_exit/ct_user_enter
: invoke_syscall
: svc_exit/svc_exit_via_fiq
: zero_fp/alignment_trap
head.S : 非nommu的reset PL1异常入口(mmu关闭下的reset异常)
: stext/__create_page_tables/__enable_mmu/__turn_mmu_on
: secondary_startup_arm/secondary_startup/__secondary_switched
: __fixup_smp/__do_fixup_smp_on_up/fixup_smp
head-common.S : 非nommu 和nommu 的 reset PL1异常入口公共部分
: __vet_atags/__mmap_switched/
: lookup_processor_type/__lookup_processor_type
:__error_lpae/__error_p/__error
irq.c : PL1 irq异常 C代码部分
:arch_probe_nr_irqs/arch_show_interrupts
:asm_do_IRQ/handle_IRQ/init_IRQ
traps.c : PL1 其他异常 C代码部分
:__div0/
:__pgd_error/__pmd_error/__pte_error
:__readwrite_bug/bad_mode/dump_backtrace_entry/dump_backtrace_stm/is_valid_bugaddr/show_stack
:abort/baddataabort/do_undefinstr
:arm_syscall/
:die/arm_notify_die
:early_trap_init/trap_init/register_undef_hook/unregister_undef_hook
signal.c :
do_work_pending/do_signal/handle_signal
sys_rt_sigreturn/sys_sigreturn/setup_return
setup_sigframe/get_sigframe/restore_sigframe
setup_frame/setup_rt_frame/get_signal_page
sigreturn_codes.S : sigreturn_codes
---
smccc-call.S :
hvc : hypervisor call,os 调用hypervisor
smc : secure monitor call ,os or ypervisor 调用 secure monitor
hyp-stub.S : PL2异常向量表
:__boot_cpu_mode/__hyp_stub_install/__hyp_stub_install_secondary/__hyp_stub_do_trap
:__hyp_set_vectors/__hyp_soft_restart/__hyp_stub_vectors
---
sys_arm.c : sys_arm_fadvise64_64
debug
bugs.c
: check_other_bugs/check_bugs
debug.S
:debug_ll_addr
:printch/printascii/printhex2/printhex4/printhex8
:addruart_current
ptrace.c
:arch_ptrace
:clear_ptrace_hw_breakpoint/flush_ptrace_hw_breakpoint
:ptrace_break/ptrace_disable
:regs_query_register_name/regs_query_register_offset/regs_get_kernel_stack_nth/regs_within_kernel_stack
:syscall_trace_enter/syscall_trace_exit/task_user_regset_view
stacktrace.c
:save_stack_trace/save_stack_trace_regs/save_stack_trace_tsk
:unwind_frame/walk_stackframe
unwind.c
:__aeabi_unwind_cpp_pr0/__aeabi_unwind_cpp_pr1/__aeabi_unwind_cpp_pr2
:unwind_backtrace/unwind_frame/unwind_table_add/unwind_table_del
opcodes.c
:arm_check_condition
其他
asm-offsets.c : 结构体大小/结构体成员偏移大小
atags_parse.c : atags 解析
: setup_machine_tags/squash_mem_tags/parse_tags/parse_tag
: parse_tag_cmdline/parse_tag_revision/parse_tag_serialnr
: parse_tag_mem32/parse_tag_core/
devtree.c : fdt 解析
: setup_machine_fdt/arch_get_next_mach
: arch_match_cpu_phys_id/arm_dt_init_cpu_maps
: set_smp_ops_by_method
elf.c : elf 解析
: elf_set_personality/elf_check_arch
io.c : io内存拷贝,清空,原子操作
: _memset_io/_memcpy_toio/_memcpy_fromio
: atomic_io_modify_relaxed/atomic_io_modify
phys2virt.S : __fixup_pv_table/fixup_pv_table/__fixup_a_pv_table
process.c :
arch_cpu_idle/arch_cpu_idle_prepare/arch_cpu_idle_enter/arch_cpu_idle_exit
show_regs
sigpage
exit_thread/flush_thread/release_thread/copy_thread
reboot.c :
soft_restart
machine_shutdown/machine_halt/machine_power_off/machine_restart
setup.c : setup_arch/proc_cpu_init/cpuinfo_op/cpu_init/dump_machine_table/early_print/hyp_mode_check
: lookup_processor/smp_setup_processor_id
sleep.S
: __cpu_suspend/cpu_suspend_abort
: cpu_resume_mmu/cpu_resume_after_mmu
: cpu_resume/cpu_resume_arm
suspend.c
: cpu_suspend/__cpu_suspend_save/cpu_suspend_alloc_sp
tcm.c
: setup_tcm_pool/tcm_init/tcm_handler
: setup_tcm_bank/tcm_itcm_present/tcm_dtcm_present
: tcm_free/tcm_alloc
time.c
: time_init/register_persistent_clock/read_persistent_clock64
: dummy_clock_access/profile_pc
include
linux_simple/arch/arm$ tree include/ -d
include/
├── asm
│ ├── hardware
│ ├── mach
│ ├── vdso
│ └── xen
├── debug
├── generated
│ ├── asm
│ └── uapi
│ └── asm
└── uapi
└── asm
generated目录
include/generated 目录
debug目录
include/debug
asm目录
include/asm
uapi目录
include/uapi
lib
linux_simple/arch/arm$ l lib
ashldi3.S copy_page.S div64.S lib.a strchr.S
ashrdi3.S copy_template.S findbit.S lshrdi3.S strrchr.S
backtrace.S copy_to_user.S getuser.S Makefile testchangebit.S
bitops.h csumipv6.S io-readsb.S memchr.S testclearbit.S
bswapsdi2.S csumpartialcopygeneric.S io-readsl.S memcpy.S testsetbit.S
call_with_stack.S csumpartialcopy.S io-readsw-armv4.S memmove.S ucmpdi2.S
changebit.S csumpartialcopyuser.S io-writesb.S memset.S
clearbit.S csumpartial.S io-writesl.S muldi3.S
clear_user.S delay.c io-writesw-armv4.S putuser.S
copy_from_user.S delay-loop.S lib1funcs.S setbit.S
mm
abort-ev6.S context.c fault.c iomap.c mmu.c proc-v6.S
abort-macro.S copypage-v6.c flush.c ioremap.c pabort-v6.S tlb-v6.S
alignment.c dma-mapping.c fsr-2level.c l2c-common.c pageattr.c
cache-l2x0.c extable.c idmap.c l2c-l2x0-resume.S pgd.c
cache-v6.S fault-armv.c init.c mmap.c proc-macros.S
v6处理器 相关
proc-macros.S :
: vma_vm_mm/vma_vm_flags/act_mm/mmid/asid/crval
: dcache_line_size/icache_line_size/armv6_mt_table
: armv6_set_pte_ext/armv3_set_pte_ext
: \name\()_processor_functions/\name\()_cache_fns/\name\()_tlb_fns
: globl_equ/initfn/pr_sz/pr_val
proc-v6.S
: cpu_v6_proc_init/cpu_v6_proc_fin/cpu_v6_reset/cpu_v6_do_idle/cpu_v6_dcache_clean_area/cpu_v6_switch_mm
: cpu_v6_set_pte_ext/cpu_v6_do_suspend/cpu_v6_do_resume/__v6_setup/v6_crval/__v6_proc_info
cache & tlb
l2c-l2x0-resume.S
: l2c310_early_resume
cache-l2x0.c : l2x0的cache
: l2x0_init/l2x0_of_init
l2c-common.c : 带mmu的cache和其他类型cache 共同部分
: outer_disable
cache-v6.S :
: v6_flush_icache_all/v6_flush_kern_cache_all/v6_flush_user_cache_all
: v6_flush_kern_dcache_area
: v6_coherent_kern_range/v6_coherent_user_range
: v6_dma_flush_range/v6_dma_map_area/v6_dma_unmap_area/v6_dma_inv_range
flush.c :
:__flush_anon_page/__flush_dcache_page
:__sync_icache_dcache/arm_heavy_mb
:copy_to_user_page/
:flush_cache_mm/flush_cache_page/flush_cache_range
:flush_dcache_page/flush_kernel_dcache_page/flush_uprobe_xol_access
tlb-v6.S :
:v6wbi_flush_user_tlb_range/v6wbi_flush_kern_tlb_range
异常
abort-macro.S :
:do_thumb_abort/teq_ldrd/
pabort-v6.S :
: v6_pabort
abort-ev6.S
:v6_early_abort
fault.c :
: do_DataAbort/do_PrefetchAbort/do_bad_area/early_abt_enable
:hook_fault_code/hook_ifault_code/show_pte
fault-armv.c :
:check_writebuffer_bugs/update_mmu_cache
fsr-2level.c :
:fsr_info/ifsr_info
页表相关
pgd.c : pgd_alloc/pgd_free
copypage-v6.c : v6_userpage_init/v6_clear_user_highpage_nonaliasing/v6_copy_user_highpage_nonaliasing
mmap.c : arch_get_unmapped_area/arch_get_unmapped_area_topdown
: valid_mmap_phys_addr_range/valid_phys_addr_range
mmu.c :__set_fixmap/adjust_lowmem_bounds/arm_mm_memblock_reserve
:debug_ll_io_init/early_fixmap_init/early_mm_init/iotable_init/paging_init
:get_mem_type/init_default_cache_policy/create_mapping_late
:phys_mem_access_prot/set_pte_at/vm_reserve_area_early
pageattr.c :set_memory_nx/set_memory_ro/set_memory_rw/set_memory_x
dma-mapping.c :
:arch_dma_alloc/arch_dma_free/arch_setup_dma_ops
:arch_sync_dma_for_cpu/arch_sync_dma_for_device
:arch_teardown_dma_ops/arm_dma_alloc/arm_dma_free
:arm_dma_get_sgtable/arm_dma_map_sg/arm_dma_mmap
:arm_dma_sync_sg_for_cpu/arm_dma_sync_sg_for_device
:arm_dma_unmap_sg/arm_iommu_attach_device/arm_iommu_create_mapping
:arm_iommu_detach_device/arm_iommu_release_mapping
:dma_contiguous_early_fixup/dma_contiguous_remap
idmap.c : setup_mm_for_reboot
iomap.c : ioport_map/ioport_unmap/pci_iounmap
ioremap.c :
:__arm_ioremap_caller/__arm_ioremap_exec/__arm_ioremap_pfn/__check_vmalloc_seq/
:__iounmap/add_static_vm_early/arch_memremap_wb/early_ioremap_init/find_static_vm_vaddr/
:ioremap/ioremap_cache/ioremap_page/ioremap_wc/iounmap/pci_ioremap_io/
:pci_ioremap_set_mem_type/pci_remap_cfgspace
其他
context.c : a15_erratum_get_cpumask/check_and_switch_context/
alignment.c : alignment_init
extable.c : fixup_exception
init.c :
:__clear_cr/arm_memblock_init/arm_memblock_steal/bootmem_init/
:check_cpu_icache_size/free_initmem/free_initrd_mem/mark_rodata_ro/
:mem_init/pfn_valid/set_kernel_text_ro/set_kernel_text_rw/setup_dma_zone
mach-s3c
cpu.c init.c pm-s3c64xx.c setup-keypad-s3c64xx.c
dev-audio-s3c64xx.c irq-pm-s3c64xx.c s3c6410.c setup-sdhci-gpio-s3c64xx.c
dev-backlight-s3c64xx.c mach-smdk6410.c s3c64xx.c setup-usb-phy-s3c64xx.c
devs.c platformdata.c setup-fb-24bpp-s3c64xx.c sleep-s3c64xx.S
dev-uart.c pm.c setup-i2c0-s3c64xx.c wakeup-mask.c
dev-uart-s3c64xx.c pm-common.c setup-i2c1-s3c64xx.c
gpio-samsung.c pm-gpio.c setup-ide-s3c64xx.c
linux_simple/arch/arm/mach-s3c$ tree include/ -d
include/
└── mach
板级整体描述
有两个相关结构体,一个是 MD结构体,一个是 cpu_table 结构体
MD(machine_desc) 结构体中的函数 底层调用 cpu_table 结构体中的函数
MACHINE_START(SMDK6410 位于 arm/mach-s3c/mach-smdk6410.c
static struct cpu_table cpu_ids 位于 arch/arm/mach-s3c/s3c64xx.c
mach-smdk6410.c
MACHINE_START(SMDK6410, "SMDK6410")
.atag_offset = 0x100,
.nr_irqs = S3C64XX_NR_IRQS,
.init_irq = s3c6410_init_irq,
.map_io = smdk6410_map_io,
.init_machine = smdk6410_machine_init,
.init_time = s3c64xx_timer_init,
MACHINE_END
init.c : s3c_arch_init/s3c24xx_init_uartdevs(底层回调函数)/s3c24xx_init_uarts(高层函数)
smdk6410_map_io
s3c24xx_init_uarts(smdk6410_uartcfgs, ARRAY_SIZE(smdk6410_uartcfgs));
cpu->init_uarts/即s3c64xx_init_uarts
s3c24xx_init_uartdevs("s3c6400-uart", s3c64xx_uart_resources, cfg, no);
cpu
cpu.c : s3c64xx_init_cpu
s3c6410.c : s3c6410_init(被 s3c_arch_init->cpu->init调用)/s3c6410_init_irq(位于MD中的init_irq)/s3c6410_map_io(位于MD中的map_io)
s3c64xx.c : s3c64xx_init_io/s3c64xx_init_irq/s3c64xx_set_timer_source/
: s3c64xx_set_xtal_freq/s3c64xx_set_xusbxti_freq/s3c64xx_timer_init
sleep-s3c64xx.S :
: s3c_cpu_resume
wakeup-mask.c : samsung_sync_wakemask
init.c : s3c_init_cpu
pm
irq-pm-s3c64xx.c : s3c64xx_syscore_init/s3c64xx_irq_pm_resume/s3c64xx_irq_pm_suspend
pm-common.c : s3c_pm_do_save/s3c_pm_do_restore/s3c_pm_do_restore_core
pm-gpio.c : samsung_pm_save_gpios/samsung_pm_restore_gpios
pm-s3c64xx.c : s3c64xx_pm_init/s3c_pm_arch_update_uart/s3c_pm_configure_extint/s3c_pm_debug_smdkled
: s3c_pm_restore_core/s3c_pm_save_core
pm.c : s3c_irqext_wake/s3c_pm_init
内存
MMC
其他设备
devs.c
: s3c_xxx_set_platdata
platformdata.c :
: s3c_set_platdata
dev-audio-s3c64xx.c
dev-backlight-s3c64xx.c
dev-uart-s3c64xx.c
dev-uart.c
gpio-samsung.c
setup-fb-24bpp-s3c64xx.c
setup-i2c0-s3c64xx.c
setup-i2c1-s3c64xx.c
setup-ide-s3c64xx.c
setup-keypad-s3c64xx.c
setup-sdhci-gpio-s3c64xx.c
setup-usb-phy-s3c64xx.c