Commit 81864572e67501d4385d23ba87163b17c3426eb8
1 parent
3b4366de
Add support for boot_set command
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4764 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
2 changed files
with
44 additions
and
0 deletions
hw/sun4m.c
| ... | ... | @@ -149,6 +149,26 @@ void DMA_register_channel (int nchan, |
| 149 | 149 | { |
| 150 | 150 | } |
| 151 | 151 | |
| 152 | +static int nvram_boot_set(void *opaque, const char *boot_device) | |
| 153 | +{ | |
| 154 | + unsigned int i; | |
| 155 | + uint8_t image[sizeof(ohwcfg_v3_t)]; | |
| 156 | + ohwcfg_v3_t *header = (ohwcfg_v3_t *)ℑ | |
| 157 | + m48t59_t *nvram = (m48t59_t *)opaque; | |
| 158 | + | |
| 159 | + for (i = 0; i < sizeof(image); i++) | |
| 160 | + image[i] = m48t59_read(nvram, i) & 0xff; | |
| 161 | + | |
| 162 | + strcpy(header->boot_devices, boot_device); | |
| 163 | + header->nboot_devices = strlen(boot_device) & 0xff; | |
| 164 | + header->crc = cpu_to_be16(OHW_compute_crc(header, 0x00, 0xF8)); | |
| 165 | + | |
| 166 | + for (i = 0; i < sizeof(image); i++) | |
| 167 | + m48t59_write(nvram, i, image[i]); | |
| 168 | + | |
| 169 | + return 0; | |
| 170 | +} | |
| 171 | + | |
| 152 | 172 | extern int nographic; |
| 153 | 173 | |
| 154 | 174 | static void nvram_init(m48t59_t *nvram, uint8_t *macaddr, const char *cmdline, |
| ... | ... | @@ -230,6 +250,8 @@ static void nvram_init(m48t59_t *nvram, uint8_t *macaddr, const char *cmdline, |
| 230 | 250 | |
| 231 | 251 | for (i = 0; i < sizeof(image); i++) |
| 232 | 252 | m48t59_write(nvram, i, image[i]); |
| 253 | + | |
| 254 | + qemu_register_boot_set(nvram_boot_set, nvram); | |
| 233 | 255 | } |
| 234 | 256 | |
| 235 | 257 | static void *slavio_intctl; | ... | ... |
hw/sun4u.c
| ... | ... | @@ -68,6 +68,26 @@ void DMA_register_channel (int nchan, |
| 68 | 68 | { |
| 69 | 69 | } |
| 70 | 70 | |
| 71 | +static int nvram_boot_set(void *opaque, const char *boot_device) | |
| 72 | +{ | |
| 73 | + unsigned int i; | |
| 74 | + uint8_t image[sizeof(ohwcfg_v3_t)]; | |
| 75 | + ohwcfg_v3_t *header = (ohwcfg_v3_t *)ℑ | |
| 76 | + m48t59_t *nvram = (m48t59_t *)opaque; | |
| 77 | + | |
| 78 | + for (i = 0; i < sizeof(image); i++) | |
| 79 | + image[i] = m48t59_read(nvram, i) & 0xff; | |
| 80 | + | |
| 81 | + strcpy(header->boot_devices, boot_device); | |
| 82 | + header->nboot_devices = strlen(boot_device) & 0xff; | |
| 83 | + header->crc = cpu_to_be16(OHW_compute_crc(header, 0x00, 0xF8)); | |
| 84 | + | |
| 85 | + for (i = 0; i < sizeof(image); i++) | |
| 86 | + m48t59_write(nvram, i, image[i]); | |
| 87 | + | |
| 88 | + return 0; | |
| 89 | +} | |
| 90 | + | |
| 71 | 91 | extern int nographic; |
| 72 | 92 | |
| 73 | 93 | static int sun4u_NVRAM_set_params (m48t59_t *nvram, uint16_t NVRAM_size, |
| ... | ... | @@ -155,6 +175,8 @@ static int sun4u_NVRAM_set_params (m48t59_t *nvram, uint16_t NVRAM_size, |
| 155 | 175 | for (i = 0; i < sizeof(image); i++) |
| 156 | 176 | m48t59_write(nvram, i, image[i]); |
| 157 | 177 | |
| 178 | + qemu_register_boot_set(nvram_boot_set, nvram); | |
| 179 | + | |
| 158 | 180 | return 0; |
| 159 | 181 | } |
| 160 | 182 | ... | ... |