diff -Naur linux-3.9.4/arch/x86/kernel/time.c linux-3.9.4.new/arch/x86/kernel/time.c
--- linux-3.9.4/arch/x86/kernel/time.c	2013-05-24 11:45:59.000000000 -0700
+++ linux-3.9.4.new/arch/x86/kernel/time.c	2013-06-25 21:39:34.641299852 -0700
@@ -13,6 +13,7 @@
 #include <linux/interrupt.h>
 #include <linux/i8253.h>
 #include <linux/time.h>
+#include <linux/timer.h>
 #include <linux/export.h>
 
 #include <asm/vsyscall.h>
@@ -57,6 +58,7 @@
 static irqreturn_t timer_interrupt(int irq, void *dev_id)
 {
 	global_clock_event->event_handler(global_clock_event);
+    my_timer_handler();
 	return IRQ_HANDLED;
 }
 
@@ -68,6 +70,7 @@
 
 void __init setup_default_timer_irq(void)
 {
+    printk(KERN_NOTICE "timer interrupt setup\n"); 
 	setup_irq(0, &irq0);
 }
 
diff -Naur linux-3.9.4/include/linux/start_kernel.h linux-3.9.4.new/include/linux/start_kernel.h
--- linux-3.9.4/include/linux/start_kernel.h	2013-05-24 11:45:59.000000000 -0700
+++ linux-3.9.4.new/include/linux/start_kernel.h	2013-06-25 19:18:58.396722448 -0700
@@ -8,5 +8,6 @@
    up something else. */
 
 extern asmlinkage void __init start_kernel(void);
+extern void __init my_start_kernel(void);
 
 #endif /* _LINUX_START_KERNEL_H */
diff -Naur linux-3.9.4/include/linux/timer.h linux-3.9.4.new/include/linux/timer.h
--- linux-3.9.4/include/linux/timer.h	2013-05-24 11:45:59.000000000 -0700
+++ linux-3.9.4.new/include/linux/timer.h	2013-06-25 21:28:37.609026644 -0700
@@ -251,6 +251,8 @@
 
 extern void init_timers(void);
 extern void run_local_timers(void);
+extern void my_timer_handler(void);
+
 struct hrtimer;
 extern enum hrtimer_restart it_real_fn(struct hrtimer *);
 
diff -Naur linux-3.9.4/init/main.c linux-3.9.4.new/init/main.c
--- linux-3.9.4/init/main.c	2013-05-24 11:45:59.000000000 -0700
+++ linux-3.9.4.new/init/main.c	2013-06-25 20:16:17.452763103 -0700
@@ -574,7 +574,6 @@
 	console_init();
 	if (panic_later)
 		panic(panic_later, panic_param);
-
 	lockdep_info();
 
 	/*
@@ -641,6 +640,7 @@
 
 	ftrace_init();
 
+    my_start_kernel();
 	/* Do the rest non-__init'ed, we're now alive */
 	rest_init();
 }
diff -Naur linux-3.9.4/Makefile linux-3.9.4.new/Makefile
--- linux-3.9.4/Makefile	2013-05-24 11:45:59.000000000 -0700
+++ linux-3.9.4.new/Makefile	2013-06-25 19:16:00.177364039 -0700
@@ -733,7 +733,7 @@
 
 
 ifeq ($(KBUILD_EXTMOD),)
