diff --git a/target/linux/uml/patches-2.6.30/003-fix_memcpy_export_on_x86_64.patch b/target/linux/uml/patches-2.6.30/003-fix_memcpy_export_on_x86_64.patch
new file mode 100644
index 0000000000000000000000000000000000000000..7d2efe46224a3548242072fc852bbbb517102af0
--- /dev/null
+++ b/target/linux/uml/patches-2.6.30/003-fix_memcpy_export_on_x86_64.patch
@@ -0,0 +1,11 @@
+--- a/arch/um/os-Linux/user_syms.c
++++ b/arch/um/os-Linux/user_syms.c
+@@ -23,7 +23,7 @@ extern int printf(const char *, ...);
+ EXPORT_SYMBOL(strstr);
+ #endif
+ 
+-#ifndef __x86_64__
++#if !defined(__x86_64) || (__GNUC__ == 4 && __GNUC_MINOR__ < 3) || (__GNUC__ < 4)
+ extern void *memcpy(void *, const void *, size_t);
+ EXPORT_SYMBOL(memcpy);
+ #endif
diff --git a/target/linux/uml/patches-2.6.32/003-fix_memcpy_export_on_x86_64.patch b/target/linux/uml/patches-2.6.32/003-fix_memcpy_export_on_x86_64.patch
new file mode 100644
index 0000000000000000000000000000000000000000..7d2efe46224a3548242072fc852bbbb517102af0
--- /dev/null
+++ b/target/linux/uml/patches-2.6.32/003-fix_memcpy_export_on_x86_64.patch
@@ -0,0 +1,11 @@
+--- a/arch/um/os-Linux/user_syms.c
++++ b/arch/um/os-Linux/user_syms.c
+@@ -23,7 +23,7 @@ extern int printf(const char *, ...);
+ EXPORT_SYMBOL(strstr);
+ #endif
+ 
+-#ifndef __x86_64__
++#if !defined(__x86_64) || (__GNUC__ == 4 && __GNUC_MINOR__ < 3) || (__GNUC__ < 4)
+ extern void *memcpy(void *, const void *, size_t);
+ EXPORT_SYMBOL(memcpy);
+ #endif