File:  [Qemu by Fabrice Bellard] / qemu / softmmu_exec.h
Revision 1.1.1.6 (vendor branch): download - view: text, annotated - select for diffs
Tue Apr 24 19:17:32 2018 UTC (3 years, 1 month ago) by root
Branches: qemu, MAIN
CVS tags: qemu1101, qemu1001, HEAD
qemu 1.0.1

    1: /*
    2:  *  Software MMU support
    3:  *
    4:  * Generate inline load/store functions for all MMU modes (typically
    5:  * at least _user and _kernel) as well as _data versions, for all data
    6:  * sizes.
    7:  *
    8:  * Used by target op helpers.
    9:  *
   10:  * MMU mode suffixes are defined in target cpu.h.
   11:  */
   12: 
   13: /* XXX: find something cleaner.
   14:  * Furthermore, this is false for 64 bits targets
   15:  */
   16: #define ldul_user       ldl_user
   17: #define ldul_kernel     ldl_kernel
   18: #define ldul_hypv       ldl_hypv
   19: #define ldul_executive  ldl_executive
   20: #define ldul_supervisor ldl_supervisor
   21: 
   22: #include "softmmu_defs.h"
   23: 
   24: #define ACCESS_TYPE 0
   25: #define MEMSUFFIX MMU_MODE0_SUFFIX
   26: #define DATA_SIZE 1
   27: #include "softmmu_header.h"
   28: 
   29: #define DATA_SIZE 2
   30: #include "softmmu_header.h"
   31: 
   32: #define DATA_SIZE 4
   33: #include "softmmu_header.h"
   34: 
   35: #define DATA_SIZE 8
   36: #include "softmmu_header.h"
   37: #undef ACCESS_TYPE
   38: #undef MEMSUFFIX
   39: 
   40: #define ACCESS_TYPE 1
   41: #define MEMSUFFIX MMU_MODE1_SUFFIX
   42: #define DATA_SIZE 1
   43: #include "softmmu_header.h"
   44: 
   45: #define DATA_SIZE 2
   46: #include "softmmu_header.h"
   47: 
   48: #define DATA_SIZE 4
   49: #include "softmmu_header.h"
   50: 
   51: #define DATA_SIZE 8
   52: #include "softmmu_header.h"
   53: #undef ACCESS_TYPE
   54: #undef MEMSUFFIX
   55: 
   56: #if (NB_MMU_MODES >= 3)
   57: 
   58: #define ACCESS_TYPE 2
   59: #define MEMSUFFIX MMU_MODE2_SUFFIX
   60: #define DATA_SIZE 1
   61: #include "softmmu_header.h"
   62: 
   63: #define DATA_SIZE 2
   64: #include "softmmu_header.h"
   65: 
   66: #define DATA_SIZE 4
   67: #include "softmmu_header.h"
   68: 
   69: #define DATA_SIZE 8
   70: #include "softmmu_header.h"
   71: #undef ACCESS_TYPE
   72: #undef MEMSUFFIX
   73: #endif /* (NB_MMU_MODES >= 3) */
   74: 
   75: #if (NB_MMU_MODES >= 4)
   76: 
   77: #define ACCESS_TYPE 3
   78: #define MEMSUFFIX MMU_MODE3_SUFFIX
   79: #define DATA_SIZE 1
   80: #include "softmmu_header.h"
   81: 
   82: #define DATA_SIZE 2
   83: #include "softmmu_header.h"
   84: 
   85: #define DATA_SIZE 4
   86: #include "softmmu_header.h"
   87: 
   88: #define DATA_SIZE 8
   89: #include "softmmu_header.h"
   90: #undef ACCESS_TYPE
   91: #undef MEMSUFFIX
   92: #endif /* (NB_MMU_MODES >= 4) */
   93: 
   94: #if (NB_MMU_MODES >= 5)
   95: 
   96: #define ACCESS_TYPE 4
   97: #define MEMSUFFIX MMU_MODE4_SUFFIX
   98: #define DATA_SIZE 1
   99: #include "softmmu_header.h"
  100: 
  101: #define DATA_SIZE 2
  102: #include "softmmu_header.h"
  103: 
  104: #define DATA_SIZE 4
  105: #include "softmmu_header.h"
  106: 
  107: #define DATA_SIZE 8
  108: #include "softmmu_header.h"
  109: #undef ACCESS_TYPE
  110: #undef MEMSUFFIX
  111: #endif /* (NB_MMU_MODES >= 5) */
  112: 
  113: #if (NB_MMU_MODES >= 6)
  114: 
  115: #define ACCESS_TYPE 5
  116: #define MEMSUFFIX MMU_MODE5_SUFFIX
  117: #define DATA_SIZE 1
  118: #include "softmmu_header.h"
  119: 
  120: #define DATA_SIZE 2
  121: #include "softmmu_header.h"
  122: 
  123: #define DATA_SIZE 4
  124: #include "softmmu_header.h"
  125: 
  126: #define DATA_SIZE 8
  127: #include "softmmu_header.h"
  128: #undef ACCESS_TYPE
  129: #undef MEMSUFFIX
  130: #endif /* (NB_MMU_MODES >= 6) */
  131: 
  132: #if (NB_MMU_MODES > 6)
  133: #error "NB_MMU_MODES > 6 is not supported for now"
  134: #endif /* (NB_MMU_MODES > 6) */
  135: 
  136: /* these access are slower, they must be as rare as possible */
  137: #define ACCESS_TYPE (NB_MMU_MODES)
  138: #define MEMSUFFIX _data
  139: #define DATA_SIZE 1
  140: #include "softmmu_header.h"
  141: 
  142: #define DATA_SIZE 2
  143: #include "softmmu_header.h"
  144: 
  145: #define DATA_SIZE 4
  146: #include "softmmu_header.h"
  147: 
  148: #define DATA_SIZE 8
  149: #include "softmmu_header.h"
  150: #undef ACCESS_TYPE
  151: #undef MEMSUFFIX
  152: 
  153: #define ldub(p) ldub_data(p)
  154: #define ldsb(p) ldsb_data(p)
  155: #define lduw(p) lduw_data(p)
  156: #define ldsw(p) ldsw_data(p)
  157: #define ldl(p) ldl_data(p)
  158: #define ldq(p) ldq_data(p)
  159: 
  160: #define stb(p, v) stb_data(p, v)
  161: #define stw(p, v) stw_data(p, v)
  162: #define stl(p, v) stl_data(p, v)
  163: #define stq(p, v) stq_data(p, v)

unix.superglobalmegacorp.com