[OpenBIOS] [PATCH] Introduce FMT_plx for phys_addr_t

Andreas Färber andreas.faerber at web.de
Sun Nov 7 18:39:33 CET 2010


Define a zero-padded format string to be used for phys_addr_t arguments.
Introduce PRIx{32,64} macros as needed.

Cc: Mark Cave-Ayland <mark.cave-ayland at siriusit.co.uk>
Cc: Blue Swirl <blauwirbel at gmail.com>
Signed-off-by: Andreas Färber <andreas.faerber at web.de>
---
 To play safe for bootstrapping and the x86/amd64/ia64 architectures,
 I resorted to PRIx32 / PRIx64. Tested that with a custom printk()
 on ppc. In future patches I'd like to extend their use to the cell
 definitions to avoid lx vs. l uint32_t and llx vs. lx uint64_t issues.
 
 Note that I intentionally used 9 for sparc32 to handle the additional
 nibble. On x86 since we're still using uint32_t I chose 8.
 
 Andreas
 
 include/arch/amd64/types.h   |    3 +++
 include/arch/ia64/types.h    |    3 +++
 include/arch/ppc/types.h     |    5 +++++
 include/arch/sparc32/types.h |    5 +++++
 include/arch/sparc64/types.h |    4 ++++
 include/arch/x86/types.h     |    3 +++
 6 files changed, 23 insertions(+), 0 deletions(-)

diff --git a/include/arch/amd64/types.h b/include/arch/amd64/types.h
index 672f02c..44d2182 100644
--- a/include/arch/amd64/types.h
+++ b/include/arch/amd64/types.h
@@ -17,8 +17,11 @@
 #include "autoconf.h"
 
 /* physical address */
+
 typedef uint64_t phys_addr_t;
 
+#define FMT_plx "%016" PRIx64
+
 /* cell based types */
 
 typedef long long     cell;
diff --git a/include/arch/ia64/types.h b/include/arch/ia64/types.h
index d423461..3bd2edb 100644
--- a/include/arch/ia64/types.h
+++ b/include/arch/ia64/types.h
@@ -18,8 +18,11 @@
 #include <endian.h>
 
 /* physical address */
+
 typedef uint64_t phys_addr_t;
 
+#define FMT_plx "%016" PRIx64
+
 /* cell based types */
 
 typedef int64_t       cell;
diff --git a/include/arch/ppc/types.h b/include/arch/ppc/types.h
index aaa66fc..ed9100c 100644
--- a/include/arch/ppc/types.h
+++ b/include/arch/ppc/types.h
@@ -25,6 +25,9 @@ typedef short           int16_t;
 typedef int             int32_t;
 typedef long long       int64_t;
 typedef long            intptr_t;
+
+#define PRIx32 "x"
+#define PRIx64 "llx"
 #endif
 
 /* endianess */
@@ -33,8 +36,10 @@ typedef long            intptr_t;
 /* physical address */
 #if defined(__powerpc64__)
 typedef uint64_t phys_addr_t;
+#define FMT_plx "%016" PRIx64
 #else
 typedef uint32_t phys_addr_t;
+#define FMT_plx "%08" PRIx32
 #endif
 
 /* cell based types */
diff --git a/include/arch/sparc32/types.h b/include/arch/sparc32/types.h
index bf96f57..7840e5b 100644
--- a/include/arch/sparc32/types.h
+++ b/include/arch/sparc32/types.h
@@ -25,14 +25,19 @@ typedef short           int16_t;
 typedef int             int32_t;
 typedef long long       int64_t;
 typedef long            intptr_t;
+
+#define PRIx64 "llx"
 #endif
 
 /* endianess */
 #include "autoconf.h"
 
 /* physical address: 36 bits */
+
 typedef uint64_t phys_addr_t;
 
+#define FMT_plx "%09" PRIx64
+
 /* cell based types */
 
 typedef int32_t		cell;
diff --git a/include/arch/sparc64/types.h b/include/arch/sparc64/types.h
index 8baa5ee..3a235d9 100644
--- a/include/arch/sparc64/types.h
+++ b/include/arch/sparc64/types.h
@@ -25,6 +25,8 @@ typedef short           int16_t;
 typedef int             int32_t;
 typedef long long       int64_t;
 typedef long            intptr_t;
+
+#define PRIx64 "llx"
 #endif
 
 /* endianess */
@@ -33,6 +35,8 @@ typedef long            intptr_t;
 /* physical address */
 typedef uint64_t phys_addr_t;
 
+#define FMT_plx "%016" PRIx64
+
 /* cell based types */
 typedef long long          cell;
 typedef unsigned long long ucell;
diff --git a/include/arch/x86/types.h b/include/arch/x86/types.h
index 3ba4807..3b1b331 100644
--- a/include/arch/x86/types.h
+++ b/include/arch/x86/types.h
@@ -18,8 +18,11 @@
 #include "autoconf.h"
 
 /* physical address: XXX theoretically 36 bits for PAE */
+
 typedef uint32_t phys_addr_t;
 
+#define FMT_plx "%08" PRIx32
+
 /* cell based types */
 
 typedef int32_t		cell;
-- 
1.7.3




More information about the OpenBIOS mailing list