aboutsummaryrefslogtreecommitdiff
path: root/targphys.h
diff options
context:
space:
mode:
authorPaul Brook <paul@codesourcery.com>2009-05-19 16:17:58 +0100
committerPaul Brook <paul@codesourcery.com>2009-05-19 16:17:58 +0100
commit1ad2134f914dfd4c8f92307c94c9a5a1e28f0059 (patch)
treefafeb00db8346df20b35434ea3f1eaad1fd67832 /targphys.h
parent8a637d444387bbdb60eff803d321244487521c86 (diff)
Hardware convenience library
The only target dependency for most hardware is sizeof(target_phys_addr_t). Build these files into a convenience library, and use that instead of building for every target. Remove and poison various target specific macros to avoid bogus target dependencies creeping back in. Big/Little endian is not handled because devices should not know or care about this to start with. Signed-off-by: Paul Brook <paul@codesourcery.com>
Diffstat (limited to 'targphys.h')
-rw-r--r--targphys.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/targphys.h b/targphys.h
new file mode 100644
index 0000000000..81a9c37335
--- /dev/null
+++ b/targphys.h
@@ -0,0 +1,22 @@
+/* Define target_phys_addr_t if it exists. */
+
+#ifndef TARGPHYS_H
+#define TARGPHYS_H
+
+#ifdef TARGET_PHYS_ADDR_BITS
+/* target_phys_addr_t is the type of a physical address (its size can
+ be different from 'target_ulong'). We have sizeof(target_phys_addr)
+ = max(sizeof(unsigned long),
+ sizeof(size_of_target_physical_address)) because we must pass a
+ host pointer to memory operations in some cases */
+
+#if TARGET_PHYS_ADDR_BITS == 32
+typedef uint32_t target_phys_addr_t;
+#define TARGET_FMT_plx "%08x"
+#elif TARGET_PHYS_ADDR_BITS == 64
+typedef uint64_t target_phys_addr_t;
+#define TARGET_FMT_plx "%016" PRIx64
+#endif
+#endif
+
+#endif