path: root/sys/arm/include
diff options
authorAndrew Turner <andrew@FreeBSD.org>2012-06-24 04:15:58 +0000
committerAndrew Turner <andrew@FreeBSD.org>2012-06-24 04:15:58 +0000
commit74dc547e24c143e53bdcfdc02a718cf09abbf0f2 (patch)
treee552f71c40d544605624d7aef2aa2206548a6f01 /sys/arm/include
parentf745b1635901f37c921bc27de9aa80a6edc4d5fb (diff)
Make the wchar_t type machine dependent.
This is required for ARM EABI. Section 7.1.1 of the Procedure Call for the ARM Architecture (AAPCS) defines wchar_t as either an unsigned int or an unsigned short with the former preferred. Because of this requirement we need to move the definition of __wchar_t to a machine dependent header. It also cleans up the macros defining the limits of wchar_t by defining __WCHAR_MIN and __WCHAR_MAX in the same machine dependent header then using them to define WCHAR_MIN and WCHAR_MAX respectively. Discussed with: bde
Notes: svn path=/head/; revision=237517
Diffstat (limited to 'sys/arm/include')
2 files changed, 10 insertions, 6 deletions
diff --git a/sys/arm/include/_stdint.h b/sys/arm/include/_stdint.h
index 2a4f75afb4e5..50861284d8bc 100644
--- a/sys/arm/include/_stdint.h
+++ b/sys/arm/include/_stdint.h
@@ -149,12 +149,6 @@
/* Limit of size_t. */
-#ifndef WCHAR_MIN /* Also possibly defined in <wchar.h> */
-/* Limits of wchar_t. */
-#define WCHAR_MIN INT32_MIN
-#define WCHAR_MAX INT32_MAX
/* Limits of wint_t. */
#define WINT_MIN INT32_MIN
#define WINT_MAX INT32_MAX
diff --git a/sys/arm/include/_types.h b/sys/arm/include/_types.h
index 338c19c11136..7915d0b7cafd 100644
--- a/sys/arm/include/_types.h
+++ b/sys/arm/include/_types.h
@@ -105,6 +105,16 @@ typedef __uint32_t __vm_paddr_t;
typedef __uint64_t __vm_pindex_t;
typedef __uint32_t __vm_size_t;
+#ifdef __ARM_EABI__
+typedef unsigned int __wchar_t;
+#define __WCHAR_MIN 0 /* min value for a wchar_t */
+#define __WCHAR_MAX __UINT_MAX /* max value for a wchar_t */
+typedef int __wchar_t;
+#define __WCHAR_MIN __INT_MIN /* min value for a wchar_t */
+#define __WCHAR_MAX __INT_MAX /* max value for a wchar_t */
* Unusual type definitions.