1*4882a593Smuzhiyun/* 2*4882a593Smuzhiyun * Miscellaneous assembly functions. 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Copyright (C) 2001 - 2007 Tensilica Inc. 5*4882a593Smuzhiyun * Copyright (C) 2014 - 2016 Cadence Design Systems Inc. 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * Chris Zankel <chris@zankel.net> 8*4882a593Smuzhiyun * 9*4882a593Smuzhiyun * SPDX-License-Identifier: GPL-2.0+ 10*4882a593Smuzhiyun */ 11*4882a593Smuzhiyun 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun#include <linux/linkage.h> 14*4882a593Smuzhiyun#include <asm/asmmacro.h> 15*4882a593Smuzhiyun#include <asm/cacheasm.h> 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun/* 18*4882a593Smuzhiyun * void __invalidate_icache_page(ulong start) 19*4882a593Smuzhiyun */ 20*4882a593Smuzhiyun 21*4882a593SmuzhiyunENTRY(__invalidate_icache_page) 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun abi_entry 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun ___invalidate_icache_page a2 a3 26*4882a593Smuzhiyun isync 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun abi_ret 29*4882a593Smuzhiyun 30*4882a593SmuzhiyunENDPROC(__invalidate_icache_page) 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun/* 33*4882a593Smuzhiyun * void __invalidate_dcache_page(ulong start) 34*4882a593Smuzhiyun */ 35*4882a593Smuzhiyun 36*4882a593SmuzhiyunENTRY(__invalidate_dcache_page) 37*4882a593Smuzhiyun 38*4882a593Smuzhiyun abi_entry 39*4882a593Smuzhiyun 40*4882a593Smuzhiyun ___invalidate_dcache_page a2 a3 41*4882a593Smuzhiyun dsync 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun abi_ret 44*4882a593Smuzhiyun 45*4882a593SmuzhiyunENDPROC(__invalidate_dcache_page) 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun/* 48*4882a593Smuzhiyun * void __flush_invalidate_dcache_page(ulong start) 49*4882a593Smuzhiyun */ 50*4882a593Smuzhiyun 51*4882a593SmuzhiyunENTRY(__flush_invalidate_dcache_page) 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun abi_entry 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun ___flush_invalidate_dcache_page a2 a3 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun dsync 58*4882a593Smuzhiyun abi_ret 59*4882a593Smuzhiyun 60*4882a593SmuzhiyunENDPROC(__flush_invalidate_dcache_page) 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun/* 63*4882a593Smuzhiyun * void __flush_dcache_page(ulong start) 64*4882a593Smuzhiyun */ 65*4882a593Smuzhiyun 66*4882a593SmuzhiyunENTRY(__flush_dcache_page) 67*4882a593Smuzhiyun 68*4882a593Smuzhiyun abi_entry 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun ___flush_dcache_page a2 a3 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun dsync 73*4882a593Smuzhiyun abi_ret 74*4882a593Smuzhiyun 75*4882a593SmuzhiyunENDPROC(__flush_dcache_page) 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun/* 78*4882a593Smuzhiyun * void __invalidate_icache_range(ulong start, ulong size) 79*4882a593Smuzhiyun */ 80*4882a593Smuzhiyun 81*4882a593SmuzhiyunENTRY(__invalidate_icache_range) 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun abi_entry 84*4882a593Smuzhiyun 85*4882a593Smuzhiyun ___invalidate_icache_range a2 a3 a4 86*4882a593Smuzhiyun isync 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun abi_ret 89*4882a593Smuzhiyun 90*4882a593SmuzhiyunENDPROC(__invalidate_icache_range) 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun/* 93*4882a593Smuzhiyun * void __flush_invalidate_dcache_range(ulong start, ulong size) 94*4882a593Smuzhiyun */ 95*4882a593Smuzhiyun 96*4882a593SmuzhiyunENTRY(__flush_invalidate_dcache_range) 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun abi_entry 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun ___flush_invalidate_dcache_range a2 a3 a4 101*4882a593Smuzhiyun dsync 102*4882a593Smuzhiyun 103*4882a593Smuzhiyun abi_ret 104*4882a593Smuzhiyun 105*4882a593SmuzhiyunENDPROC(__flush_invalidate_dcache_range) 106*4882a593Smuzhiyun 107*4882a593Smuzhiyun/* 108*4882a593Smuzhiyun * void _flush_dcache_range(ulong start, ulong size) 109*4882a593Smuzhiyun */ 110*4882a593Smuzhiyun 111*4882a593SmuzhiyunENTRY(__flush_dcache_range) 112*4882a593Smuzhiyun 113*4882a593Smuzhiyun abi_entry 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun ___flush_dcache_range a2 a3 a4 116*4882a593Smuzhiyun dsync 117*4882a593Smuzhiyun 118*4882a593Smuzhiyun abi_ret 119*4882a593Smuzhiyun 120*4882a593SmuzhiyunENDPROC(__flush_dcache_range) 121*4882a593Smuzhiyun 122*4882a593Smuzhiyun/* 123*4882a593Smuzhiyun * void _invalidate_dcache_range(ulong start, ulong size) 124*4882a593Smuzhiyun */ 125*4882a593Smuzhiyun 126*4882a593SmuzhiyunENTRY(__invalidate_dcache_range) 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun abi_entry 129*4882a593Smuzhiyun 130*4882a593Smuzhiyun ___invalidate_dcache_range a2 a3 a4 131*4882a593Smuzhiyun 132*4882a593Smuzhiyun abi_ret 133*4882a593Smuzhiyun 134*4882a593SmuzhiyunENDPROC(__invalidate_dcache_range) 135*4882a593Smuzhiyun 136*4882a593Smuzhiyun/* 137*4882a593Smuzhiyun * void _invalidate_icache_all(void) 138*4882a593Smuzhiyun */ 139*4882a593Smuzhiyun 140*4882a593SmuzhiyunENTRY(__invalidate_icache_all) 141*4882a593Smuzhiyun 142*4882a593Smuzhiyun abi_entry 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun ___invalidate_icache_all a2 a3 145*4882a593Smuzhiyun isync 146*4882a593Smuzhiyun 147*4882a593Smuzhiyun abi_ret 148*4882a593Smuzhiyun 149*4882a593SmuzhiyunENDPROC(__invalidate_icache_all) 150*4882a593Smuzhiyun 151*4882a593Smuzhiyun/* 152*4882a593Smuzhiyun * void _flush_invalidate_dcache_all(void) 153*4882a593Smuzhiyun */ 154*4882a593Smuzhiyun 155*4882a593SmuzhiyunENTRY(__flush_invalidate_dcache_all) 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun abi_entry 158*4882a593Smuzhiyun 159*4882a593Smuzhiyun ___flush_invalidate_dcache_all a2 a3 160*4882a593Smuzhiyun dsync 161*4882a593Smuzhiyun 162*4882a593Smuzhiyun abi_ret 163*4882a593Smuzhiyun 164*4882a593SmuzhiyunENDPROC(__flush_invalidate_dcache_all) 165*4882a593Smuzhiyun 166*4882a593Smuzhiyun/* 167*4882a593Smuzhiyun * void _invalidate_dcache_all(void) 168*4882a593Smuzhiyun */ 169*4882a593Smuzhiyun 170*4882a593SmuzhiyunENTRY(__invalidate_dcache_all) 171*4882a593Smuzhiyun 172*4882a593Smuzhiyun abi_entry 173*4882a593Smuzhiyun 174*4882a593Smuzhiyun ___invalidate_dcache_all a2 a3 175*4882a593Smuzhiyun dsync 176*4882a593Smuzhiyun 177*4882a593Smuzhiyun abi_ret 178*4882a593Smuzhiyun 179*4882a593SmuzhiyunENDPROC(__invalidate_dcache_all) 180