arch/arm中的目录

文章目录

        • kernel
            • entry
            • debug
            • 其他
        • 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异常向量表 // https://blog.csdn.net/u011011827/article/details/120432705
				:__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

// 增加 CONFIG_ARCH_MULTI_V7=n 之后的状态
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")                                                 
				    /* Maintainer: Ben Dooks  */                               
				    .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 // 查看 arch/arm/mach-s3c/s3c64xx.c 中的 cpu_ids
            s3c24xx_init_uartdevs("s3c6400-uart", s3c64xx_uart_resources, cfg, no);

cpu
cpu.c				: s3c64xx_init_cpu // 被 smdk6410_map_io-> s3c64xx_init_io 调用
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 // xxx 可取 i2c0/i2c1/ide/nand/ohci/sdhci0/
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

你可能感兴趣的:(杂七杂八总览,arm,arm开发,linux)