This removes static memory addresses of sys_call_table and
kernel_restart_prepare and makes it easier to compile for a
new target
 CROSS_COMPILE=arm-eabi-
 CROSS_PATH=$(PWD)/../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin
 
 CROSS_COMPILE=arm-eabi-
 CROSS_PATH=$(PWD)/../prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin
 
-EXTRA_CFLAGS += -DCONFIG_KEXEC -Wall
+SYS_CALL_TABLE := $(shell grep ' T sys_call_table$$' $(KDIR)/System.map | cut -f1 -d' ')
+KERNEL_RESTART_PREPARE := $(shell grep ' T kernel_restart_prepare$$' $(KDIR)/System.map | cut -f1 -d' ')
+
+EXTRA_CFLAGS += -DCONFIG_KEXEC -Wall -DSYS_CALL_TABLE=0x$(SYS_CALL_TABLE) -DKERNEL_RESTART_PREPARE=0x$(KERNEL_RESTART_PREPARE)
 
 obj-m += kexec_load.o
 kexec_load-objs := kexec.o machine_kexec.o mmu.o sys.o core.o relocate_kernel.o \
 
 obj-m += kexec_load.o
 kexec_load-objs := kexec.o machine_kexec.o mmu.o sys.o core.o relocate_kernel.o \
 
 
 static int __init kexec_module_init(void)
 {
 
 static int __init kexec_module_init(void)
 {
        sys_call_table=(void **)find_sys_call_table();
        if(sys_call_table==NULL) {
                printk(KERN_ERR "Cannot find the system call address\n"); 
        sys_call_table=(void **)find_sys_call_table();
        if(sys_call_table==NULL) {
                printk(KERN_ERR "Cannot find the system call address\n"); 
 
        }
 
        printk(KERN_INFO "kexec: Found sys_call_table at: %p\n", sys_call_table);
        }
 
        printk(KERN_INFO "kexec: Found sys_call_table at: %p\n", sys_call_table);
-       //sys_call_table=(void **)0xc003d004;
-       sys_call_table=(void **)0xc00350c4;
+       sys_call_table=(void **)SYS_CALL_TABLE;
        printk(KERN_INFO "kexec: Force sys_call_table at: %p\n", sys_call_table);
 
        /* Set kexec_load() syscall. */
        printk(KERN_INFO "kexec: Force sys_call_table at: %p\n", sys_call_table);
 
        /* Set kexec_load() syscall. */
 
 
 void kernel_restart_prepare(char *cmd)
 {
 
 void kernel_restart_prepare(char *cmd)
 {
-#warning assuming kernel_restart_prepare is at 0xc00779cc
-       void (*original_kernel_restart_prepare)(char *) = (void (*)(char *))0xc00779cc;
+       void (*original_kernel_restart_prepare)(char *) = (void (*)(char *))KERNEL_RESTART_PREPARE;
        return original_kernel_restart_prepare(cmd);
 #if 0
        register_reboot_notifier(&dummy_notifier_reboot);
        return original_kernel_restart_prepare(cmd);
 #if 0
        register_reboot_notifier(&dummy_notifier_reboot);