diff --git a/CHANGELOG b/CHANGELOG
index dcb907eb2441ae2337f65ff11d9290c832343820..a91ac93130230f2000a8f3687a8a515fba8fcda8 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,9 @@
 Changes for U-Boot 1.1.3:
 ======================================================================
 
+* Patch by Steven Scholz, 25 Oct 2004:
+  Declare reset_cpu() in include/common.h instead locally
+
 * Patch by Yusdi Santoso, 22 Oct 2004:
   - Add support for HIDDEN_DRAGON board
   - fix endianess problem in driver/rtl1839.c
diff --git a/cpu/arm1136/cpu.c b/cpu/arm1136/cpu.c
index d5c5dc869aa7a42f2dab4ef5cf22bd90b373ea08..7fa5ddcac6c98d3f3a1ccbceda22f1b10fde99d0 100644
--- a/cpu/arm1136/cpu.c
+++ b/cpu/arm1136/cpu.c
@@ -131,8 +131,6 @@ int cleanup_before_linux (void)
 
 int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
-	extern void reset_cpu (ulong addr);
-
 	disable_interrupts ();
 	reset_cpu (0);
 	/*NOTREACHED*/
diff --git a/cpu/arm1136/interrupts.c b/cpu/arm1136/interrupts.c
index e87a628c7f3b6006f8cf808f73143a48c314ea28..c80d9a5d0f90f511567f48383a07cecba9eeed57 100644
--- a/cpu/arm1136/interrupts.c
+++ b/cpu/arm1136/interrupts.c
@@ -35,7 +35,6 @@
 #include <asm/arch/omap2420.h>
 #include <asm/proc-armv/ptrace.h>
 
-extern void reset_cpu(ulong addr);
 #define TIMER_LOAD_VAL 0
 
 /* macro to read the 32 bit timer */
diff --git a/cpu/arm720t/cpu.c b/cpu/arm720t/cpu.c
index ef3fbf35d18a8c79c38df00043c112f70612b0aa..5421aff7def4569b2caa9237eb81b94d4bad6abf 100644
--- a/cpu/arm720t/cpu.c
+++ b/cpu/arm720t/cpu.c
@@ -84,8 +84,6 @@ int cleanup_before_linux (void)
 
 int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
-	extern void reset_cpu (ulong addr);
-
 	disable_interrupts ();
 	reset_cpu (0);
 	/*NOTREACHED*/
diff --git a/cpu/arm720t/interrupts.c b/cpu/arm720t/interrupts.c
index 842a44384bf1d746cee37845496db7fd3c3f79a9..a7ea70a266fbc118d8a6d6a0c59fa55063de6852 100644
--- a/cpu/arm720t/interrupts.c
+++ b/cpu/arm720t/interrupts.c
@@ -31,8 +31,6 @@
 #include <asm/proc-armv/ptrace.h>
 #include <asm/hardware.h>
 
-extern void reset_cpu(ulong addr);
-
 #ifndef CONFIG_NETARM
 /* we always count down the max. */
 #define TIMER_LOAD_VAL 0xffff
diff --git a/cpu/arm920t/cpu.c b/cpu/arm920t/cpu.c
index 2a2b5780171d58c01e11674058c52ca29608391c..718f253471d40e30935b994b631eececc4e6e523 100644
--- a/cpu/arm920t/cpu.c
+++ b/cpu/arm920t/cpu.c
@@ -124,8 +124,6 @@ int cleanup_before_linux (void)
 
 int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
-	extern void reset_cpu (ulong addr);
-
 	disable_interrupts ();
 	reset_cpu (0);
 	/*NOTREACHED*/
diff --git a/cpu/arm920t/interrupts.c b/cpu/arm920t/interrupts.c
index ea58f154d40f3069c7cd1c98234a9ecb0f134e50..bfab5196402d978db4f8c3701e56bb7b26cffc5f 100644
--- a/cpu/arm920t/interrupts.c
+++ b/cpu/arm920t/interrupts.c
@@ -34,8 +34,6 @@
 #include <arm920t.h>
 #include <asm/proc-armv/ptrace.h>
 
