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