qemu/include/exec/memopidx.h
<<
>>
Prefs
   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
  56