2009-10-02 01:12:16 +04:00
|
|
|
/* Define target_phys_addr_t if it exists. */
|
2009-05-19 19:17:58 +04:00
|
|
|
|
|
|
|
#ifndef TARGPHYS_H
|
|
|
|
#define TARGPHYS_H
|
|
|
|
|
|
|
|
#ifdef TARGET_PHYS_ADDR_BITS
|
2009-10-02 01:12:16 +04:00
|
|
|
/* target_phys_addr_t is the type of a physical address (its size can
|
2010-04-05 03:28:53 +04:00
|
|
|
be different from 'target_ulong'). */
|
2009-05-19 19:17:58 +04:00
|
|
|
|
|
|
|
#if TARGET_PHYS_ADDR_BITS == 32
|
2009-10-02 01:12:16 +04:00
|
|
|
typedef uint32_t target_phys_addr_t;
|
2009-05-23 01:51:45 +04:00
|
|
|
#define TARGET_PHYS_ADDR_MAX UINT32_MAX
|
2009-05-19 19:17:58 +04:00
|
|
|
#define TARGET_FMT_plx "%08x"
|
2012-06-25 19:52:21 +04:00
|
|
|
/* Format strings for printing target_phys_addr_t types.
|
|
|
|
* These are recommended over the less flexible TARGET_FMT_plx,
|
|
|
|
* which is retained for the benefit of existing code.
|
|
|
|
*/
|
|
|
|
#define TARGET_PRIdPHYS PRId32
|
|
|
|
#define TARGET_PRIiPHYS PRIi32
|
|
|
|
#define TARGET_PRIoPHYS PRIo32
|
|
|
|
#define TARGET_PRIuPHYS PRIu32
|
|
|
|
#define TARGET_PRIxPHYS PRIx32
|
|
|
|
#define TARGET_PRIXPHYS PRIX32
|
2009-05-19 19:17:58 +04:00
|
|
|
#elif TARGET_PHYS_ADDR_BITS == 64
|
2009-10-02 01:12:16 +04:00
|
|
|
typedef uint64_t target_phys_addr_t;
|
2009-05-23 01:51:45 +04:00
|
|
|
#define TARGET_PHYS_ADDR_MAX UINT64_MAX
|
2009-05-19 19:17:58 +04:00
|
|
|
#define TARGET_FMT_plx "%016" PRIx64
|
2012-06-25 19:52:21 +04:00
|
|
|
#define TARGET_PRIdPHYS PRId64
|
|
|
|
#define TARGET_PRIiPHYS PRIi64
|
|
|
|
#define TARGET_PRIoPHYS PRIo64
|
|
|
|
#define TARGET_PRIuPHYS PRIu64
|
|
|
|
#define TARGET_PRIxPHYS PRIx64
|
|
|
|
#define TARGET_PRIXPHYS PRIX64
|
2009-05-19 19:17:58 +04:00
|
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif
|