|
76 | 76 | #define VBE_DISPI_ID_VBOX_VIDEO 0xBE00 |
77 | 77 | #define VBE_DISPI_ID_HGSMI 0xBE01 |
78 | 78 | #define VBE_DISPI_ID_ANYX 0xBE02 |
79 | | -#define VBE_DISPI_ID_CFG 0xBE03 /* VBE_DISPI_INDEX_CFG is available. */ |
| 79 | +#define VBE_DISPI_ID_CFG 0xBE03 |
80 | 80 |
|
81 | 81 | #define VBE_DISPI_DISABLED 0x00 |
82 | 82 | #define VBE_DISPI_ENABLED 0x01 |
@@ -410,6 +410,15 @@ bochs_vbe_inw(const uint16_t addr, void *priv) |
410 | 410 | default: |
411 | 411 | ret = dev->vbe_regs[dev->vbe_index]; |
412 | 412 | break; |
| 413 | + case VBE_DISPI_INDEX_XRES: |
| 414 | + ret = vbe_get_caps ? VBE_DISPI_MAX_XRES : dev->vbe_regs[dev->vbe_index]; |
| 415 | + break; |
| 416 | + case VBE_DISPI_INDEX_YRES: |
| 417 | + ret = vbe_get_caps ? VBE_DISPI_MAX_YRES : dev->vbe_regs[dev->vbe_index]; |
| 418 | + break; |
| 419 | + case VBE_DISPI_INDEX_BPP: |
| 420 | + ret = vbe_get_caps ? 32 : dev->vbe_regs[dev->vbe_index]; |
| 421 | + break; |
413 | 422 | case VBE_DISPI_INDEX_VIDEO_MEMORY_64K: |
414 | 423 | ret = dev->vram_size >> 16; |
415 | 424 | break; |
@@ -479,8 +488,13 @@ bochs_vbe_outw(const uint16_t addr, const uint16_t val, void *priv) |
479 | 488 | default: |
480 | 489 | break; |
481 | 490 | case VBE_DISPI_INDEX_ID: |
482 | | - if (val != VBE_DISPI_ID_HGSMI) |
| 491 | + if ((val == VBE_DISPI_ID0) || (val == VBE_DISPI_ID1) || |
| 492 | + (val == VBE_DISPI_ID2) || (val == VBE_DISPI_ID3) || |
| 493 | + (val == VBE_DISPI_ID4) || (val == VBE_DISPI_ID_VBOX_VIDEO) || |
| 494 | + (val == VBE_DISPI_ID_ANYX) | (val == VBE_DISPI_ID_CFG)) |
483 | 495 | dev->vbe_regs[dev->vbe_index] = val; |
| 496 | + else if (val == VBE_DISPI_ID5) |
| 497 | + dev->vbe_regs[dev->vbe_index] = dev->id5_val; |
484 | 498 | break; |
485 | 499 | case VBE_DISPI_INDEX_XRES: |
486 | 500 | case VBE_DISPI_INDEX_YRES: |
|
0 commit comments