Home | History | Annotate | Download | only in qemu
      1 /* Common softmmu definitions and inline routines.  */
      2 
      3 /* XXX: find something cleaner.
      4  * Furthermore, this is false for 64 bits targets
      5  */
      6 #define ldul_user       ldl_user
      7 #define ldul_kernel     ldl_kernel
      8 #define ldul_hypv       ldl_hypv
      9 #define ldul_executive  ldl_executive
     10 #define ldul_supervisor ldl_supervisor
     11 
     12 #include "softmmu_defs.h"
     13 
     14 #define ACCESS_TYPE 0
     15 #define MEMSUFFIX MMU_MODE0_SUFFIX
     16 #define DATA_SIZE 1
     17 #include "softmmu_header.h"
     18 
     19 #define DATA_SIZE 2
     20 #include "softmmu_header.h"
     21 
     22 #define DATA_SIZE 4
     23 #include "softmmu_header.h"
     24 
     25 #define DATA_SIZE 8
     26 #include "softmmu_header.h"
     27 #undef ACCESS_TYPE
     28 #undef MEMSUFFIX
     29 
     30 #define ACCESS_TYPE 1
     31 #define MEMSUFFIX MMU_MODE1_SUFFIX
     32 #define DATA_SIZE 1
     33 #include "softmmu_header.h"
     34 
     35 #define DATA_SIZE 2
     36 #include "softmmu_header.h"
     37 
     38 #define DATA_SIZE 4
     39 #include "softmmu_header.h"
     40 
     41 #define DATA_SIZE 8
     42 #include "softmmu_header.h"
     43 #undef ACCESS_TYPE
     44 #undef MEMSUFFIX
     45 
     46 #if (NB_MMU_MODES >= 3)
     47 
     48 #define ACCESS_TYPE 2
     49 #define MEMSUFFIX MMU_MODE2_SUFFIX
     50 #define DATA_SIZE 1
     51 #include "softmmu_header.h"
     52 
     53 #define DATA_SIZE 2
     54 #include "softmmu_header.h"
     55 
     56 #define DATA_SIZE 4
     57 #include "softmmu_header.h"
     58 
     59 #define DATA_SIZE 8
     60 #include "softmmu_header.h"
     61 #undef ACCESS_TYPE
     62 #undef MEMSUFFIX
     63 #endif /* (NB_MMU_MODES >= 3) */
     64 
     65 #if (NB_MMU_MODES >= 4)
     66 
     67 #define ACCESS_TYPE 3
     68 #define MEMSUFFIX MMU_MODE3_SUFFIX
     69 #define DATA_SIZE 1
     70 #include "softmmu_header.h"
     71 
     72 #define DATA_SIZE 2
     73 #include "softmmu_header.h"
     74 
     75 #define DATA_SIZE 4
     76 #include "softmmu_header.h"
     77 
     78 #define DATA_SIZE 8
     79 #include "softmmu_header.h"
     80 #undef ACCESS_TYPE
     81 #undef MEMSUFFIX
     82 #endif /* (NB_MMU_MODES >= 4) */
     83 
     84 #if (NB_MMU_MODES >= 5)
     85 
     86 #define ACCESS_TYPE 4
     87 #define MEMSUFFIX MMU_MODE4_SUFFIX
     88 #define DATA_SIZE 1
     89 #include "softmmu_header.h"
     90 
     91 #define DATA_SIZE 2
     92 #include "softmmu_header.h"
     93 
     94 #define DATA_SIZE 4
     95 #include "softmmu_header.h"
     96 
     97 #define DATA_SIZE 8
     98 #include "softmmu_header.h"
     99 #undef ACCESS_TYPE
    100 #undef MEMSUFFIX
    101 #endif /* (NB_MMU_MODES >= 5) */
    102 
    103 #if (NB_MMU_MODES > 5)
    104 #error "NB_MMU_MODES > 5 is not supported for now"
    105 #endif /* (NB_MMU_MODES > 5) */
    106 
    107 /* these access are slower, they must be as rare as possible */
    108 #define ACCESS_TYPE (NB_MMU_MODES)
    109 #define MEMSUFFIX _data
    110 #define DATA_SIZE 1
    111 #include "softmmu_header.h"
    112 
    113 #define DATA_SIZE 2
    114 #include "softmmu_header.h"
    115 
    116 #define DATA_SIZE 4
    117 #include "softmmu_header.h"
    118 
    119 #define DATA_SIZE 8
    120 #include "softmmu_header.h"
    121 #undef ACCESS_TYPE
    122 #undef MEMSUFFIX
    123 
    124 #define ldub(p) ldub_data(p)
    125 #define ldsb(p) ldsb_data(p)
    126 #define lduw(p) lduw_data(p)
    127 #define ldsw(p) ldsw_data(p)
    128 #define ldl(p) ldl_data(p)
    129 #define ldq(p) ldq_data(p)
    130 
    131 #define stb(p, v) stb_data(p, v)
    132 #define stw(p, v) stw_data(p, v)
    133 #define stl(p, v) stl_data(p, v)
    134 #define stq(p, v) stq_data(p, v)
    135