+2009-08-24 Vladimir Serbinenko <phcoder@gmail.com>
+
+ Fix OpenBSD and NetBSD support.
+
+ * include/grub/i386/bsd.h (GRUB_BSD_TEMP_BUFFER): Change to resolve
+ memory address conflict.
+ (OPENBSD_MMAP_ACPI): New definition.
+ (OPENBSD_MMAP_NVS): Likewise.
+ * loader/i386/bsd.c (grub_openbsd_boot): Support OPENBSD_MMAP_ACPI
+ and OPENBSD_MMAP_NVS.
+ Add memory map terminator
+ Explicit cast when calling grub_unix_real_boot.
+ (grub_nebsd_boot): Explicit cast when calling grub_unix_real_boot.
+
2009-08-24 Vladimir Serbinenko <phcoder@gmail.com>
Let user specify NetBSD root device.
KERNEL_TYPE_NETBSD,
};
-#define GRUB_BSD_TEMP_BUFFER 0x68000
+#define GRUB_BSD_TEMP_BUFFER 0x80000
#define FREEBSD_RB_ASKNAME (1 << 0) /* ask for file name to reboot from */
#define FREEBSD_RB_SINGLE (1 << 1) /* reboot to single user only */
grub_uint64_t len;
#define OPENBSD_MMAP_AVAILABLE 1
#define OPENBSD_MMAP_RESERVED 2
+#define OPENBSD_MMAP_ACPI 3
+#define OPENBSD_MMAP_NVS 4
grub_uint32_t type;
};
pm->type = OPENBSD_MMAP_AVAILABLE;
break;
+ case GRUB_MACHINE_MEMORY_ACPI:
+ pm->type = OPENBSD_MMAP_ACPI;
+ break;
+
+ case GRUB_MACHINE_MEMORY_NVS:
+ pm->type = OPENBSD_MMAP_NVS;
+ break;
+
default:
pm->type = OPENBSD_MMAP_RESERVED;
break;
pm = (struct grub_openbsd_bios_mmap *) (pa + 1);
grub_mmap_iterate (hook);
+ /* Memory map terminator. */
+ pm->addr = 0;
+ pm->len = 0;
+ pm->type = 0;
+ pm++;
+
pa->ba_size = (char *) pm - (char *) pa;
pa->ba_next = (struct grub_openbsd_bootargs *) pm;
pa = pa->ba_next;
(part << OPENBSD_B_PARTSHIFT));
grub_unix_real_boot (entry, bootflags, bootdev, OPENBSD_BOOTARG_APIVER,
- 0, grub_mmap_get_upper () >> 10,
- grub_mmap_get_lower () >> 10,
+ 0, (grub_uint32_t) (grub_mmap_get_upper () >> 10),
+ (grub_uint32_t) (grub_mmap_get_lower () >> 10),
(char *) pa - buf, buf);
/* Not reached. */
}
grub_unix_real_boot (entry, bootflags, 0, bootinfo,
- 0, grub_mmap_get_upper () >> 10,
- grub_mmap_get_lower () >> 10);
+ 0, (grub_uint32_t) (grub_mmap_get_upper () >> 10),
+ (grub_uint32_t) (grub_mmap_get_lower () >> 10));
/* Not reached. */
return GRUB_ERR_NONE;