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