/* * Copyright 2012 The Android Open Source Project * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkCachePreload_arm_DEFINED #define SkCachePreload_arm_DEFINED // This file defines macros for preload instructions for ARM. These macros // are designed to be embedded inside GNU inline assembly. // For the use of these macros, __ARM_USE_PLD needs to be enabled. The cache // line size also needs to be known (and needs to be contained inside // __ARM_CACHE_LINE_SIZE). #if defined(__ARM_USE_PLD) #define PLD(x, n) "pld [%["#x"], #("#n")]\n\t" #if __ARM_CACHE_LINE_SIZE == 32 #define PLD64(x, n) PLD(x, n) PLD(x, (n) + 32) #elif __ARM_CACHE_LINE_SIZE == 64 #define PLD64(x, n) PLD(x, n) #else #error "unknown __ARM_CACHE_LINE_SIZE." #endif #else // PLD is disabled, all macros become empty. #define PLD(x, n) #define PLD64(x, n) #endif #define PLD128(x, n) PLD64(x, n) PLD64(x, (n) + 64) #endif // SkCachePreload_arm_DEFINED