Revision b9f83121

b/cpu-all.h
634 634

  
635 635
/* All direct uses of g2h and h2g need to go away for usermode softmmu.  */
636 636
#define g2h(x) ((void *)((unsigned long)(x) + GUEST_BASE))
637

  
638
#if HOST_LONG_BITS <= TARGET_VIRT_ADDR_SPACE_BITS
639
#define h2g_valid(x) 1
640
#else
641
#define h2g_valid(x) ({ \
642
    unsigned long __guest = (unsigned long)(x) - GUEST_BASE; \
643
    __guest < (1ul << TARGET_VIRT_ADDR_SPACE_BITS); \
644
})
645
#endif
646

  
637 647
#define h2g(x) ({ \
638 648
    unsigned long __ret = (unsigned long)(x) - GUEST_BASE; \
639 649
    /* Check if given address fits target address space */ \
640
    assert(__ret == (abi_ulong)__ret); \
650
    assert(h2g_valid(x)); \
641 651
    (abi_ulong)__ret; \
642 652
})
643
#define h2g_valid(x) ({ \
644
    unsigned long __guest = (unsigned long)(x) - GUEST_BASE; \
645
    (__guest == (abi_ulong)__guest); \
646
})
647 653

  
648 654
#define saddr(x) g2h(x)
649 655
#define laddr(x) g2h(x)

Also available in: Unified diff