From: Mike Frysinger Date: Sat, 20 Jun 2015 09:36:26 +0000 (+0545) Subject: sim: common: add PRI printf defines X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=37258e9950490293bb00808a55d82dea640efe6c;p=binutils-gdb.git sim: common: add PRI printf defines Keeping track of the right printf formats for the various types can be a pretty big hassle, especially in common code which has to support a variety of bitsizes. Take a page from the existing standards and add a set of PRI macros which hide the details in a common header. --- diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog index ddf4558ed2f..464fd80e1de 100644 --- a/sim/common/ChangeLog +++ b/sim/common/ChangeLog @@ -1,3 +1,11 @@ +2015-11-21 Mike Frysinger + + * sim-types.h (SIM_PRI_TB): Define. + (PRI_TW, PRIiTW, PRIxTW): New PRI target word defines. + (PRI_TA, PRIiTA, PRIxTA): New PRI target address defines. + (PRI_TC, PRIiTC, PRIxTC): New PRI target cell defines. + (PRI_TF, PRIiTF, PRIxTF): New PRI target floating point defines. + 2015-11-17 Mike Frysinger * sim-main.h (WITH_MODULO_MEMORY): Delete. diff --git a/sim/common/sim-types.h b/sim/common/sim-types.h index 862f4e0b1c6..7e0a34ac569 100644 --- a/sim/common/sim-types.h +++ b/sim/common/sim-types.h @@ -87,6 +87,10 @@ typedef unsigned64 unsigned_8; typedef unsigned128 unsigned_16; +/* Macros for printf. Usage is restricted to this header. */ +#define SIM_PRI_TB(t, b) XCONCAT3 (PRI,t,b) + + /* for general work, the following are defined */ /* unsigned: >= 32 bits */ /* signed: >= 32 bits */ @@ -107,6 +111,10 @@ typedef unsigned16 unsigned_word; typedef signed16 signed_word; #endif +#define PRI_TW(t) SIM_PRI_TB (t, WITH_TARGET_WORD_BITSIZE) +#define PRIiTW PRI_TW (i) +#define PRIxTW PRI_TW (x) + /* Other instructions */ #if (WITH_TARGET_ADDRESS_BITSIZE == 64) @@ -123,6 +131,10 @@ typedef signed16 signed_address; #endif typedef unsigned_address address_word; +#define PRI_TA(t) SIM_PRI_TB (t, WITH_TARGET_ADDRESS_BITSIZE) +#define PRIiTA PRI_TA (i) +#define PRIxTA PRI_TA (x) + /* IEEE 1275 cell size */ #if (WITH_TARGET_CELL_BITSIZE == 64) @@ -135,6 +147,10 @@ typedef signed32 signed_cell; #endif typedef signed_cell cell_word; /* cells are normally signed */ +#define PRI_TC(t) SIM_PRI_TB (t, WITH_TARGET_CELL_BITSIZE) +#define PRIiTC PRI_TC (i) +#define PRIxTC PRI_TC (x) + /* Floating point registers */ #if (WITH_TARGET_FLOATING_POINT_BITSIZE == 64) @@ -144,4 +160,8 @@ typedef unsigned64 fp_word; typedef unsigned32 fp_word; #endif +#define PRI_TF(t) SIM_PRI_TB (t, WITH_TARGET_FLOATING_POINT_BITSIZE) +#define PRIiTF PRI_TF (i) +#define PRIxTF PRI_TF (x) + #endif