From: batt Date: Wed, 20 Jan 2010 16:38:52 +0000 (+0000) Subject: Import fix from preempt branch. X-Git-Tag: 2.4.0~60 X-Git-Url: https://codewiz.org/gitweb?a=commitdiff_plain;h=c98d648bb4da97fbb3e0249f7901bb2f04b9baf1;p=bertos.git Import fix from preempt branch. git-svn-id: https://src.develer.com/svnoss/bertos/trunk@3160 38d2e660-2303-0410-9eaa-f027e97ec537 --- diff --git a/bertos/cpu/types.h b/bertos/cpu/types.h index daeec2ea..252d77a9 100644 --- a/bertos/cpu/types.h +++ b/bertos/cpu/types.h @@ -174,6 +174,16 @@ #endif #endif +#ifndef SIZEOF_SIZE_T +#if CPU_REG_BITS < 32 + #define SIZEOF_SIZE_T 2 +#elif CPU_REG_BITS == 32 + #define SIZEOF_SIZE_T 4 +#else /* CPU_REG_BITS > 32 */ + #define SIZEOF_SIZE_T 8 +#endif +#endif + #ifndef CPU_BITS_PER_CHAR #define CPU_BITS_PER_CHAR (SIZEOF_CHAR * 8) #endif @@ -215,6 +225,6 @@ STATIC_ASSERT(sizeof(uint64_t) * CPU_BITS_PER_CHAR == 64); #endif STATIC_ASSERT(sizeof(cpu_stack_t) == SIZEOF_CPUSTACK_T); STATIC_ASSERT(sizeof(cpu_aligned_stack_t) == SIZEOF_CPUALIGNED_T); - +STATIC_ASSERT(sizeof(size_t) == SIZEOF_SIZE_T); #endif /* CPU_TYPES_H */ diff --git a/bertos/mware/formatwr.c b/bertos/mware/formatwr.c index 996f8df0..7293c4dc 100644 --- a/bertos/mware/formatwr.c +++ b/bertos/mware/formatwr.c @@ -505,14 +505,21 @@ NEXT_FLAG: { case 'l': case 'L': + #if SIZEOF_SIZE_T == SIZEOF_LONG case 'z': flags.l_L_modifier = true; + #elif SIZEOF_SIZE_T == SIZEOF_INT + flags.l_L_modifier = true; + case 'z': + #endif format++; break; + case 'h': flags.h_modifier = true; format++; break; + } /* @@ -853,10 +860,13 @@ FLOATING_CONVERSION: switch (PGM_READ_CHAR(format)) { case 'l': + #if SIZEOF_SIZE_T == SIZEOF_LONG case 'z': - /* for the 'z' modifier, we make this assumption */ - STATIC_ASSERT(sizeof(size_t) == sizeof(long)); l_modifier = true; + #elif SIZEOF_SIZE_T == SIZEOF_INT + l_modifier = true; + case 'z': + #endif format++; break;