mirror of
https://github.com/xemu-project/xemu.git
synced 2025-02-20 04:11:28 +00:00
Pull request m68k branch 20221024
Update rng seed boot parameter -----BEGIN PGP SIGNATURE----- iQJGBAABCAAwFiEEzS913cjjpNwuT1Fz8ww4vT8vvjwFAmNWU7YSHGxhdXJlbnRA dml2aWVyLmV1AAoJEPMMOL0/L748C/kQAJHbVrDGCCfw+imsOAOqXBL3K0WpUadP T+lCIHpqCPsppJ2ikQlZ95ky0RZREPiRwmwJHQsgaTiVJgKDGJ3hsDuGNAyu3sn4 C/QFVyH2E7dcrDjSNk+n1nGVw+h6gnH9G6qRYrJZHlQXN9WsaMrcofhjDdPUC9bK o2IexKWBs80wJ/k/O9be8hPARkdwbVYRbR3+khtcUVv7sgeoKfUmpUiliIhi1G3G jphHEMgWtjyK8HmTyeOujmbOO4RZGhScnCJpUnYitBmun6YWedP+DrOz5kXU5xgP vIJOalpPqQt+Fpe6OF5fBXwLl0QNPlLjhBP+YXe6inKWHk3RYZRYbFNz4+HZt6WY i5wO0pz77vzL6+7nnESS7Q9g/8ASQcUgOsswUBY2uhQoGUG8LuUl2O5SyJWGB41o MjNq+h7PcFD8MalLMMvf5jKIuZ0lJrkirUXbTXlGu19ynyf0lASY773cENch+ApS fu2De777qwYDx3CvR+K5oObiTqUTplQT9Mq+yUlD5mgJs1bCP+XPFGlL+JemgR25 EjV5kLDY2f5i0hb7ZQ8IEL3O4siW9GoHXBBFkLY3WPO36Nd71cfhzVv2jUaoSyom xsFsJ/TGBapdiDj2Y5DjZQWrUIsm3TgcwATLhEyH2+Bt4hLd+yI6s1m16vVUn74O UgMzybUqLwk0 =B+rc -----END PGP SIGNATURE----- Merge tag 'm68k-for-7.2-pull-request' of https://github.com/vivier/qemu-m68k into staging Pull request m68k branch 20221024 Update rng seed boot parameter # -----BEGIN PGP SIGNATURE----- # # iQJGBAABCAAwFiEEzS913cjjpNwuT1Fz8ww4vT8vvjwFAmNWU7YSHGxhdXJlbnRA # dml2aWVyLmV1AAoJEPMMOL0/L748C/kQAJHbVrDGCCfw+imsOAOqXBL3K0WpUadP # T+lCIHpqCPsppJ2ikQlZ95ky0RZREPiRwmwJHQsgaTiVJgKDGJ3hsDuGNAyu3sn4 # C/QFVyH2E7dcrDjSNk+n1nGVw+h6gnH9G6qRYrJZHlQXN9WsaMrcofhjDdPUC9bK # o2IexKWBs80wJ/k/O9be8hPARkdwbVYRbR3+khtcUVv7sgeoKfUmpUiliIhi1G3G # jphHEMgWtjyK8HmTyeOujmbOO4RZGhScnCJpUnYitBmun6YWedP+DrOz5kXU5xgP # vIJOalpPqQt+Fpe6OF5fBXwLl0QNPlLjhBP+YXe6inKWHk3RYZRYbFNz4+HZt6WY # i5wO0pz77vzL6+7nnESS7Q9g/8ASQcUgOsswUBY2uhQoGUG8LuUl2O5SyJWGB41o # MjNq+h7PcFD8MalLMMvf5jKIuZ0lJrkirUXbTXlGu19ynyf0lASY773cENch+ApS # fu2De777qwYDx3CvR+K5oObiTqUTplQT9Mq+yUlD5mgJs1bCP+XPFGlL+JemgR25 # EjV5kLDY2f5i0hb7ZQ8IEL3O4siW9GoHXBBFkLY3WPO36Nd71cfhzVv2jUaoSyom # xsFsJ/TGBapdiDj2Y5DjZQWrUIsm3TgcwATLhEyH2+Bt4hLd+yI6s1m16vVUn74O # UgMzybUqLwk0 # =B+rc # -----END PGP SIGNATURE----- # gpg: Signature made Mon 24 Oct 2022 04:58:30 EDT # gpg: using RSA key CD2F75DDC8E3A4DC2E4F5173F30C38BD3F2FBE3C # gpg: issuer "laurent@vivier.eu" # gpg: Good signature from "Laurent Vivier <lvivier@redhat.com>" [full] # gpg: aka "Laurent Vivier <laurent@vivier.eu>" [full] # gpg: aka "Laurent Vivier (Red Hat) <lvivier@redhat.com>" [full] # Primary key fingerprint: CD2F 75DD C8E3 A4DC 2E4F 5173 F30C 38BD 3F2F BE3C * tag 'm68k-for-7.2-pull-request' of https://github.com/vivier/qemu-m68k: m68k: write bootinfo as rom section and re-randomize on reboot m68k: rework BI_VIRT_RNG_SEED as BI_RNG_SEED Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
commit
ce58c8ee4d
@ -12,66 +12,66 @@
|
||||
#ifndef HW_M68K_BOOTINFO_H
|
||||
#define HW_M68K_BOOTINFO_H
|
||||
|
||||
#define BOOTINFO0(as, base, id) \
|
||||
#define BOOTINFO0(base, id) \
|
||||
do { \
|
||||
stw_phys(as, base, id); \
|
||||
stw_p(base, id); \
|
||||
base += 2; \
|
||||
stw_phys(as, base, sizeof(struct bi_record)); \
|
||||
stw_p(base, sizeof(struct bi_record)); \
|
||||
base += 2; \
|
||||
} while (0)
|
||||
|
||||
#define BOOTINFO1(as, base, id, value) \
|
||||
#define BOOTINFO1(base, id, value) \
|
||||
do { \
|
||||
stw_phys(as, base, id); \
|
||||
stw_p(base, id); \
|
||||
base += 2; \
|
||||
stw_phys(as, base, sizeof(struct bi_record) + 4); \
|
||||
stw_p(base, sizeof(struct bi_record) + 4); \
|
||||
base += 2; \
|
||||
stl_phys(as, base, value); \
|
||||
stl_p(base, value); \
|
||||
base += 4; \
|
||||
} while (0)
|
||||
|
||||
#define BOOTINFO2(as, base, id, value1, value2) \
|
||||
#define BOOTINFO2(base, id, value1, value2) \
|
||||
do { \
|
||||
stw_phys(as, base, id); \
|
||||
stw_p(base, id); \
|
||||
base += 2; \
|
||||
stw_phys(as, base, sizeof(struct bi_record) + 8); \
|
||||
stw_p(base, sizeof(struct bi_record) + 8); \
|
||||
base += 2; \
|
||||
stl_phys(as, base, value1); \
|
||||
stl_p(base, value1); \
|
||||
base += 4; \
|
||||
stl_phys(as, base, value2); \
|
||||
stl_p(base, value2); \
|
||||
base += 4; \
|
||||
} while (0)
|
||||
|
||||
#define BOOTINFOSTR(as, base, id, string) \
|
||||
#define BOOTINFOSTR(base, id, string) \
|
||||
do { \
|
||||
int i; \
|
||||
stw_phys(as, base, id); \
|
||||
stw_p(base, id); \
|
||||
base += 2; \
|
||||
stw_phys(as, base, \
|
||||
stw_p(base, \
|
||||
(sizeof(struct bi_record) + strlen(string) + \
|
||||
1 /* null termination */ + 3 /* padding */) & ~3); \
|
||||
base += 2; \
|
||||
for (i = 0; string[i]; i++) { \
|
||||
stb_phys(as, base++, string[i]); \
|
||||
stb_p(base++, string[i]); \
|
||||
} \
|
||||
stb_phys(as, base++, 0); \
|
||||
base = (base + 3) & ~3; \
|
||||
stb_p(base++, 0); \
|
||||
base = QEMU_ALIGN_PTR_UP(base, 4); \
|
||||
} while (0)
|
||||
|
||||
#define BOOTINFODATA(as, base, id, data, len) \
|
||||
#define BOOTINFODATA(base, id, data, len) \
|
||||
do { \
|
||||
int i; \
|
||||
stw_phys(as, base, id); \
|
||||
stw_p(base, id); \
|
||||
base += 2; \
|
||||
stw_phys(as, base, \
|
||||
stw_p(base, \
|
||||
(sizeof(struct bi_record) + len + \
|
||||
2 /* length field */ + 3 /* padding */) & ~3); \
|
||||
base += 2; \
|
||||
stw_phys(as, base, len); \
|
||||
stw_p(base, len); \
|
||||
base += 2; \
|
||||
for (i = 0; i < len; ++i) { \
|
||||
stb_phys(as, base++, data[i]); \
|
||||
stb_p(base++, data[i]); \
|
||||
} \
|
||||
base = (base + 3) & ~3; \
|
||||
base = QEMU_ALIGN_PTR_UP(base, 4); \
|
||||
} while (0)
|
||||
#endif
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include "qemu/osdep.h"
|
||||
#include "qemu/units.h"
|
||||
#include "qemu/datadir.h"
|
||||
#include "qemu/guest-random.h"
|
||||
#include "sysemu/sysemu.h"
|
||||
#include "cpu.h"
|
||||
#include "hw/boards.h"
|
||||
@ -320,11 +321,22 @@ static const TypeInfo glue_info = {
|
||||
},
|
||||
};
|
||||
|
||||
typedef struct {
|
||||
M68kCPU *cpu;
|
||||
struct bi_record *rng_seed;
|
||||
} ResetInfo;
|
||||
|
||||
static void main_cpu_reset(void *opaque)
|
||||
{
|
||||
M68kCPU *cpu = opaque;
|
||||
ResetInfo *reset_info = opaque;
|
||||
M68kCPU *cpu = reset_info->cpu;
|
||||
CPUState *cs = CPU(cpu);
|
||||
|
||||
if (reset_info->rng_seed) {
|
||||
qemu_guest_getrandom_nofail((void *)reset_info->rng_seed->data + 2,
|
||||
be16_to_cpu(*(uint16_t *)reset_info->rng_seed->data));
|
||||
}
|
||||
|
||||
cpu_reset(cs);
|
||||
cpu->env.aregs[7] = ldl_phys(cs->as, 0);
|
||||
cpu->env.pc = ldl_phys(cs->as, 4);
|
||||
@ -385,6 +397,8 @@ static void q800_init(MachineState *machine)
|
||||
NubusBus *nubus;
|
||||
DeviceState *glue;
|
||||
DriveInfo *dinfo;
|
||||
ResetInfo *reset_info;
|
||||
uint8_t rng_seed[32];
|
||||
|
||||
linux_boot = (kernel_filename != NULL);
|
||||
|
||||
@ -394,9 +408,12 @@ static void q800_init(MachineState *machine)
|
||||
exit(1);
|
||||
}
|
||||
|
||||
reset_info = g_new0(ResetInfo, 1);
|
||||
|
||||
/* init CPUs */
|
||||
cpu = M68K_CPU(cpu_create(machine->cpu_type));
|
||||
qemu_register_reset(main_cpu_reset, cpu);
|
||||
reset_info->cpu = cpu;
|
||||
qemu_register_reset(main_cpu_reset, reset_info);
|
||||
|
||||
/* RAM */
|
||||
memory_region_add_subregion(get_system_memory(), 0, machine->ram);
|
||||
@ -596,6 +613,14 @@ static void q800_init(MachineState *machine)
|
||||
cs = CPU(cpu);
|
||||
if (linux_boot) {
|
||||
uint64_t high;
|
||||
void *param_blob, *param_ptr, *param_rng_seed;
|
||||
|
||||
if (kernel_cmdline) {
|
||||
param_blob = g_malloc(strlen(kernel_cmdline) + 1024);
|
||||
} else {
|
||||
param_blob = g_malloc(1024);
|
||||
}
|
||||
|
||||
kernel_size = load_elf(kernel_filename, NULL, NULL, NULL,
|
||||
&elf_entry, NULL, &high, NULL, 1,
|
||||
EM_68K, 0, 0);
|
||||
@ -605,23 +630,24 @@ static void q800_init(MachineState *machine)
|
||||
}
|
||||
stl_phys(cs->as, 4, elf_entry); /* reset initial PC */
|
||||
parameters_base = (high + 1) & ~1;
|
||||
param_ptr = param_blob;
|
||||
|
||||
BOOTINFO1(cs->as, parameters_base, BI_MACHTYPE, MACH_MAC);
|
||||
BOOTINFO1(cs->as, parameters_base, BI_FPUTYPE, FPU_68040);
|
||||
BOOTINFO1(cs->as, parameters_base, BI_MMUTYPE, MMU_68040);
|
||||
BOOTINFO1(cs->as, parameters_base, BI_CPUTYPE, CPU_68040);
|
||||
BOOTINFO1(cs->as, parameters_base, BI_MAC_CPUID, CPUB_68040);
|
||||
BOOTINFO1(cs->as, parameters_base, BI_MAC_MODEL, MAC_MODEL_Q800);
|
||||
BOOTINFO1(cs->as, parameters_base,
|
||||
BOOTINFO1(param_ptr, BI_MACHTYPE, MACH_MAC);
|
||||
BOOTINFO1(param_ptr, BI_FPUTYPE, FPU_68040);
|
||||
BOOTINFO1(param_ptr, BI_MMUTYPE, MMU_68040);
|
||||
BOOTINFO1(param_ptr, BI_CPUTYPE, CPU_68040);
|
||||
BOOTINFO1(param_ptr, BI_MAC_CPUID, CPUB_68040);
|
||||
BOOTINFO1(param_ptr, BI_MAC_MODEL, MAC_MODEL_Q800);
|
||||
BOOTINFO1(param_ptr,
|
||||
BI_MAC_MEMSIZE, ram_size >> 20); /* in MB */
|
||||
BOOTINFO2(cs->as, parameters_base, BI_MEMCHUNK, 0, ram_size);
|
||||
BOOTINFO1(cs->as, parameters_base, BI_MAC_VADDR,
|
||||
BOOTINFO2(param_ptr, BI_MEMCHUNK, 0, ram_size);
|
||||
BOOTINFO1(param_ptr, BI_MAC_VADDR,
|
||||
VIDEO_BASE + macfb_mode->offset);
|
||||
BOOTINFO1(cs->as, parameters_base, BI_MAC_VDEPTH, graphic_depth);
|
||||
BOOTINFO1(cs->as, parameters_base, BI_MAC_VDIM,
|
||||
BOOTINFO1(param_ptr, BI_MAC_VDEPTH, graphic_depth);
|
||||
BOOTINFO1(param_ptr, BI_MAC_VDIM,
|
||||
(graphic_height << 16) | graphic_width);
|
||||
BOOTINFO1(cs->as, parameters_base, BI_MAC_VROW, macfb_mode->stride);
|
||||
BOOTINFO1(cs->as, parameters_base, BI_MAC_SCCBASE, SCC_BASE);
|
||||
BOOTINFO1(param_ptr, BI_MAC_VROW, macfb_mode->stride);
|
||||
BOOTINFO1(param_ptr, BI_MAC_SCCBASE, SCC_BASE);
|
||||
|
||||
rom = g_malloc(sizeof(*rom));
|
||||
memory_region_init_ram_ptr(rom, NULL, "m68k_fake_mac.rom",
|
||||
@ -630,10 +656,16 @@ static void q800_init(MachineState *machine)
|
||||
memory_region_add_subregion(get_system_memory(), MACROM_ADDR, rom);
|
||||
|
||||
if (kernel_cmdline) {
|
||||
BOOTINFOSTR(cs->as, parameters_base, BI_COMMAND_LINE,
|
||||
BOOTINFOSTR(param_ptr, BI_COMMAND_LINE,
|
||||
kernel_cmdline);
|
||||
}
|
||||
|
||||
/* Pass seed to RNG. */
|
||||
param_rng_seed = param_ptr;
|
||||
qemu_guest_getrandom_nofail(rng_seed, sizeof(rng_seed));
|
||||
BOOTINFODATA(param_ptr, BI_RNG_SEED,
|
||||
rng_seed, sizeof(rng_seed));
|
||||
|
||||
/* load initrd */
|
||||
if (initrd_filename) {
|
||||
initrd_size = get_image_size(initrd_filename);
|
||||
@ -646,13 +678,19 @@ static void q800_init(MachineState *machine)
|
||||
initrd_base = (ram_size - initrd_size) & TARGET_PAGE_MASK;
|
||||
load_image_targphys(initrd_filename, initrd_base,
|
||||
ram_size - initrd_base);
|
||||
BOOTINFO2(cs->as, parameters_base, BI_RAMDISK, initrd_base,
|
||||
BOOTINFO2(param_ptr, BI_RAMDISK, initrd_base,
|
||||
initrd_size);
|
||||
} else {
|
||||
initrd_base = 0;
|
||||
initrd_size = 0;
|
||||
}
|
||||
BOOTINFO0(cs->as, parameters_base, BI_LAST);
|
||||
BOOTINFO0(param_ptr, BI_LAST);
|
||||
rom_add_blob_fixed_as("bootinfo", param_blob, param_ptr - param_blob,
|
||||
parameters_base, cs->as);
|
||||
reset_info->rng_seed = rom_ptr_for_as(cs->as, parameters_base,
|
||||
param_ptr - param_blob) +
|
||||
(param_rng_seed - param_blob);
|
||||
g_free(param_blob);
|
||||
} else {
|
||||
uint8_t *ptr;
|
||||
/* allocate and load BIOS */
|
||||
|
@ -89,6 +89,7 @@ typedef struct {
|
||||
M68kCPU *cpu;
|
||||
hwaddr initial_pc;
|
||||
hwaddr initial_stack;
|
||||
struct bi_record *rng_seed;
|
||||
} ResetInfo;
|
||||
|
||||
static void main_cpu_reset(void *opaque)
|
||||
@ -97,6 +98,11 @@ static void main_cpu_reset(void *opaque)
|
||||
M68kCPU *cpu = reset_info->cpu;
|
||||
CPUState *cs = CPU(cpu);
|
||||
|
||||
if (reset_info->rng_seed) {
|
||||
qemu_guest_getrandom_nofail((void *)reset_info->rng_seed->data + 2,
|
||||
be16_to_cpu(*(uint16_t *)reset_info->rng_seed->data));
|
||||
}
|
||||
|
||||
cpu_reset(cs);
|
||||
cpu->env.aregs[7] = reset_info->initial_stack;
|
||||
cpu->env.pc = reset_info->initial_pc;
|
||||
@ -212,6 +218,13 @@ static void virt_init(MachineState *machine)
|
||||
if (kernel_filename) {
|
||||
CPUState *cs = CPU(cpu);
|
||||
uint64_t high;
|
||||
void *param_blob, *param_ptr, *param_rng_seed;
|
||||
|
||||
if (kernel_cmdline) {
|
||||
param_blob = g_malloc(strlen(kernel_cmdline) + 1024);
|
||||
} else {
|
||||
param_blob = g_malloc(1024);
|
||||
}
|
||||
|
||||
kernel_size = load_elf(kernel_filename, NULL, NULL, NULL,
|
||||
&elf_entry, NULL, &high, NULL, 1,
|
||||
@ -222,36 +235,38 @@ static void virt_init(MachineState *machine)
|
||||
}
|
||||
reset_info->initial_pc = elf_entry;
|
||||
parameters_base = (high + 1) & ~1;
|
||||
param_ptr = param_blob;
|
||||
|
||||
BOOTINFO1(cs->as, parameters_base, BI_MACHTYPE, MACH_VIRT);
|
||||
BOOTINFO1(cs->as, parameters_base, BI_FPUTYPE, FPU_68040);
|
||||
BOOTINFO1(cs->as, parameters_base, BI_MMUTYPE, MMU_68040);
|
||||
BOOTINFO1(cs->as, parameters_base, BI_CPUTYPE, CPU_68040);
|
||||
BOOTINFO2(cs->as, parameters_base, BI_MEMCHUNK, 0, ram_size);
|
||||
BOOTINFO1(param_ptr, BI_MACHTYPE, MACH_VIRT);
|
||||
BOOTINFO1(param_ptr, BI_FPUTYPE, FPU_68040);
|
||||
BOOTINFO1(param_ptr, BI_MMUTYPE, MMU_68040);
|
||||
BOOTINFO1(param_ptr, BI_CPUTYPE, CPU_68040);
|
||||
BOOTINFO2(param_ptr, BI_MEMCHUNK, 0, ram_size);
|
||||
|
||||
BOOTINFO1(cs->as, parameters_base, BI_VIRT_QEMU_VERSION,
|
||||
BOOTINFO1(param_ptr, BI_VIRT_QEMU_VERSION,
|
||||
((QEMU_VERSION_MAJOR << 24) | (QEMU_VERSION_MINOR << 16) |
|
||||
(QEMU_VERSION_MICRO << 8)));
|
||||
BOOTINFO2(cs->as, parameters_base, BI_VIRT_GF_PIC_BASE,
|
||||
BOOTINFO2(param_ptr, BI_VIRT_GF_PIC_BASE,
|
||||
VIRT_GF_PIC_MMIO_BASE, VIRT_GF_PIC_IRQ_BASE);
|
||||
BOOTINFO2(cs->as, parameters_base, BI_VIRT_GF_RTC_BASE,
|
||||
BOOTINFO2(param_ptr, BI_VIRT_GF_RTC_BASE,
|
||||
VIRT_GF_RTC_MMIO_BASE, VIRT_GF_RTC_IRQ_BASE);
|
||||
BOOTINFO2(cs->as, parameters_base, BI_VIRT_GF_TTY_BASE,
|
||||
BOOTINFO2(param_ptr, BI_VIRT_GF_TTY_BASE,
|
||||
VIRT_GF_TTY_MMIO_BASE, VIRT_GF_TTY_IRQ_BASE);
|
||||
BOOTINFO2(cs->as, parameters_base, BI_VIRT_CTRL_BASE,
|
||||
BOOTINFO2(param_ptr, BI_VIRT_CTRL_BASE,
|
||||
VIRT_CTRL_MMIO_BASE, VIRT_CTRL_IRQ_BASE);
|
||||
BOOTINFO2(cs->as, parameters_base, BI_VIRT_VIRTIO_BASE,
|
||||
BOOTINFO2(param_ptr, BI_VIRT_VIRTIO_BASE,
|
||||
VIRT_VIRTIO_MMIO_BASE, VIRT_VIRTIO_IRQ_BASE);
|
||||
|
||||
if (kernel_cmdline) {
|
||||
BOOTINFOSTR(cs->as, parameters_base, BI_COMMAND_LINE,
|
||||
BOOTINFOSTR(param_ptr, BI_COMMAND_LINE,
|
||||
kernel_cmdline);
|
||||
}
|
||||
|
||||
/* Pass seed to RNG. */
|
||||
qemu_guest_getrandom_nofail(rng_seed, sizeof(rng_seed));
|
||||
BOOTINFODATA(cs->as, parameters_base, BI_VIRT_RNG_SEED,
|
||||
rng_seed, sizeof(rng_seed));
|
||||
/* Pass seed to RNG. */
|
||||
param_rng_seed = param_ptr;
|
||||
qemu_guest_getrandom_nofail(rng_seed, sizeof(rng_seed));
|
||||
BOOTINFODATA(param_ptr, BI_RNG_SEED,
|
||||
rng_seed, sizeof(rng_seed));
|
||||
|
||||
/* load initrd */
|
||||
if (initrd_filename) {
|
||||
@ -265,13 +280,19 @@ static void virt_init(MachineState *machine)
|
||||
initrd_base = (ram_size - initrd_size) & TARGET_PAGE_MASK;
|
||||
load_image_targphys(initrd_filename, initrd_base,
|
||||
ram_size - initrd_base);
|
||||
BOOTINFO2(cs->as, parameters_base, BI_RAMDISK, initrd_base,
|
||||
BOOTINFO2(param_ptr, BI_RAMDISK, initrd_base,
|
||||
initrd_size);
|
||||
} else {
|
||||
initrd_base = 0;
|
||||
initrd_size = 0;
|
||||
}
|
||||
BOOTINFO0(cs->as, parameters_base, BI_LAST);
|
||||
BOOTINFO0(param_ptr, BI_LAST);
|
||||
rom_add_blob_fixed_as("bootinfo", param_blob, param_ptr - param_blob,
|
||||
parameters_base, cs->as);
|
||||
reset_info->rng_seed = rom_ptr_for_as(cs->as, parameters_base,
|
||||
param_ptr - param_blob) +
|
||||
(param_rng_seed - param_blob);
|
||||
g_free(param_blob);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -12,7 +12,9 @@
|
||||
#define BI_VIRT_GF_TTY_BASE 0x8003
|
||||
#define BI_VIRT_VIRTIO_BASE 0x8004
|
||||
#define BI_VIRT_CTRL_BASE 0x8005
|
||||
#define BI_VIRT_RNG_SEED 0x8006
|
||||
|
||||
/* No longer used -- replaced with BI_RNG_SEED -- but don't reuse this index:
|
||||
* #define BI_VIRT_RNG_SEED 0x8006 */
|
||||
|
||||
#define VIRT_BOOTI_VERSION MK_BI_VERSION(2, 0)
|
||||
|
||||
|
@ -57,7 +57,13 @@ struct mem_info {
|
||||
/* (struct mem_info) */
|
||||
#define BI_COMMAND_LINE 0x0007 /* kernel command line parameters */
|
||||
/* (string) */
|
||||
|
||||
/*
|
||||
* A random seed used to initialize the RNG. Record format:
|
||||
*
|
||||
* - length [ 2 bytes, 16-bit big endian ]
|
||||
* - seed data [ `length` bytes, padded to preserve 4-byte struct alignment ]
|
||||
*/
|
||||
#define BI_RNG_SEED 0x0008
|
||||
|
||||
/*
|
||||
* Linux/m68k Architectures (BI_MACHTYPE)
|
||||
|
Loading…
x
Reference in New Issue
Block a user