| /* | |
| * 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 |