/* * Combine the MemOp and mmu_idx parameters into a single value. * * Authors: * Richard Henderson <rth@twiddle.net> * * This work is licensed under the terms of the GNU GPL, version 2 or later. * See the COPYING file in the top-level directory. */ #ifndef EXEC_MEMOPIDX_H #define EXEC_MEMOPIDX_H #include "exec/memop.h" typedef uint32_t MemOpIdx; /** * make_memop_idx * @op: memory operation * @idx: mmu index * * Encode these values into a single parameter. */ static inline MemOpIdx make_memop_idx(MemOp op, unsigned idx) { #ifdef CONFIG_DEBUG_TCG assert(idx <= 15); #endif return (op << 4) | idx; } /** * get_memop * @oi: combined op/idx parameter * * Extract the memory operation from the combined value. */ static inline MemOp get_memop(MemOpIdx oi) { return oi >> 4; } /** * get_mmuidx * @oi: combined op/idx parameter * * Extract the mmu index from the combined value. */ static inline unsigned get_mmuidx(MemOpIdx oi) { return oi & 15; } #endif