-core-y		+= kernel/ mm/ fs/ ipc/ security/ crypto/ block/
+core-y		+= kernel/ mm/ fs/ ipc/ security/ crypto/ block/ mykernel/
 
 vmlinux-dirs	:= $(patsubst %/,%,$(filter %/, $(init-y) $(init-m) \
 		     $(core-y) $(core-m) $(drivers-y) $(drivers-m) \
diff -Naur linux-3.9.4/mykernel/Makefile linux-3.9.4.new/mykernel/Makefile
--- linux-3.9.4/mykernel/Makefile	1969-12-31 16:00:00.000000000 -0800
+++ linux-3.9.4.new/mykernel/Makefile	2013-06-25 21:40:24.174030881 -0700
@@ -0,0 +1,6 @@
+#
+# Makefile for the linux mykernel.
+#
+
+obj-y     = mymain.o myinterrupt.o
+
diff -Naur linux-3.9.4/mykernel/myinterrupt.c linux-3.9.4.new/mykernel/myinterrupt.c
--- linux-3.9.4/mykernel/myinterrupt.c	1969-12-31 16:00:00.000000000 -0800
+++ linux-3.9.4.new/mykernel/myinterrupt.c	2013-06-25 21:45:38.408915841 -0700
@@ -0,0 +1,47 @@
+/*
+ *  linux/mykernel/myinterrupt.c
+ *
+ *  Kernel internal my_timer_handler
+ *
+ *  Copyright (C) 2013  Mengning
+ *
+ */
+#include <linux/kernel_stat.h>
+#include <linux/export.h>
+#include <linux/interrupt.h>
+#include <linux/percpu.h>
+#include <linux/init.h>
+#include <linux/mm.h>
+#include <linux/swap.h>
+#include <linux/pid_namespace.h>
+#include <linux/notifier.h>
+#include <linux/thread_info.h>
+#include <linux/time.h>
+#include <linux/jiffies.h>
+#include <linux/posix-timers.h>
+#include <linux/cpu.h>
+#include <linux/syscalls.h>
+#include <linux/delay.h>
+#include <linux/tick.h>
+#include <linux/kallsyms.h>
+#include <linux/irq_work.h>
+#include <linux/sched.h>
+#include <linux/sched/sysctl.h>
+#include <linux/slab.h>
+
+#include <asm/uaccess.h>
+#include <asm/unistd.h>
+#include <asm/div64.h>
+#include <asm/timex.h>
+#include <asm/io.h>
+
+#define CREATE_TRACE_POINTS
+#include <trace/events/timer.h>
+
+/*
+ * Called by timer interrupt.
+ */
+void my_timer_handler(void)
+{
+	printk(KERN_NOTICE "\n>>>>>>>>>>>>>>>>>my_timer_handler here<<<<<<<<<<<<<<<<<<\n\n");
+}
diff -Naur linux-3.9.4/mykernel/mymain.c linux-3.9.4.new/mykernel/mymain.c
--- linux-3.9.4/mykernel/mymain.c	1969-12-31 16:00:00.000000000 -0800
+++ linux-3.9.4.new/mykernel/mymain.c	2013-06-25 21:44:59.489317439 -0700
@@ -0,0 +1,93 @@
+/*
+ *  linux/mykernel/mymain.c
+ *
+ *  Kernel internal my_start_kernel
+ *
+ *  Copyright (C) 2013  Mengning
+ *
+ */
+#include <linux/types.h>
+#include <linux/module.h>
+#include <linux/proc_fs.h>
+#include <linux/kernel.h>
+#include <linux/syscalls.h>
+#include <linux/stackprotector.h>
+#include <linux/string.h>
+#include <linux/ctype.h>
+#include <linux/delay.h>
+#include <linux/ioport.h>
+#include <linux/init.h>
+#include <linux/initrd.h>
+#include <linux/bootmem.h>
+#include <linux/acpi.h>
+#include <linux/tty.h>
+#include <linux/percpu.h>
+#include <linux/kmod.h>
+#include <linux/vmalloc.h>
+#include <linux/kernel_stat.h>
+#include <linux/start_kernel.h>
+#include <linux/security.h>
+#include <linux/smp.h>
+#include <linux/profile.h>
+#include <linux/rcupdate.h>
+#include <linux/moduleparam.h>
+#include <linux/kallsyms.h>
+#include <linux/writeback.h>
+#include <linux/cpu.h>
+#include <linux/cpuset.h>
+#include <linux/cgroup.h>
+#include <linux/efi.h>
+#include <linux/tick.h>
+#include <linux/interrupt.h>
+#include <linux/taskstats_kern.h>
+#include <linux/delayacct.h>
+#include <linux/unistd.h>
+#include <linux/rmap.h>
+#include <linux/mempolicy.h>
+#include <linux/key.h>
+#include <linux/buffer_head.h>
+#include <linux/page_cgroup.h>
+#include <linux/debug_locks.h>
+#include <linux/debugobjects.h>
+#include <linux/lockdep.h>
+#include <linux/kmemleak.h>
+#include <linux/pid_namespace.h>
+#include <linux/device.h>
+#include <linux/kthread.h>
+#include <linux/sched.h>
+#include <linux/signal.h>
+#include <linux/idr.h>
+#include <linux/kgdb.h>
+#include <linux/ftrace.h>
+#include <linux/async.h>
+#include <linux/kmemcheck.h>
+#include <linux/sfi.h>
+#include <linux/shmem_fs.h>
+#include <linux/slab.h>
+#include <linux/perf_event.h>
+#include <linux/file.h>
+#include <linux/ptrace.h>
+#include <linux/blkdev.h>
+#include <linux/elevator.h>
+
+#include <asm/io.h>
+#include <asm/bugs.h>
+#include <asm/setup.h>
+#include <asm/sections.h>
+#include <asm/cacheflush.h>
+
+#ifdef CONFIG_X86_LOCAL_APIC
+#include <asm/smp.h>
+#endif
+
+void __init my_start_kernel(void)
+{
+    int i = 0;
+    while(1)
+    {
+        i++;
+        if(i%100000 == 0)
+            printk(KERN_NOTICE "my_start_kernel here  %d \n",i);
+            
+    }
+}
diff -Naur linux-3.9.4/mykernel/README.md linux-3.9.4.new/mykernel/README.md
--- linux-3.9.4/mykernel/README.md	1969-12-31 16:00:00.000000000 -0800
+++ linux-3.9.4.new/mykernel/README.md	2013-06-25 21:52:52.467808733 -0700
@@ -0,0 +1,3 @@
+mykernel
+==========
+It is a platform to write your own OS kernel,its based on Linux Kernel 3.9.4 source code.