Home | History | Annotate | Download | only in qemu
      1 /* Copyright (C) 2007-2009 The Android Open Source Project
      2 **
      3 ** This software is licensed under the terms of the GNU General Public
      4 ** License version 2, as published by the Free Software Foundation, and
      5 ** may be copied, distributed, and modified under those terms.
      6 **
      7 ** This program is distributed in the hope that it will be useful,
      8 ** but WITHOUT ANY WARRANTY; without even the implied warranty of
      9 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     10 ** GNU General Public License for more details.
     11 */
     12 
     13 /*
     14  * Contains SOFTMMU macros expansion for ldx_user and stx_user routines used
     15  * outside of JIT. The issue is that regular implementation of these routines
     16  * assumes that pointer to CPU environment is stored in ebp register, which
     17  * is true for calls made inside JIT, but is not necessarily true for calls
     18  * made outside of JIT. The way SOFTMMU macros are expanded in this header
     19  * enforces ldx/stx routines to use CPU environment stored in cpu_single_env
     20  * variable.
     21  */
     22 
     23 #include "qemu-common.h"
     24 #include "cpu.h"
     25 #include "exec-all.h"
     26 
     27 #define OUTSIDE_JIT
     28 #define MMUSUFFIX       _outside_jit
     29 #define GETPC()         NULL
     30 #define env             cpu_single_env
     31 #define ACCESS_TYPE     1
     32 #define CPU_MMU_INDEX   (cpu_mmu_index(env))
     33 
     34 #define SHIFT 0
     35 #include "softmmu_template.h"
     36 
     37 #define SHIFT 1
     38 #include "softmmu_template.h"
     39 
     40 #define SHIFT 2
     41 #include "softmmu_template.h"
     42 
     43 #define SHIFT 3
     44 #include "softmmu_template.h"
     45 
     46 #undef CPU_MMU_INDEX
     47 #undef ACCESS_TYPE
     48 #undef env
     49 #undef MMUSUFFIX
     50