diff --git a/libavutil/arm/cpu.c b/libavutil/arm/cpu.c
index b4aabc375e184b322d32ac3d66f4016997e42ca4..85ea662d94aecc6eaa8277fdec50e3f01f72658f 100644
--- a/libavutil/arm/cpu.c
+++ b/libavutil/arm/cpu.c
@@ -17,6 +17,7 @@
  */
 
 #include "libavutil/cpu.h"
+#include "libavutil/cpu_internal.h"
 #include "config.h"
 
 #define CORE_FLAG(f) \
diff --git a/libavutil/cpu.c b/libavutil/cpu.c
index 6384d6d7e7462b3cff7499333d4519b36d15d26f..8edebbceed32720917c079f51f7da2fe568cbc1b 100644
--- a/libavutil/cpu.c
+++ b/libavutil/cpu.c
@@ -17,6 +17,7 @@
  */
 
 #include "cpu.h"
+#include "cpu_internal.h"
 #include "config.h"
 #include "opt.h"
 #include "common.h"
diff --git a/libavutil/cpu.h b/libavutil/cpu.h
index f2c9c0f20e04062282400f1ba185541485630337..8f2af28543d4b5231b0013617dbde7665201da69 100644
--- a/libavutil/cpu.h
+++ b/libavutil/cpu.h
@@ -81,9 +81,4 @@ int av_parse_cpu_flags(const char *s);
  */
 int av_cpu_count(void);
 
-/* The following CPU-specific functions shall not be called directly. */
-int ff_get_cpu_flags_arm(void);
-int ff_get_cpu_flags_ppc(void);
-int ff_get_cpu_flags_x86(void);
-
 #endif /* AVUTIL_CPU_H */
diff --git a/libavutil/cpu_internal.h b/libavutil/cpu_internal.h
new file mode 100644
index 0000000000000000000000000000000000000000..2fb9ad79ea4f3e3879f5be288a624ecc099c4c3b
--- /dev/null
+++ b/libavutil/cpu_internal.h
@@ -0,0 +1,26 @@
+/*
+ * This file is part of Libav.
+ *
+ * Libav is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * Libav is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with Libav; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+#ifndef AVUTIL_CPU_INTERNAL_H
+#define AVUTIL_CPU_INTERNAL_H
+
+int ff_get_cpu_flags_arm(void);
+int ff_get_cpu_flags_ppc(void);
+int ff_get_cpu_flags_x86(void);
+
+#endif /* AVUTIL_CPU_INTERNAL_H */
diff --git a/libavutil/ppc/cpu.c b/libavutil/ppc/cpu.c
index 002571161a757458882902378dde4b2e0592e133..50107e1fca013434fec2eb4a10d82336531c852e 100644
--- a/libavutil/ppc/cpu.c
+++ b/libavutil/ppc/cpu.c
@@ -29,6 +29,7 @@
 #endif /* __APPLE__ */
 
 #include "libavutil/cpu.h"
+#include "libavutil/cpu_internal.h"
 #include "config.h"
 
 /**
diff --git a/libavutil/x86/cpu.c b/libavutil/x86/cpu.c
index 3b36fd0fb1d5329ddccc74c3c863f33a34a96fe2..3e946b8dc273e690b95c1d5c70980388c3f60159 100644
--- a/libavutil/x86/cpu.c
+++ b/libavutil/x86/cpu.c
@@ -26,6 +26,7 @@
 #include "libavutil/x86/asm.h"
 #include "libavutil/x86/cpu.h"
 #include "libavutil/cpu.h"
+#include "libavutil/cpu_internal.h"
 
 #if HAVE_YASM