Index: stage2/boot.c
===================================================================
RCS file: /home/cvs/grub/stage2/boot.c,v
retrieving revision 1.1.1.3
retrieving revision 1.4
diff -u -r1.1.1.3 -r1.4
--- boot.c	1999/11/12 13:17:20	1.1.1.3
+++ boot.c	1999/11/11 15:06:07	1.4
@@ -556,6 +564,12 @@
   return 1;
 }
 
+void
+set_load_addr (int addr) 
+{
+  printf ("Setting module load address to 0x%x\n", addr);
+  cur_addr = addr;
+}
 
 #ifdef GRUB_UTIL
 /* Dummy function to fake the *BSD boot.  */
Index: stage2/builtins.c
===================================================================
RCS file: /home/cvs/grub/stage2/builtins.c,v
retrieving revision 1.1.1.3
retrieving revision 1.5
diff -u -r1.1.1.3 -r1.5
--- builtins.c	1999/11/12 13:17:20	1.1.1.3
+++ builtins.c	1999/11/12 13:22:28	1.5
@@ -1663,6 +1663,41 @@
 };
   
 
+/* modaddr */
+static int
+modaddr_func (char *arg, int flags)
+{
+  int addr;
+
+  switch (kernel_type)
+    {
+    case KERNEL_TYPE_MULTIBOOT:
+      if (safe_parse_maxint(&arg, &addr)) 
+	{
+	  set_load_addr(addr);
+	  break;
+	}
+
+      /* else fallthrough */
+
+    default:
+      errnum = ERR_NEED_MB_KERNEL;
+      return 1;
+    }
+
+  return 0;
+}
+
+static struct builtin builtin_modaddr =
+{
+  "modaddr",
+  modaddr_func,
+  BUILTIN_CMDLINE,
+  "modaddr ADDRESS",
+  "Set the load address for the next Multiboot module to ADDRESS"
+};
+
+
 /* module */
 static int
 module_func (char *arg, int flags)
@@ -2614,6 +2649,7 @@
   &builtin_kernel,
   &builtin_makeactive,
   &builtin_map,
+  &builtin_modaddr,
   &builtin_module,
   &builtin_modulenounzip,
   &builtin_password,
Index: stage2/shared.h
===================================================================
RCS file: /home/cvs/grub/stage2/shared.h,v
retrieving revision 1.1.1.2
retrieving revision 1.4
diff -u -r1.1.1.2 -r1.4
--- shared.h	1999/11/10 16:09:46	1.1.1.2
+++ shared.h	1999/11/11 15:06:07	1.4
@@ -754,6 +754,7 @@
 kernel_t load_image (char *kernel, char *arg);
 int load_module (char *module, char *arg);
 int load_initrd (char *initrd);
+void set_load_addr (int addr);
 #endif
 
 void init_bios_info (void);