-extern void reset_cpu(ulong addr);
-
 #ifdef CONFIG_USE_IRQ
 /* enable IRQ interrupts */
 void enable_interrupts (void)
diff --git a/cpu/arm920t/s3c24x0/interrupts.c b/cpu/arm920t/s3c24x0/interrupts.c
index 92298b09f02b086e6b708c8fddd2a53d4f2f418a..f581d6d6079275c117ad8eb4a8f2fa6cbec8edbf 100644
--- a/cpu/arm920t/s3c24x0/interrupts.c
+++ b/cpu/arm920t/s3c24x0/interrupts.c
@@ -39,7 +39,6 @@
 #include <s3c2410.h>
 #endif
 
-extern void reset_cpu(ulong addr);
 int timer_load_val = 0;
 
 /* macro to read the 16 bit timer */
diff --git a/cpu/arm925t/cpu.c b/cpu/arm925t/cpu.c
index b760ec97b116cd1c08d2783a4a766e70a7da2aa0..c1c6b03e4245dfe872b024cf82487435fbd7fcab 100644
--- a/cpu/arm925t/cpu.c
+++ b/cpu/arm925t/cpu.c
@@ -125,8 +125,6 @@ int cleanup_before_linux (void)
 
 int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
-	extern void reset_cpu (ulong addr);
-
 	disable_interrupts ();
 	reset_cpu (0);
 	/*NOTREACHED*/
diff --git a/cpu/arm925t/interrupts.c b/cpu/arm925t/interrupts.c
index d3c94768c09e9ca3363d756ce8b07792323393a1..ea4aa3b3b04172bd84ae5c2d2fb1a78183511552 100644
--- a/cpu/arm925t/interrupts.c
+++ b/cpu/arm925t/interrupts.c
@@ -38,7 +38,6 @@
 
 #include <asm/proc-armv/ptrace.h>
 
-extern void reset_cpu(ulong addr);
 #define TIMER_LOAD_VAL 0xffffffff
 
 /* macro to read the 32 bit timer */
diff --git a/cpu/arm926ejs/cpu.c b/cpu/arm926ejs/cpu.c
index 6c153e522e8dd548cfd3c77357240b62df86d5fa..2681f999c1112f7ea6349d7524910f221a37a4e8 100644
--- a/cpu/arm926ejs/cpu.c
+++ b/cpu/arm926ejs/cpu.c
@@ -125,8 +125,6 @@ int cleanup_before_linux (void)
 
 int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
-	extern void reset_cpu (ulong addr);
-
 	disable_interrupts ();
 	reset_cpu (0);
 	/*NOTREACHED*/
diff --git a/cpu/arm926ejs/interrupts.c b/cpu/arm926ejs/interrupts.c
index 4fdac9fc17f70865e7bfa823a2e5a0ae0549f104..062515e398ff60bc82d989f6174441e560baeb65 100644
--- a/cpu/arm926ejs/interrupts.c
+++ b/cpu/arm926ejs/interrupts.c
@@ -40,7 +40,6 @@
 
 #include <asm/proc-armv/ptrace.h>
 
-extern void reset_cpu(ulong addr);
 #define TIMER_LOAD_VAL 0xffffffff
 
 /* macro to read the 32 bit timer */
diff --git a/cpu/at91rm9200/cpu.c b/cpu/at91rm9200/cpu.c
index 90a4f9cd0416b9afd8822059f3413c057eff7c93..9fdb70373e7e2be3261886ddefd4d5126e881d43 100644
--- a/cpu/at91rm9200/cpu.c
+++ b/cpu/at91rm9200/cpu.c
@@ -115,8 +115,6 @@ int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
 
 #ifdef CFG_SOFT_RESET
-    extern void reset_cpu(ulong addr);
-
     disable_interrupts();
     reset_cpu(0);
 #else
