diff --git a/include/lib/libc/aarch32/endian.h b/include/lib/libc/aarch32/endian_.h
similarity index 81%
rename from include/lib/libc/aarch32/endian.h
rename to include/lib/libc/aarch32/endian_.h
index 5fb94db..83a26b7 100644
--- a/include/lib/libc/aarch32/endian.h
+++ b/include/lib/libc/aarch32/endian_.h
@@ -31,11 +31,15 @@
  * $NetBSD: endian.h,v 1.7 1999/08/21 05:53:51 simonb Exp $
  * $FreeBSD$
  */
+/*
+ * Portions copyright (c) 2018, ARM Limited and Contributors.
+ * All rights reserved.
+ */
 
-#ifndef _ENDIAN_H_
-#define	_ENDIAN_H_
+#ifndef AARCH32_ENDIAN_H
+#define AARCH32_ENDIAN_H
 
-#include <sys/_types.h>
+#include <stdint.h>
 
 /*
  * Definitions for byte order, according to byte significance from low
@@ -61,10 +65,10 @@
 #ifdef __ARMEB__
 #define _QUAD_HIGHWORD 0
 #define _QUAD_LOWWORD 1
-#define __ntohl(x)	((__uint32_t)(x))
-#define __ntohs(x)	((__uint16_t)(x))
-#define __htonl(x)	((__uint32_t)(x))
-#define __htons(x)	((__uint16_t)(x))
+#define __ntohl(x)	((uint32_t)(x))
+#define __ntohs(x)	((uint16_t)(x))
+#define __htonl(x)	((uint32_t)(x))
+#define __htons(x)	((uint16_t)(x))
 #else
 #define _QUAD_HIGHWORD  1
 #define _QUAD_LOWWORD 0
@@ -74,20 +78,20 @@
 #define __htons(x)        (__bswap16(x))
 #endif /* __ARMEB__ */
 
-static __inline __uint64_t
-__bswap64(__uint64_t _x)
+static __inline uint64_t
+__bswap64(uint64_t _x)
 {
 
 	return ((_x >> 56) | ((_x >> 40) & 0xff00) | ((_x >> 24) & 0xff0000) |
-	    ((_x >> 8) & 0xff000000) | ((_x << 8) & ((__uint64_t)0xff << 32)) |
-	    ((_x << 24) & ((__uint64_t)0xff << 40)) |
-	    ((_x << 40) & ((__uint64_t)0xff << 48)) | ((_x << 56)));
+	    ((_x >> 8) & 0xff000000) | ((_x << 8) & ((uint64_t)0xff << 32)) |
+	    ((_x << 24) & ((uint64_t)0xff << 40)) |
+	    ((_x << 40) & ((uint64_t)0xff << 48)) | ((_x << 56)));
 }
 
-static __inline __uint32_t
-__bswap32_var(__uint32_t v)
+static __inline uint32_t
+__bswap32_var(uint32_t v)
 {
-	__uint32_t t1;
+	uint32_t t1;
 
 	__asm __volatile("eor %1, %0, %0, ror #16\n"
 	    		"bic %1, %1, #0x00ff0000\n"
@@ -98,10 +102,10 @@
 	return (v);
 }
 
-static __inline __uint16_t
-__bswap16_var(__uint16_t v)
+static __inline uint16_t
+__bswap16_var(uint16_t v)
 {
-	__uint32_t ret = v & 0xffff;
+	uint32_t ret = v & 0xffff;
 
 	__asm __volatile(
 	    "mov    %0, %0, ror #8\n"
@@ -109,7 +113,7 @@
 	    "bic    %0, %0, %0, lsl #16"
 	    : "+r" (ret));
 
-	return ((__uint16_t)ret);
+	return ((uint16_t)ret);
 }
 
 #ifdef __OPTIMIZE__
@@ -125,12 +129,12 @@
      (((x) & 0x00ff) << 8))
 
 #define __bswap16(x)	\
