1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * linux/arch/arm/mm/arm740.S: utility functi 4 * 5 * Copyright (C) 2004-2006 Hyok S. Choi (hyok 6 */ 7 #include <linux/linkage.h> 8 #include <linux/init.h> 9 #include <linux/cfi_types.h> 10 #include <linux/pgtable.h> 11 #include <asm/assembler.h> 12 #include <asm/asm-offsets.h> 13 #include <asm/hwcap.h> 14 #include <asm/pgtable-hwdef.h> 15 #include <asm/ptrace.h> 16 17 #include "proc-macros.S" 18 19 .text 20 /* 21 * cpu_arm740_proc_init() 22 * cpu_arm740_do_idle() 23 * cpu_arm740_dcache_clean_area() 24 * cpu_arm740_switch_mm() 25 * 26 * These are not required. 27 */ 28 SYM_TYPED_FUNC_START(cpu_arm740_proc_init) 29 ret lr 30 SYM_FUNC_END(cpu_arm740_proc_init) 31 32 SYM_TYPED_FUNC_START(cpu_arm740_do_idle) 33 ret lr 34 SYM_FUNC_END(cpu_arm740_do_idle) 35 36 SYM_TYPED_FUNC_START(cpu_arm740_dcache_clean_a 37 ret lr 38 SYM_FUNC_END(cpu_arm740_dcache_clean_area) 39 40 SYM_TYPED_FUNC_START(cpu_arm740_switch_mm) 41 ret lr 42 SYM_FUNC_END(cpu_arm740_switch_mm) 43 44 /* 45 * cpu_arm740_proc_fin() 46 */ 47 SYM_TYPED_FUNC_START(cpu_arm740_proc_fin) 48 mrc p15, 0, r0, c1, c0, 0 49 bic r0, r0, #0x3f000000 50 bic r0, r0, #0x0000000c 51 mcr p15, 0, r0, c1, c0, 0 52 ret lr 53 SYM_FUNC_END(cpu_arm740_proc_fin) 54 55 /* 56 * cpu_arm740_reset(loc) 57 * Params : r0 = address to jump to 58 * Notes : This sets up everything for a res 59 */ 60 .pushsection .idmap.text, "ax" 61 SYM_TYPED_FUNC_START(cpu_arm740_reset) 62 mov ip, #0 63 mcr p15, 0, ip, c7, c0, 0 64 mrc p15, 0, ip, c1, c0, 0 65 bic ip, ip, #0x0000000c 66 mcr p15, 0, ip, c1, c0, 0 67 ret r0 68 SYM_FUNC_END(cpu_arm740_reset) 69 .popsection 70 71 .type __arm740_setup, #function 72 __arm740_setup: 73 mov r0, #0 74 mcr p15, 0, r0, c7, c0, 0 75 76 mcr p15, 0, r0, c6, c3 77 mcr p15, 0, r0, c6, c4 78 mcr p15, 0, r0, c6, c5 79 mcr p15, 0, r0, c6, c6 80 mcr p15, 0, r0, c6, c7 81 82 mov r0, #0x0000003F 83 mcr p15, 0, r0, c6, c0 84 85 ldr r0, =(CONFIG_DRAM_BASE & 0xFFF 86 ldr r3, =(CONFIG_DRAM_SIZE >> 12) 87 mov r4, #10 88 1: add r4, r4, #1 89 movs r3, r3, lsr #1 90 bne 1b 91 orr r0, r0, r4, lsl #1 92 orr r0, r0, #1 93 mcr p15, 0, r0, c6, c1 94 95 ldr r0, =(CONFIG_FLASH_MEM_BASE & 96 ldr r3, =(CONFIG_FLASH_SIZE >> 12) 97 cmp r3, #0 98 moveq r0, #0 99 beq 2f 100 mov r4, #10 101 1: add r4, r4, #1 102 movs r3, r3, lsr #1 103 bne 1b 104 orr r0, r0, r4, lsl #1 105 orr r0, r0, #1 106 2: mcr p15, 0, r0, c6, c2 107 108 mov r0, #0x06 109 mcr p15, 0, r0, c2, c0 110 #ifdef CONFIG_CPU_DCACHE_WRITETHROUGH 111 mov r0, #0x00 112 #else 113 mov r0, #0x02 114 #endif 115 mcr p15, 0, r0, c3, c0 116 117 mov r0, #0x10000 118 sub r0, r0, #1 119 mcr p15, 0, r0, c5, c0 120 121 mrc p15, 0, r0, c1, c0 122 bic r0, r0, #0x3F000000 123 124 orr r0, r0, #0x0000000d 125 126 ret lr 127 128 .size __arm740_setup, . - __arm740_s 129 130 __INITDATA 131 132 @ define struct processor (see <asm/pr 133 define_processor_functions arm740, dab 134 135 .section ".rodata" 136 137 string cpu_arch_name, "armv4" 138 string cpu_elf_name, "v4" 139 string cpu_arm740_name, "ARM740T" 140 141 .align 142 143 .section ".proc.info.init", "a" 144 .type __arm740_proc_info,#object 145 __arm740_proc_info: 146 .long 0x41807400 147 .long 0xfffffff0 148 .long 0 149 .long 0 150 initfn __arm740_setup, __arm740_proc_ 151 .long cpu_arch_name 152 .long cpu_elf_name 153 .long HWCAP_SWP | HWCAP_HALF | HWCAP 154 .long cpu_arm740_name 155 .long arm740_processor_functions 156 .long 0 157 .long 0 158 .long v4_cache_fns 159 .size __arm740_proc_info, . - __arm7
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.