diff --git a/cpu/at91rm9200/interrupts.c b/cpu/at91rm9200/interrupts.c
index 1c071bbf3d62a3f83dae6b58dea9a16b7a938d06..f15c5830bb62f2d27e248de57f93388ec4968e66 100644
--- a/cpu/at91rm9200/interrupts.c
+++ b/cpu/at91rm9200/interrupts.c
@@ -35,8 +35,6 @@
 #include <asm/arch/hardware.h>
 #include <asm/proc/ptrace.h>
 
-extern void reset_cpu(ulong addr);
-
 /* the number of clocks per CFG_HZ */
 #define TIMER_LOAD_VAL (CFG_HZ_CLOCK/CFG_HZ)
 
diff --git a/cpu/i386/cpu.c b/cpu/i386/cpu.c
index f24e4ba525faef54db0be44af5e212e6c5c8e497..5fd37c72a6078fd8b1db611c47af7a275d933826 100644
--- a/cpu/i386/cpu.c
+++ b/cpu/i386/cpu.c
@@ -50,8 +50,6 @@ int cpu_init(void)
 
 int do_reset(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
-	extern void reset_cpu(ulong addr);
-
 	printf ("resetting ...\n");
 	udelay(50000);				/* wait 50 ms */
 	disable_interrupts();
diff --git a/cpu/ixp/cpu.c b/cpu/ixp/cpu.c
index 00264be797b7d73bf17e6172914af9da3b2a989f..9383473141a536b2d78a523f7a694d914db36b1d 100644
--- a/cpu/ixp/cpu.c
+++ b/cpu/ixp/cpu.c
@@ -76,8 +76,6 @@ int cleanup_before_linux (void)
 
 int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
-	extern void reset_cpu (ulong addr);
-
 	printf ("resetting ...\n");
 
 	udelay (50000);				/* wait 50 ms */
diff --git a/cpu/ixp/interrupts.c b/cpu/ixp/interrupts.c
index 962f3ffda3120bec72b17c6aab2c2465f861621b..e260dea0ed4810e88a4eea3606b7f03d6fbe7159 100644
--- a/cpu/ixp/interrupts.c
+++ b/cpu/ixp/interrupts.c
@@ -30,8 +30,6 @@
 #include <common.h>
 #include <asm/arch/ixp425.h>
 
-extern void reset_cpu (ulong addr);
-
 #ifdef CONFIG_USE_IRQ
 /* enable IRQ/FIQ interrupts */
 void enable_interrupts (void)
diff --git a/cpu/lh7a40x/cpu.c b/cpu/lh7a40x/cpu.c
index 2a2b5780171d58c01e11674058c52ca29608391c..718f253471d40e30935b994b631eececc4e6e523 100644
--- a/cpu/lh7a40x/cpu.c
+++ b/cpu/lh7a40x/cpu.c
@@ -124,8 +124,6 @@ int cleanup_before_linux (void)
 
 int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
-	extern void reset_cpu (ulong addr);
-
 	disable_interrupts ();
 	reset_cpu (0);
 	/*NOTREACHED*/
diff --git a/cpu/lh7a40x/interrupts.c b/cpu/lh7a40x/interrupts.c
index a7162698aa3a998776a565479229c85f7ea9bfc7..3c2dc4fc49d08fc78d183042a54964851b503a82 100644
--- a/cpu/lh7a40x/interrupts.c
+++ b/cpu/lh7a40x/interrupts.c
@@ -35,7 +35,6 @@
 
 #include <asm/proc-armv/ptrace.h>
 
-extern void reset_cpu(ulong addr);
 static ulong timer_load_val = 0;
 
 /* macro to read the 16 bit timer */
diff --git a/cpu/pxa/cpu.c b/cpu/pxa/cpu.c
index abb064ad01374bd30c630d254045f6ff2632789b..d1551ddc386c7d18b88faa406cae83cbc33a0f8f 100644
--- a/cpu/pxa/cpu.c
+++ b/cpu/pxa/cpu.c
@@ -74,8 +74,6 @@ int cleanup_before_linux (void)
 
 int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
-	extern void reset_cpu (ulong addr);
-
 	printf ("resetting ...\n");
 
 	udelay (50000);				/* wait 50 ms */
diff --git a/cpu/pxa/interrupts.c b/cpu/pxa/interrupts.c
index fd02154b8682481db1ecccbe20472b17f95b05bb..b335a82a5e123deb5ae22e040f80c210156eb2ae 100644
--- a/cpu/pxa/interrupts.c
+++ b/cpu/pxa/interrupts.c
@@ -29,8 +29,6 @@
 #include <common.h>
 #include <asm/arch/pxa-regs.h>
 
-extern void reset_cpu (ulong addr);
-
 #ifdef CONFIG_USE_IRQ
 /* enable IRQ/FIQ interrupts */
 void enable_interrupts (void)
diff --git a/cpu/s3c44b0/cpu.c b/cpu/s3c44b0/cpu.c
index 2d5e2e87a798226a15fb790b83b6ee4a688927b5..5d50b3cea04ef03547eb91a81c62fe9a8c3a5369 100644
--- a/cpu/s3c44b0/cpu.c
+++ b/cpu/s3c44b0/cpu.c
@@ -86,8 +86,6 @@ void reset_cpu (ulong addr)
 
 int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
-	extern void reset_cpu (ulong addr);
-
 	disable_interrupts ();
 	reset_cpu (0);
 
diff --git a/cpu/s3c44b0/interrupts.c b/cpu/s3c44b0/interrupts.c
index 4328feb4e36b55ccc67e84489077df46fd438a52..dea8118dd7d327e6dcf54f8125b722041f77f38d 100644
--- a/cpu/s3c44b0/interrupts.c
+++ b/cpu/s3c44b0/interrupts.c
@@ -29,8 +29,6 @@
 
 #include <asm/proc-armv/ptrace.h>
 
-extern void reset_cpu(ulong addr);
-
 /* we always count down the max. */
 #define TIMER_LOAD_VAL 0xffff
 
diff --git a/cpu/sa1100/cpu.c b/cpu/sa1100/cpu.c
index 34adf91ad1ba647d65a37346a545ca78d8afe51d..17e5b0d1956888684800661433f60734614be909 100644
--- a/cpu/sa1100/cpu.c
+++ b/cpu/sa1100/cpu.c
@@ -73,8 +73,6 @@ int cleanup_before_linux (void)
 
 int do_reset (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
 {
-	extern void reset_cpu (ulong addr);
-
 	printf ("resetting ...\n");
 
 	udelay (50000);				/* wait 50 ms */
diff --git a/cpu/sa1100/interrupts.c b/cpu/sa1100/interrupts.c
index 00b6d2a02981ef0207db008ef72c6a9e146db853..93a78d707eb338c8ea96e93d69acc57bb53a59ad 100644
--- a/cpu/sa1100/interrupts.c
+++ b/cpu/sa1100/interrupts.c
@@ -31,8 +31,6 @@
 
 #include <asm/proc-armv/ptrace.h>
 
-extern void reset_cpu (ulong addr);
-
 #ifdef CONFIG_USE_IRQ
 /* enable IRQ/FIQ interrupts */
 void enable_interrupts (void)
diff --git a/include/common.h b/include/common.h
index eee79b29fd501b880bc6c31d14419ee077867d38..edb704dca4c1031b164ae699babcd8bae48b6d6d 100644
--- a/include/common.h
+++ b/include/common.h
@@ -383,6 +383,7 @@ int	checkicache   (void);
 int	checkdcache   (void);
 void	upmconfig     (unsigned int, unsigned int *, unsigned int);
 ulong	get_tbclk     (void);
+void	reset_cpu     (ulong addr);
 
 /* $(CPU)/serial.c */
 int	serial_init   (void);