-    ((__uint16_t)(__builtin_constant_p(x) ?	\
+    ((uint16_t)(__builtin_constant_p(x) ?	\
      __bswap16_constant(x) :			\
      __bswap16_var(x)))
 
 #define __bswap32(x)	\
-    ((__uint32_t)(__builtin_constant_p(x) ? 	\
+    ((uint32_t)(__builtin_constant_p(x) ? 	\
      __bswap32_constant(x) :			\
      __bswap32_var(x)))
 
@@ -139,4 +143,4 @@
 #define __bswap32(x)	__bswap32_var(x)
 
 #endif /* __OPTIMIZE__ */
-#endif /* !_ENDIAN_H_ */
+#endif /* AARCH32_ENDIAN_H */
diff --git a/include/lib/libc/aarch64/endian.h b/include/lib/libc/aarch64/endian_.h
similarity index 82%
rename from include/lib/libc/aarch64/endian.h
rename to include/lib/libc/aarch64/endian_.h
index 52b9a32..c60b475 100644
--- a/include/lib/libc/aarch64/endian.h
+++ b/include/lib/libc/aarch64/endian_.h
@@ -1,4 +1,6 @@
 /*-
+ * SPDX-License-Identifier: BSD-3-Clause
+ *
  * Copyright (c) 2001 David E. O'Brien
  *
  * Redistribution and use in source and binary forms, with or without
@@ -29,11 +31,15 @@
  * $NetBSD: endian.h,v 1.7 1999/08/21 05:53:51 simonb Exp $
  * $FreeBSD$
  */
+/*
+ * Portions copyright (c) 2018, ARM Limited and Contributors.
+ * All rights reserved.
+ */
 
-#ifndef _MACHINE_ENDIAN_H_
-#define	_MACHINE_ENDIAN_H_
+#ifndef AARCH64_ENDIAN_H
+#define AARCH64_ENDIAN_H
 
-#include <sys/_types.h>
+#include <stdint.h>
 
 /*
  * Definitions for byte order, according to byte significance from low
@@ -59,38 +65,38 @@
 #define	__htonl(x)        (__bswap32(x))
 #define	__htons(x)        (__bswap16(x))
 
-static __inline __uint64_t
-__bswap64(__uint64_t x)
+static __inline uint64_t
+__bswap64(uint64_t x)
 {
-	__uint64_t ret;
+	uint64_t ret;
 
 	__asm __volatile("rev %0, %1\n"
 			 : "=&r" (ret), "+r" (x));
-	
+
 	return (ret);
 }
 
-static __inline __uint32_t
-__bswap32_var(__uint32_t v)
+static __inline uint32_t
+__bswap32_var(uint32_t v)
 {
-	__uint32_t ret;
+	uint32_t ret;
 
 	__asm __volatile("rev32 %x0, %x1\n"
 			 : "=&r" (ret), "+r" (v));
-	
+
 	return (ret);
 }
 
-static __inline __uint16_t
-__bswap16_var(__uint16_t v)
+static __inline uint16_t
+__bswap16_var(uint16_t v)
 {
-	__uint32_t ret;
+	uint32_t ret;
 
 	__asm __volatile("rev16 %w0, %w1\n"
 			 : "=&r" (ret), "+r" (v));
 
-	return ((__uint16_t)ret);
-}		
+	return ((uint16_t)ret);
+}
 
 #ifdef __OPTIMIZE__
 
@@ -105,13 +111,13 @@
      (((x) & 0x00ff) << 8))
 
 #define	__bswap16(x)	\
-    ((__uint16_t)(__builtin_constant_p(x) ?	\
-     __bswap16_constant((__uint16_t)(x)) :	\
+    ((uint16_t)(__builtin_constant_p(x) ?	\
+     __bswap16_constant((uint16_t)(x)) :	\
      __bswap16_var(x)))
 
 #define	__bswap32(x)	\
-    ((__uint32_t)(__builtin_constant_p(x) ? 	\
-     __bswap32_constant((__uint32_t)(x)) :	\
+    ((uint32_t)(__builtin_constant_p(x) ? 	\
+     __bswap32_constant((uint32_t)(x)) :	\
      __bswap32_var(x)))
 
 #else
@@ -119,4 +125,4 @@
 #define	__bswap32(x)	__bswap32_var(x)
 
 #endif /* __OPTIMIZE__ */
-#endif /* !_MACHINE_ENDIAN_H_ */
+#endif /* AARCH64_ENDIAN_H */
diff --git a/include/lib/libc/endian.h b/include/lib/libc/endian.h
index 3cef613..2cc4c5f 100644
--- a/include/lib/libc/endian.h
+++ b/include/lib/libc/endian.h
@@ -27,34 +27,18 @@
  *
  * $FreeBSD$
  */
+/*
+ * Portions copyright (c) 2018, ARM Limited and Contributors.
+ * All rights reserved.
+ */
 
-#ifndef _SYS_ENDIAN_H_
-#define _SYS_ENDIAN_H_
+#ifndef ENDIAN_H
+#define ENDIAN_H
 
-#include <sys/cdefs.h>
-#include <sys/_types.h>
-#include <machine/endian.h>
+#include <cdefs.h>
+#include <stdint.h>
+#include <endian_.h>
 
-#ifndef _UINT8_T_DECLARED
-typedef	__uint8_t	uint8_t;
-#define	_UINT8_T_DECLARED
-#endif
- 
-#ifndef _UINT16_T_DECLARED
-typedef	__uint16_t	uint16_t;
-#define	_UINT16_T_DECLARED
-#endif
- 
-#ifndef _UINT32_T_DECLARED
-typedef	__uint32_t	uint32_t;
-#define	_UINT32_T_DECLARED
-#endif
- 
-#ifndef _UINT64_T_DECLARED
-typedef	__uint64_t	uint64_t;
-#define	_UINT64_T_DECLARED
-#endif
- 
 /*
  * General byte order swapping functions.
  */
@@ -204,4 +188,4 @@
 	le32enc(p + 4, (uint32_t)(u >> 32));
 }
 
-#endif	/* _SYS_ENDIAN_H_ */
+#endif /* SYS_ENDIAN_H */
diff --git a/include/lib/libc/errno.h b/include/lib/libc/errno.h
index ad140ab..029912f 100644
--- a/include/lib/libc/errno.h
+++ b/include/lib/libc/errno.h
@@ -36,17 +36,13 @@
  *	@(#)errno.h	8.5 (Berkeley) 1/21/94
  * $FreeBSD$
  */
+/*
+ * Portions copyright (c) 2018, ARM Limited and Contributors.
+ * All rights reserved.
+ */
 
-#ifndef _SYS_ERRNO_H_
-#define _SYS_ERRNO_H_
-
-#if !defined(_KERNEL) && !defined(_STANDALONE)
-#include <sys/cdefs.h>
-__BEGIN_DECLS
-int *	__error(void);
-__END_DECLS
-#define	errno		(* __error())
-#endif
+#ifndef ERRNO_H
+#define ERRNO_H
 
 #define	EPERM		1		/* Operation not permitted */
 #define	ENOENT		2		/* No such file or directory */
@@ -63,9 +59,7 @@
 #define	ENOMEM		12		/* Cannot allocate memory */
 #define	EACCES		13		/* Permission denied */
 #define	EFAULT		14		/* Bad address */
-#ifndef _POSIX_SOURCE
 #define	ENOTBLK		15		/* Block device required */
-#endif
 #define	EBUSY		16		/* Device busy */
 #define	EEXIST		17		/* File exists */
 #define	EXDEV		18		/* Cross-device link */
@@ -76,9 +70,7 @@
 #define	ENFILE		23		/* Too many open files in system */
 #define	EMFILE		24		/* Too many open files */
 #define	ENOTTY		25		/* Inappropriate ioctl for device */
-#ifndef _POSIX_SOURCE
 #define	ETXTBSY		26		/* Text file busy */
-#endif
 #define	EFBIG		27		/* File too large */
 #define	ENOSPC		28		/* No space left on device */
 #define	ESPIPE		29		/* Illegal seek */
@@ -92,7 +84,6 @@
 
 /* non-blocking and interrupt i/o */
 #define	EAGAIN		35		/* Resource temporarily unavailable */
-#ifndef _POSIX_SOURCE
 #define	EWOULDBLOCK	EAGAIN		/* Operation would block */
 #define	EINPROGRESS	36		/* Operation now in progress */
 #define	EALREADY	37		/* Operation already in progress */
@@ -127,18 +118,14 @@
 #define	ECONNREFUSED	61		/* Connection refused */
 
 #define	ELOOP		62		/* Too many levels of symbolic links */
-#endif /* _POSIX_SOURCE */
 #define	ENAMETOOLONG	63		/* File name too long */
 
 /* should be rearranged */
-#ifndef _POSIX_SOURCE
 #define	EHOSTDOWN	64		/* Host is down */
 #define	EHOSTUNREACH	65		/* No route to host */
-#endif /* _POSIX_SOURCE */
 #define	ENOTEMPTY	66		/* Directory not empty */
 
 /* quotas & mush */
-#ifndef _POSIX_SOURCE
 #define	EPROCLIM	67		/* Too many processes */
 #define	EUSERS		68		/* Too many users */
 #define	EDQUOT		69		/* Disc quota exceeded */
@@ -151,12 +138,10 @@
 #define	EPROGUNAVAIL	74		/* RPC prog. not avail */
 #define	EPROGMISMATCH	75		/* Program version wrong */
 #define	EPROCUNAVAIL	76		/* Bad procedure for program */
-#endif /* _POSIX_SOURCE */
 
 #define	ENOLCK		77		/* No locks available */
 #define	ENOSYS		78		/* Function not implemented */
 
-#ifndef _POSIX_SOURCE
 #define	EFTYPE		79		/* Inappropriate file type or format */
 #define	EAUTH		80		/* Authentication error */
 #define	ENEEDAUTH	81		/* Need authenticator */
@@ -168,41 +153,17 @@
 #define	ENOATTR		87		/* Attribute not found */
 
 #define	EDOOFUS		88		/* Programming error */
-#endif /* _POSIX_SOURCE */
 
 #define	EBADMSG		89		/* Bad message */
 #define	EMULTIHOP	90		/* Multihop attempted */
 #define	ENOLINK		91		/* Link has been severed */
 #define	EPROTO		92		/* Protocol error */
 
-#ifndef _POSIX_SOURCE
 #define	ENOTCAPABLE	93		/* Capabilities insufficient */
 #define	ECAPMODE	94		/* Not permitted in capability mode */
 #define	ENOTRECOVERABLE	95		/* State not recoverable */
 #define	EOWNERDEAD	96		/* Previous owner died */
-#endif /* _POSIX_SOURCE */
 
-#ifndef _POSIX_SOURCE
 #define	ELAST		96		/* Must be equal largest errno */
-#endif /* _POSIX_SOURCE */
-
-#if defined(_KERNEL) || defined(_WANT_KERNEL_ERRNO)
-/* pseudo-errors returned inside kernel to modify return to process */
-#define	ERESTART	(-1)		/* restart syscall */
-#define	EJUSTRETURN	(-2)		/* don't modify regs, just return */
-#define	ENOIOCTL	(-3)		/* ioctl not handled by this layer */
-#define	EDIRIOCTL	(-4)		/* do direct ioctl in GEOM */
-#define	ERELOOKUP	(-5)		/* retry the directory lookup */
-#endif
-
-#ifndef _KERNEL
-#if __EXT1_VISIBLE
-/* ISO/IEC 9899:2011 K.3.2.2 */
-#ifndef _ERRNO_T_DEFINED
-#define _ERRNO_T_DEFINED
-typedef int errno_t;
-#endif
-#endif /* __EXT1_VISIBLE */
-#endif
 
-#endif
+#endif /* ERRNO_H */
