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