Index: boot/arch/arm32/include/types.h
===================================================================
--- boot/arch/arm32/include/types.h	(revision 3c5b86c2ca53284195eca328c9cf627b285959a3)
+++ boot/arch/arm32/include/types.h	(revision e330da6e8c9b0dc3c32eed16c06b64b13f0a6963)
@@ -45,4 +45,6 @@
 typedef uint32_t pfn_t;
 
+typedef int32_t ptrdiff_t;
+
 typedef struct {
 	/** Address where the task was placed. */
Index: boot/arch/ia64/include/types.h
===================================================================
--- boot/arch/ia64/include/types.h	(revision 3c5b86c2ca53284195eca328c9cf627b285959a3)
+++ boot/arch/ia64/include/types.h	(revision e330da6e8c9b0dc3c32eed16c06b64b13f0a6963)
@@ -40,4 +40,6 @@
 typedef uint64_t uintptr_t;
 
+typedef int64_t ptrdiff_t;
+
 typedef struct {
 	void *addr;
Index: boot/arch/mips32/include/types.h
===================================================================
--- boot/arch/mips32/include/types.h	(revision 3c5b86c2ca53284195eca328c9cf627b285959a3)
+++ boot/arch/mips32/include/types.h	(revision e330da6e8c9b0dc3c32eed16c06b64b13f0a6963)
@@ -37,4 +37,6 @@
 typedef uint32_t uintptr_t;
 
+typedef int32_t ptrdiff_t;
+
 typedef struct {
 	/** Address where the task was placed. */
Index: boot/arch/ppc32/include/types.h
===================================================================
--- boot/arch/ppc32/include/types.h	(revision 3c5b86c2ca53284195eca328c9cf627b285959a3)
+++ boot/arch/ppc32/include/types.h	(revision e330da6e8c9b0dc3c32eed16c06b64b13f0a6963)
@@ -38,4 +38,6 @@
 typedef int32_t native_t;
 
+typedef int32_t ptrdiff_t;
+
 typedef struct {
 	void *addr;
Index: boot/arch/riscv64/include/types.h
===================================================================
--- boot/arch/riscv64/include/types.h	(revision 3c5b86c2ca53284195eca328c9cf627b285959a3)
+++ boot/arch/riscv64/include/types.h	(revision e330da6e8c9b0dc3c32eed16c06b64b13f0a6963)
@@ -37,4 +37,6 @@
 typedef uint64_t uintptr_t;
 
+typedef int64_t ptrdiff_t;
+
 typedef struct {
 	void *start;
Index: boot/arch/sparc64/include/types.h
===================================================================
--- boot/arch/sparc64/include/types.h	(revision 3c5b86c2ca53284195eca328c9cf627b285959a3)
+++ boot/arch/sparc64/include/types.h	(revision e330da6e8c9b0dc3c32eed16c06b64b13f0a6963)
@@ -38,4 +38,6 @@
 typedef int64_t native_t;
 
+typedef int64_t ptrdiff_t;
+
 typedef struct {
 	void *addr;
Index: boot/generic/src/printf_core.c
===================================================================
--- boot/generic/src/printf_core.c	(revision 3c5b86c2ca53284195eca328c9cf627b285959a3)
+++ boot/generic/src/printf_core.c	(revision e330da6e8c9b0dc3c32eed16c06b64b13f0a6963)
@@ -605,7 +605,10 @@
 			
 			switch (uc) {
-			/** @todo Unimplemented qualifiers:
-			 *        t ptrdiff_t - ISO C 99
-			 */
+			case 't':
+				/* ptrdiff_t */
+				if (sizeof(ptrdiff_t) == sizeof(int32_t))
+					qualifier = PrintfQualifierInt;
+				else
+					qualifier = PrintfQualifierLongLong;
 			case 'h':
 				/* Char or short */
