/[qemu]/qemu/target-i386/exec.h
ViewVC logotype

Diff of /qemu/target-i386/exec.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by bellard, Tue Sep 30 20:33:28 2003 UTC revision 1.2 by bellard, Mon Oct 27 21:22:23 2003 UTC
# Line 137  void helper_invlpg(unsigned int addr); Line 137  void helper_invlpg(unsigned int addr);
137  void cpu_x86_update_cr0(CPUX86State *env);  void cpu_x86_update_cr0(CPUX86State *env);
138  void cpu_x86_update_cr3(CPUX86State *env);  void cpu_x86_update_cr3(CPUX86State *env);
139  void cpu_x86_flush_tlb(CPUX86State *env, uint32_t addr);  void cpu_x86_flush_tlb(CPUX86State *env, uint32_t addr);
140  int cpu_x86_handle_mmu_fault(CPUX86State *env, uint32_t addr, int is_write);  int cpu_x86_handle_mmu_fault(CPUX86State *env, uint32_t addr,
141  void tlb_fill(unsigned long addr, int is_write, void *retaddr);                               int is_write, int is_user, int is_softmmu);
142    void tlb_fill(unsigned long addr, int is_write, int is_user,
143                  void *retaddr);
144  void __hidden cpu_lock(void);  void __hidden cpu_lock(void);
145  void __hidden cpu_unlock(void);  void __hidden cpu_unlock(void);
146  void do_interrupt(int intno, int is_int, int error_code,  void do_interrupt(int intno, int is_int, int error_code,
# Line 366  static inline void load_eflags(int eflag Line 368  static inline void load_eflags(int eflag
368          (eflags & update_mask);          (eflags & update_mask);
369  }  }
370    
371  /* memory access macros */  /* XXX: move that to a generic header */
372    #if !defined(CONFIG_USER_ONLY)
373    
 #define ldul ldl  
 #define lduq ldq  
374  #define ldul_user ldl_user  #define ldul_user ldl_user
375  #define ldul_kernel ldl_kernel  #define ldul_kernel ldl_kernel
376    
377  #define ldub_raw ldub  #define ACCESS_TYPE 0
378  #define ldsb_raw ldsb  #define MEMSUFFIX _kernel
379  #define lduw_raw lduw  #define DATA_SIZE 1
380  #define ldsw_raw ldsw  #include "softmmu_header.h"
381  #define ldl_raw ldl  
382  #define ldq_raw ldq  #define DATA_SIZE 2
383    #include "softmmu_header.h"
384  #define stb_raw stb  
385  #define stw_raw stw  #define DATA_SIZE 4
386  #define stl_raw stl  #include "softmmu_header.h"
387  #define stq_raw stq  
388    #define DATA_SIZE 8
389    #include "softmmu_header.h"
390    #undef ACCESS_TYPE
391    #undef MEMSUFFIX
392    
393  #define MEMUSER 0  #define ACCESS_TYPE 1
394    #define MEMSUFFIX _user
395  #define DATA_SIZE 1  #define DATA_SIZE 1
396  #include "softmmu_header.h"  #include "softmmu_header.h"
397    
# Line 397  static inline void load_eflags(int eflag Line 403  static inline void load_eflags(int eflag
403    
404  #define DATA_SIZE 8  #define DATA_SIZE 8
405  #include "softmmu_header.h"  #include "softmmu_header.h"
406    #undef ACCESS_TYPE
407    #undef MEMSUFFIX
408    
409  #undef MEMUSER  /* these access are slower, they must be as rare as possible */
410  #define MEMUSER 1  #define ACCESS_TYPE 2
411    #define MEMSUFFIX _data
412  #define DATA_SIZE 1  #define DATA_SIZE 1
413  #include "softmmu_header.h"  #include "softmmu_header.h"
414    
# Line 411  static inline void load_eflags(int eflag Line 420  static inline void load_eflags(int eflag
420    
421  #define DATA_SIZE 8  #define DATA_SIZE 8
422  #include "softmmu_header.h"  #include "softmmu_header.h"
423    #undef ACCESS_TYPE
424    #undef MEMSUFFIX
425    
426    #define ldub(p) ldub_data(p)
427    #define ldsb(p) ldsb_data(p)
428    #define lduw(p) lduw_data(p)
429    #define ldsw(p) ldsw_data(p)
430    #define ldl(p) ldl_data(p)
431    #define ldq(p) ldq_data(p)
432    
433    #define stb(p, v) stb_data(p, v)
434    #define stw(p, v) stw_data(p, v)
435    #define stl(p, v) stl_data(p, v)
436    #define stq(p, v) stq_data(p, v)
437    
438  #undef MEMUSER  static inline double ldfq(void *ptr)
439    {
440        union {
441            double d;
442            uint64_t i;
443        } u;
444        u.i = ldq(ptr);
445        return u.d;
446    }
447    
448    static inline void stfq(void *ptr, double v)
449    {
450        union {
451            double d;
452            uint64_t i;
453        } u;
454        u.d = v;
455        stq(ptr, u.i);
456    }
457    
458    static inline float ldfl(void *ptr)
459    {
460        union {
461            float f;
462            uint32_t i;
463        } u;
464        u.i = ldl(ptr);
465        return u.f;
466    }
467    
468    static inline void stfl(void *ptr, float v)
469    {
470        union {
471            float f;
472            uint32_t i;
473        } u;
474        u.f = v;
475        stl(ptr, u.i);
476    }
477    
478    #endif /* !defined(CONFIG_USER_ONLY) */

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26