--- linux-2.6.20-rmk-12feb2007-s3c2443-4/include/asm-arm/arch-s3c2410/regs-s3c2443-clock.h	2007-02-15 11:40:29.000000000 +0000
+++ linux-2.6.20-rmk-12feb2007-s3c2443-5/include/asm-arm/arch-s3c2410/regs-s3c2443-clock.h	2007-02-15 21:43:53.000000000 +0000
@@ -38,6 +38,8 @@
 #define S3C2443_PWRCFG			S3C2443_CLKREG(0x60)
 #define S3C2443_RSTCON			S3C2443_CLKREG(0x64)
 
+#define S3C2443_SWRST_RESET		(0x533c2443)
+
 #define S3C2443_PLLCON_OFF		(1<<24)
 
 #define S3C2443_CLKSRC_I2S_EXT		(1<<14)
--- linux-2.6.20-rmk-12feb2007-s3c2443-4/arch/arm/mach-s3c2443/s3c2443.c	2007-02-15 21:24:37.000000000 +0000
+++ linux-2.6.20-rmk-12feb2007-s3c2443-5/arch/arm/mach-s3c2443/s3c2443.c	2007-02-15 21:45:13.000000000 +0000
@@ -29,7 +29,8 @@
 #include <asm/io.h>
 #include <asm/irq.h>
 
-#include <asm/arch/regs-serial.h>
+#include <asm/arch/regs-s3c2443-clock.h>
+#include <asm/arch/reset.h>
 
 #include <asm/plat-s3c24xx/s3c2443.h>
 #include <asm/plat-s3c24xx/devs.h>
@@ -49,10 +50,17 @@ static struct sys_device s3c2443_sysdev 
 	.cls		= &s3c2443_sysclass,
 };
 
+static void s3c2443_hard_reset(void)
+{
+	__raw_writel(S3C2443_SWRST_RESET, S3C2443_SWRST);
+}
+
 int __init s3c2443_init(void)
 {
 	printk("S3C2443: Initialising architecture\n");
 
+	s3c24xx_reset_hook = s3c2443_hard_reset;
+
 	s3c_device_nand.name = "s3c2412-nand";
 
 	return sysdev_register(&s3c2443_sysdev);

