memopidx.h (1005B)
1/* 2 * Combine the MemOp and mmu_idx parameters into a single value. 3 * 4 * Authors: 5 * Richard Henderson <rth@twiddle.net> 6 * 7 * This work is licensed under the terms of the GNU GPL, version 2 or later. 8 * See the COPYING file in the top-level directory. 9 */ 10 11#ifndef EXEC_MEMOPIDX_H 12#define EXEC_MEMOPIDX_H 1 13 14#include "exec/memop.h" 15 16typedef uint32_t MemOpIdx; 17 18/** 19 * make_memop_idx 20 * @op: memory operation 21 * @idx: mmu index 22 * 23 * Encode these values into a single parameter. 24 */ 25static inline MemOpIdx make_memop_idx(MemOp op, unsigned idx) 26{ 27#ifdef CONFIG_DEBUG_TCG 28 assert(idx <= 15); 29#endif 30 return (op << 4) | idx; 31} 32 33/** 34 * get_memop 35 * @oi: combined op/idx parameter 36 * 37 * Extract the memory operation from the combined value. 38 */ 39static inline MemOp get_memop(MemOpIdx oi) 40{ 41 return oi >> 4; 42} 43 44/** 45 * get_mmuidx 46 * @oi: combined op/idx parameter 47 * 48 * Extract the mmu index from the combined value. 49 */ 50static inline unsigned get_mmuidx(MemOpIdx oi) 51{ 52 return oi & 15; 53} 54 55#endif