1 /* 2 * Copyright 2012 The Android Open Source Project 3 * 4 * Use of this source code is governed by a BSD-style license that can be 5 * found in the LICENSE file. 6 */ 7 #ifndef SkCachePreload_arm_DEFINED 8 #define SkCachePreload_arm_DEFINED 9 10 // This file defines macros for preload instructions for ARM. These macros 11 // are designed to be embedded inside GNU inline assembly. 12 // For the use of these macros, __ARM_USE_PLD needs to be enabled. The cache 13 // line size also needs to be known (and needs to be contained inside 14 // __ARM_CACHE_LINE_SIZE). 15 #if defined(__ARM_USE_PLD) 16 17 #define PLD(x, n) "pld [%["#x"], #("#n")]\n\t" 18 19 #if __ARM_CACHE_LINE_SIZE == 32 20 #define PLD64(x, n) PLD(x, n) PLD(x, (n) + 32) 21 #elif __ARM_CACHE_LINE_SIZE == 64 22 #define PLD64(x, n) PLD(x, n) 23 #else 24 #error "unknown __ARM_CACHE_LINE_SIZE." 25 #endif 26 #else 27 // PLD is disabled, all macros become empty. 28 #define PLD(x, n) 29 #define PLD64(x, n) 30 #endif 31 32 #define PLD128(x, n) PLD64(x, n) PLD64(x, (n) + 64) 33 34 #endif // SkCachePreload_arm_DEFINED 35