|
@@ -17,6 +17,8 @@
|
|
|
#include <asm/pgtable.h>
|
|
|
#include <asm/ptrace.h>
|
|
|
|
|
|
+#include "proc-macros.S"
|
|
|
+
|
|
|
.text
|
|
|
/*
|
|
|
* cpu_arm9tdmi_proc_init()
|
|
@@ -55,82 +57,38 @@ __arm9tdmi_setup:
|
|
|
|
|
|
__INITDATA
|
|
|
|
|
|
-/*
|
|
|
- * Purpose : Function pointers used to access above functions - all calls
|
|
|
- * come through these
|
|
|
- */
|
|
|
- .type arm9tdmi_processor_functions, #object
|
|
|
-ENTRY(arm9tdmi_processor_functions)
|
|
|
- .word nommu_early_abort
|
|
|
- .word legacy_pabort
|
|
|
- .word cpu_arm9tdmi_proc_init
|
|
|
- .word cpu_arm9tdmi_proc_fin
|
|
|
- .word cpu_arm9tdmi_reset
|
|
|
- .word cpu_arm9tdmi_do_idle
|
|
|
- .word cpu_arm9tdmi_dcache_clean_area
|
|
|
- .word cpu_arm9tdmi_switch_mm
|
|
|
- .word 0 @ cpu_*_set_pte
|
|
|
- .word 0
|
|
|
- .word 0
|
|
|
- .word 0
|
|
|
- .size arm9tdmi_processor_functions, . - arm9tdmi_processor_functions
|
|
|
+ @ define struct processor (see <asm/proc-fns.h> and proc-macros.S)
|
|
|
+ define_processor_functions arm9tdmi, dabort=nommu_early_abort, pabort=legacy_pabort, nommu=1
|
|
|
|
|
|
.section ".rodata"
|
|
|
|
|
|
- .type cpu_arch_name, #object
|
|
|
-cpu_arch_name:
|
|
|
- .asciz "armv4t"
|
|
|
- .size cpu_arch_name, . - cpu_arch_name
|
|
|
-
|
|
|
- .type cpu_elf_name, #object
|
|
|
-cpu_elf_name:
|
|
|
- .asciz "v4"
|
|
|
- .size cpu_elf_name, . - cpu_elf_name
|
|
|
-
|
|
|
- .type cpu_arm9tdmi_name, #object
|
|
|
-cpu_arm9tdmi_name:
|
|
|
- .asciz "ARM9TDMI"
|
|
|
- .size cpu_arm9tdmi_name, . - cpu_arm9tdmi_name
|
|
|
-
|
|
|
- .type cpu_p2001_name, #object
|
|
|
-cpu_p2001_name:
|
|
|
- .asciz "P2001"
|
|
|
- .size cpu_p2001_name, . - cpu_p2001_name
|
|
|
+ string cpu_arch_name, "armv4t"
|
|
|
+ string cpu_elf_name, "v4"
|
|
|
+ string cpu_arm9tdmi_name, "ARM9TDMI"
|
|
|
+ string cpu_p2001_name, "P2001"
|
|
|
|
|
|
.align
|
|
|
|
|
|
.section ".proc.info.init", #alloc, #execinstr
|
|
|
|
|
|
- .type __arm9tdmi_proc_info, #object
|
|
|
-__arm9tdmi_proc_info:
|
|
|
- .long 0x41009900
|
|
|
- .long 0xfff8ff00
|
|
|
+.macro arm9tdmi_proc_info name:req, cpu_val:req, cpu_mask:req, cpu_name:req
|
|
|
+ .type __\name\()_proc_info, #object
|
|
|
+__\name\()_proc_info:
|
|
|
+ .long \cpu_val
|
|
|
+ .long \cpu_mask
|
|
|
.long 0
|
|
|
.long 0
|
|
|
b __arm9tdmi_setup
|
|
|
.long cpu_arch_name
|
|
|
.long cpu_elf_name
|
|
|
.long HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT
|
|
|
- .long cpu_arm9tdmi_name
|
|
|
+ .long \cpu_name
|
|
|
.long arm9tdmi_processor_functions
|
|
|
.long 0
|
|
|
.long 0
|
|
|
.long v4_cache_fns
|
|
|
- .size __arm9tdmi_proc_info, . - __arm9tdmi_proc_info
|
|
|
+ .size __\name\()_proc_info, . - __\name\()_proc_info
|
|
|
+.endm
|
|
|
|
|
|
- .type __p2001_proc_info, #object
|
|
|
-__p2001_proc_info:
|
|
|
- .long 0x41029000
|
|
|
- .long 0xffffffff
|
|
|
- .long 0
|
|
|
- .long 0
|
|
|
- b __arm9tdmi_setup
|
|
|
- .long cpu_arch_name
|
|
|
- .long cpu_elf_name
|
|
|
- .long HWCAP_SWP | HWCAP_THUMB | HWCAP_26BIT
|
|
|
- .long cpu_p2001_name
|
|
|
- .long arm9tdmi_processor_functions
|
|
|
- .long 0
|
|
|
- .long 0
|
|
|
- .long v4_cache_fns
|
|
|
- .size __p2001_proc_info, . - __p2001_proc_info
|
|
|
+ arm9tdmi_proc_info arm9tdmi, 0x41009900, 0xfff8ff00, cpu_arm9tdmi_name
|
|
|
+ arm9tdmi_proc_info p2001, 0x41029000, 0xffffffff, cpu_p2001_name
|