VirtualBox

Changeset 44876 in vbox


Ignore:
Timestamp:
Feb 28, 2013 8:56:09 PM (12 years ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
84039
Message:

DevVGA: Drop the default crit sect in favour of our own (now called CritSect instead of lock). s -> pThis (didn't mean to combine these changes, but I started doing things in the wrong order and suddenly had no choice).

Location:
trunk/src/VBox/Devices
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Graphics/DevVGA.cpp

    r44845 r44876  
    463463 * Unless the CRTC is horribly misprogrammed, vsync implies vblank.
    464464 */
    465 static void vga_update_retrace_state(VGAState *s)
     465static void vga_update_retrace_state(VGAState *pThis)
    466466{
    467467    unsigned        htotal_cclks, vtotal_lines, chars_per_sec;
     
    471471    unsigned        char_dots, clock_doubled, clock_index;
    472472    const int       clocks[] = {25175000, 28322000, 25175000, 25175000};
    473     vga_retrace_s   *r = &s->retrace_state;
     473    vga_retrace_s   *r = &pThis->retrace_state;
    474474
    475475    /* For horizontal timings, we only care about the blanking start/end. */
    476     htotal_cclks = s->cr[0x00] + 5;
    477     hblank_start_cclk = s->cr[0x02];
    478     hblank_end_cclk = (s->cr[0x03] & 0x1f) + ((s->cr[0x05] & 0x80) >> 2);
    479     hblank_skew_cclks = (s->cr[0x03] >> 5) & 3;
     476    htotal_cclks = pThis->cr[0x00] + 5;
     477    hblank_start_cclk = pThis->cr[0x02];
     478    hblank_end_cclk = (pThis->cr[0x03] & 0x1f) + ((pThis->cr[0x05] & 0x80) >> 2);
     479    hblank_skew_cclks = (pThis->cr[0x03] >> 5) & 3;
    480480
    481481    /* For vertical timings, we need both the blanking start/end... */
    482     vtotal_lines = s->cr[0x06] + ((s->cr[0x07] & 1) << 8) + ((s->cr[0x07] & 0x20) << 4) + 2;
    483     vblank_start_line = s->cr[0x15] + ((s->cr[0x07] & 8) << 5) + ((s->cr[0x09] & 0x20) << 4);
    484     vblank_end = s->cr[0x16];
     482    vtotal_lines = pThis->cr[0x06] + ((pThis->cr[0x07] & 1) << 8) + ((pThis->cr[0x07] & 0x20) << 4) + 2;
     483    vblank_start_line = pThis->cr[0x15] + ((pThis->cr[0x07] & 8) << 5) + ((pThis->cr[0x09] & 0x20) << 4);
     484    vblank_end = pThis->cr[0x16];
    485485    /* ... and the vertical retrace (vsync) start/end. */
    486     vsync_start_line = s->cr[0x10] + ((s->cr[0x07] & 4) << 6) + ((s->cr[0x07] & 0x80) << 2);
    487     vsync_end = s->cr[0x11] & 0xf;
     486    vsync_start_line = pThis->cr[0x10] + ((pThis->cr[0x07] & 4) << 6) + ((pThis->cr[0x07] & 0x80) << 2);
     487    vsync_end = pThis->cr[0x11] & 0xf;
    488488
    489489    /* Calculate the blanking and sync widths. The way it's implemented in
     
    495495
    496496    /* Calculate the dot and character clock rates. */
    497     clock_doubled = (s->sr[0x01] >> 3) & 1; /* Clock doubling bit. */
    498     clock_index = (s->msr >> 2) & 3;
    499     char_dots = (s->sr[0x01] & 1) ? 8 : 9;  /* 8 or 9 dots per cclk. */
     497    clock_doubled = (pThis->sr[0x01] >> 3) & 1; /* Clock doubling bit. */
     498    clock_index = (pThis->msr >> 2) & 3;
     499    char_dots = (pThis->sr[0x01] & 1) ? 8 : 9;  /* 8 or 9 dots per cclk. */
    500500
    501501    chars_per_sec = clocks[clock_index] / char_dots;
     
    539539}
    540540
    541 static uint8_t vga_retrace(VGAState *s)
    542 {
    543     vga_retrace_s   *r = &s->retrace_state;
     541static uint8_t vga_retrace(VGAState *pThis)
     542{
     543    vga_retrace_s   *r = &pThis->retrace_state;
    544544
    545545    if (r->frame_ns) {
    546         uint8_t     val = s->st01 & ~(ST01_V_RETRACE | ST01_DISP_ENABLE);
     546        uint8_t     val = pThis->st01 & ~(ST01_V_RETRACE | ST01_DISP_ENABLE);
    547547        unsigned    cur_frame_ns, cur_line_ns;
    548548        uint64_t    time_ns;
    549549
    550         time_ns = PDMDevHlpTMTimeVirtGetNano(VGASTATE2DEVINS(s));
     550        time_ns = PDMDevHlpTMTimeVirtGetNano(VGASTATE2DEVINS(pThis));
    551551
    552552        /* Determine the time within the frame. */
     
    568568        return val;
    569569    } else {
    570         return s->st01 ^ (ST01_V_RETRACE | ST01_DISP_ENABLE);
    571     }
    572 }
    573 
    574 int vga_ioport_invalid(VGAState *s, uint32_t addr)
    575 {
    576     if (s->msr & MSR_COLOR_EMULATION) {
     570        return pThis->st01 ^ (ST01_V_RETRACE | ST01_DISP_ENABLE);
     571    }
     572}
     573
     574int vga_ioport_invalid(VGAState *pThis, uint32_t addr)
     575{
     576    if (pThis->msr & MSR_COLOR_EMULATION) {
    577577        /* Color */
    578578        return (addr >= 0x3b0 && addr <= 0x3bf);
     
    585585static uint32_t vga_ioport_read(void *opaque, uint32_t addr)
    586586{
    587     VGAState *s = (VGAState*)opaque;
     587    VGAState *pThis = (VGAState*)opaque;
    588588    int val, index;
    589589
    590590    /* check port range access depending on color/monochrome mode */
    591     if (vga_ioport_invalid(s, addr)) {
     591    if (vga_ioport_invalid(pThis, addr)) {
    592592        val = 0xff;
    593593        Log(("VGA: following read ignored\n"));
     
    595595        switch(addr) {
    596596        case 0x3c0:
    597             if (s->ar_flip_flop == 0) {
    598                 val = s->ar_index;
     597            if (pThis->ar_flip_flop == 0) {
     598                val = pThis->ar_index;
    599599            } else {
    600600                val = 0;
     
    602602            break;
    603603        case 0x3c1:
    604             index = s->ar_index & 0x1f;
     604            index = pThis->ar_index & 0x1f;
    605605            if (index < 21)
    606                 val = s->ar[index];
     606                val = pThis->ar[index];
    607607            else
    608608                val = 0;
    609609            break;
    610610        case 0x3c2:
    611             val = s->st00;
     611            val = pThis->st00;
    612612            break;
    613613        case 0x3c4:
    614             val = s->sr_index;
     614            val = pThis->sr_index;
    615615            break;
    616616        case 0x3c5:
    617             val = s->sr[s->sr_index];
    618             Log2(("vga: read SR%x = 0x%02x\n", s->sr_index, val));
     617            val = pThis->sr[pThis->sr_index];
     618            Log2(("vga: read SR%x = 0x%02x\n", pThis->sr_index, val));
    619619            break;
    620620        case 0x3c7:
    621             val = s->dac_state;
     621            val = pThis->dac_state;
    622622            break;
    623623        case 0x3c8:
    624             val = s->dac_write_index;
     624            val = pThis->dac_write_index;
    625625            break;
    626626        case 0x3c9:
    627             val = s->palette[s->dac_read_index * 3 + s->dac_sub_index];
    628             if (++s->dac_sub_index == 3) {
    629                 s->dac_sub_index = 0;
    630                 s->dac_read_index++;
     627            val = pThis->palette[pThis->dac_read_index * 3 + pThis->dac_sub_index];
     628            if (++pThis->dac_sub_index == 3) {
     629                pThis->dac_sub_index = 0;
     630                pThis->dac_read_index++;
    631631            }
    632632            break;
    633633        case 0x3ca:
    634             val = s->fcr;
     634            val = pThis->fcr;
    635635            break;
    636636        case 0x3cc:
    637             val = s->msr;
     637            val = pThis->msr;
    638638            break;
    639639        case 0x3ce:
    640             val = s->gr_index;
     640            val = pThis->gr_index;
    641641            break;
    642642        case 0x3cf:
    643             val = s->gr[s->gr_index];
    644             Log2(("vga: read GR%x = 0x%02x\n", s->gr_index, val));
     643            val = pThis->gr[pThis->gr_index];
     644            Log2(("vga: read GR%x = 0x%02x\n", pThis->gr_index, val));
    645645            break;
    646646        case 0x3b4:
    647647        case 0x3d4:
    648             val = s->cr_index;
     648            val = pThis->cr_index;
    649649            break;
    650650        case 0x3b5:
    651651        case 0x3d5:
    652             val = s->cr[s->cr_index];
    653             Log2(("vga: read CR%x = 0x%02x\n", s->cr_index, val));
     652            val = pThis->cr[pThis->cr_index];
     653            Log2(("vga: read CR%x = 0x%02x\n", pThis->cr_index, val));
    654654            break;
    655655        case 0x3ba:
    656656        case 0x3da:
    657             val = s->st01 = vga_retrace(s);
    658             s->ar_flip_flop = 0;
     657            val = pThis->st01 = vga_retrace(pThis);
     658            pThis->ar_flip_flop = 0;
    659659            break;
    660660        default:
     
    669669static void vga_ioport_write(void *opaque, uint32_t addr, uint32_t val)
    670670{
    671     VGAState *s = (VGAState*)opaque;
     671    VGAState *pThis = (VGAState*)opaque;
    672672    int index;
    673673
     
    675675
    676676    /* check port range access depending on color/monochrome mode */
    677     if (vga_ioport_invalid(s, addr)) {
     677    if (vga_ioport_invalid(pThis, addr)) {
    678678        Log(("VGA: previous write ignored\n"));
    679679        return;
     
    682682    switch(addr) {
    683683    case 0x3c0:
    684         if (s->ar_flip_flop == 0) {
     684        if (pThis->ar_flip_flop == 0) {
    685685            val &= 0x3f;
    686             s->ar_index = val;
     686            pThis->ar_index = val;
    687687        } else {
    688             index = s->ar_index & 0x1f;
     688            index = pThis->ar_index & 0x1f;
    689689            switch(index) {
    690690            case 0x00: case 0x01: case 0x02: case 0x03: case 0x04: case 0x05: case 0x06: case 0x07:
    691691            case 0x08: case 0x09: case 0x0a: case 0x0b: case 0x0c: case 0x0d: case 0x0e: case 0x0f:
    692                 s->ar[index] = val & 0x3f;
     692                pThis->ar[index] = val & 0x3f;
    693693                break;
    694694            case 0x10:
    695                 s->ar[index] = val & ~0x10;
     695                pThis->ar[index] = val & ~0x10;
    696696                break;
    697697            case 0x11:
    698                 s->ar[index] = val;
     698                pThis->ar[index] = val;
    699699                break;
    700700            case 0x12:
    701                 s->ar[index] = val & ~0xc0;
     701                pThis->ar[index] = val & ~0xc0;
    702702                break;
    703703            case 0x13:
    704                 s->ar[index] = val & ~0xf0;
     704                pThis->ar[index] = val & ~0xf0;
    705705                break;
    706706            case 0x14:
    707                 s->ar[index] = val & ~0xf0;
     707                pThis->ar[index] = val & ~0xf0;
    708708                break;
    709709            default:
     
    711711            }
    712712        }
    713         s->ar_flip_flop ^= 1;
     713        pThis->ar_flip_flop ^= 1;
    714714        break;
    715715    case 0x3c2:
    716         s->msr = val & ~0x10;
    717         if (s->fRealRetrace)
    718             vga_update_retrace_state(s);
    719         s->st00 = (s->st00 & ~0x10) | (0x90 >> ((val >> 2) & 0x3));
     716        pThis->msr = val & ~0x10;
     717        if (pThis->fRealRetrace)
     718            vga_update_retrace_state(pThis);
     719        pThis->st00 = (pThis->st00 & ~0x10) | (0x90 >> ((val >> 2) & 0x3));
    720720        break;
    721721    case 0x3c4:
    722         s->sr_index = val & 7;
     722        pThis->sr_index = val & 7;
    723723        break;
    724724    case 0x3c5:
    725         Log2(("vga: write SR%x = 0x%02x\n", s->sr_index, val));
    726         s->sr[s->sr_index] = val & sr_mask[s->sr_index];
     725        Log2(("vga: write SR%x = 0x%02x\n", pThis->sr_index, val));
     726        pThis->sr[pThis->sr_index] = val & sr_mask[pThis->sr_index];
    727727        /* Allow SR07 to disable VBE. */
    728         if (s->sr_index == 0x07 && !(val & 1))
     728        if (pThis->sr_index == 0x07 && !(val & 1))
    729729        {
    730             s->vbe_regs[VBE_DISPI_INDEX_ENABLE] = VBE_DISPI_DISABLED;
    731             s->bank_offset = 0;
    732         }
    733         if (s->fRealRetrace && s->sr_index == 0x01)
    734             vga_update_retrace_state(s);
     730            pThis->vbe_regs[VBE_DISPI_INDEX_ENABLE] = VBE_DISPI_DISABLED;
     731            pThis->bank_offset = 0;
     732        }
     733        if (pThis->fRealRetrace && pThis->sr_index == 0x01)
     734            vga_update_retrace_state(pThis);
    735735#ifndef IN_RC
    736736        /* The VGA region is (could be) affected by this change; reset all aliases we've created. */
    737         if (    s->sr_index == 4 /* mode */
    738             ||  s->sr_index == 2 /* plane mask */)
     737        if (    pThis->sr_index == 4 /* mode */
     738            ||  pThis->sr_index == 2 /* plane mask */)
    739739        {
    740             if (s->fRemappedVGA)
     740            if (pThis->fRemappedVGA)
    741741            {
    742                 IOMMMIOResetRegion(PDMDevHlpGetVM(s->CTX_SUFF(pDevIns)), 0x000a0000);
    743                 s->fRemappedVGA = false;
     742                IOMMMIOResetRegion(PDMDevHlpGetVM(pThis->CTX_SUFF(pDevIns)), 0x000a0000);
     743                pThis->fRemappedVGA = false;
    744744            }
    745745        }
     
    747747        break;
    748748    case 0x3c7:
    749         s->dac_read_index = val;
    750         s->dac_sub_index = 0;
    751         s->dac_state = 3;
     749        pThis->dac_read_index = val;
     750        pThis->dac_sub_index = 0;
     751        pThis->dac_state = 3;
    752752        break;
    753753    case 0x3c8:
    754         s->dac_write_index = val;
    755         s->dac_sub_index = 0;
    756         s->dac_state = 0;
     754        pThis->dac_write_index = val;
     755        pThis->dac_sub_index = 0;
     756        pThis->dac_state = 0;
    757757        break;
    758758    case 0x3c9:
    759         s->dac_cache[s->dac_sub_index] = val;
    760         if (++s->dac_sub_index == 3) {
    761             memcpy(&s->palette[s->dac_write_index * 3], s->dac_cache, 3);
    762             s->dac_sub_index = 0;
    763             s->dac_write_index++;
     759        pThis->dac_cache[pThis->dac_sub_index] = val;
     760        if (++pThis->dac_sub_index == 3) {
     761            memcpy(&pThis->palette[pThis->dac_write_index * 3], pThis->dac_cache, 3);
     762            pThis->dac_sub_index = 0;
     763            pThis->dac_write_index++;
    764764        }
    765765        break;
    766766    case 0x3ce:
    767         s->gr_index = val & 0x0f;
     767        pThis->gr_index = val & 0x0f;
    768768        break;
    769769    case 0x3cf:
    770         Log2(("vga: write GR%x = 0x%02x\n", s->gr_index, val));
    771         s->gr[s->gr_index] = val & gr_mask[s->gr_index];
     770        Log2(("vga: write GR%x = 0x%02x\n", pThis->gr_index, val));
     771        pThis->gr[pThis->gr_index] = val & gr_mask[pThis->gr_index];
    772772
    773773#ifndef IN_RC
    774774        /* The VGA region is (could be) affected by this change; reset all aliases we've created. */
    775         if (s->gr_index == 6 /* memory map mode */)
     775        if (pThis->gr_index == 6 /* memory map mode */)
    776776        {
    777             if (s->fRemappedVGA)
     777            if (pThis->fRemappedVGA)
    778778            {
    779                 IOMMMIOResetRegion(PDMDevHlpGetVM(s->CTX_SUFF(pDevIns)), 0x000a0000);
    780                 s->fRemappedVGA = false;
     779                IOMMMIOResetRegion(PDMDevHlpGetVM(pThis->CTX_SUFF(pDevIns)), 0x000a0000);
     780                pThis->fRemappedVGA = false;
    781781            }
    782782        }
     
    786786    case 0x3b4:
    787787    case 0x3d4:
    788         s->cr_index = val;
     788        pThis->cr_index = val;
    789789        break;
    790790    case 0x3b5:
    791791    case 0x3d5:
    792         Log2(("vga: write CR%x = 0x%02x\n", s->cr_index, val));
     792        Log2(("vga: write CR%x = 0x%02x\n", pThis->cr_index, val));
    793793        /* handle CR0-7 protection */
    794         if ((s->cr[0x11] & 0x80) && s->cr_index <= 7) {
     794        if ((pThis->cr[0x11] & 0x80) && pThis->cr_index <= 7) {
    795795            /* can always write bit 4 of CR7 */
    796             if (s->cr_index == 7)
    797                 s->cr[7] = (s->cr[7] & ~0x10) | (val & 0x10);
     796            if (pThis->cr_index == 7)
     797                pThis->cr[7] = (pThis->cr[7] & ~0x10) | (val & 0x10);
    798798            return;
    799799        }
    800         s->cr[s->cr_index] = val;
    801 
    802         if (s->fRealRetrace) {
     800        pThis->cr[pThis->cr_index] = val;
     801
     802        if (pThis->fRealRetrace) {
    803803            /* The following registers are only updated during a mode set. */
    804             switch(s->cr_index) {
     804            switch(pThis->cr_index) {
    805805            case 0x00:
    806806            case 0x02:
     
    814814            case 0x15:
    815815            case 0x16:
    816                 vga_update_retrace_state(s);
     816                vga_update_retrace_state(pThis);
    817817                break;
    818818            }
     
    821821    case 0x3ba:
    822822    case 0x3da:
    823         s->fcr = val & 0x10;
     823        pThis->fcr = val & 0x10;
    824824        break;
    825825    }
     
    829829static uint32_t vbe_ioport_read_index(void *opaque, uint32_t addr)
    830830{
    831     VGAState *s = (VGAState*)opaque;
    832     uint32_t val = s->vbe_index;
     831    VGAState *pThis = (VGAState*)opaque;
     832    uint32_t val = pThis->vbe_index;
    833833    NOREF(addr);
    834834    return val;
     
    837837static uint32_t vbe_ioport_read_data(void *opaque, uint32_t addr)
    838838{
    839     VGAState *s = (VGAState*)opaque;
     839    VGAState *pThis = (VGAState*)opaque;
    840840    uint32_t val;
    841841    NOREF(addr);
    842842
    843     if (s->vbe_index < VBE_DISPI_INDEX_NB) {
    844       if (s->vbe_regs[VBE_DISPI_INDEX_ENABLE] & VBE_DISPI_GETCAPS) {
    845           switch(s->vbe_index) {
     843    if (pThis->vbe_index < VBE_DISPI_INDEX_NB) {
     844      if (pThis->vbe_regs[VBE_DISPI_INDEX_ENABLE] & VBE_DISPI_GETCAPS) {
     845          switch(pThis->vbe_index) {
    846846                /* XXX: do not hardcode ? */
    847847            case VBE_DISPI_INDEX_XRES:
     
    855855                break;
    856856            default:
    857                 Assert(s->vbe_index < VBE_DISPI_INDEX_NB);
    858                 val = s->vbe_regs[s->vbe_index];
     857                Assert(pThis->vbe_index < VBE_DISPI_INDEX_NB);
     858                val = pThis->vbe_regs[pThis->vbe_index];
    859859                break;
    860860          }
    861861      } else {
    862           switch(s->vbe_index) {
     862          switch(pThis->vbe_index) {
    863863          case VBE_DISPI_INDEX_VBOX_VIDEO:
    864864              /* Reading from the port means that the old additions are requesting the number of monitors. */
     
    866866              break;
    867867          default:
    868               Assert(s->vbe_index < VBE_DISPI_INDEX_NB);
    869               val = s->vbe_regs[s->vbe_index];
     868              Assert(pThis->vbe_index < VBE_DISPI_INDEX_NB);
     869              val = pThis->vbe_regs[pThis->vbe_index];
    870870              break;
    871871          }
     
    874874        val = 0;
    875875    }
    876     Log(("VBE: read index=0x%x val=0x%x\n", s->vbe_index, val));
     876    Log(("VBE: read index=0x%x val=0x%x\n", pThis->vbe_index, val));
    877877    return val;
    878878}
     
    913913#endif
    914914
    915 static void recalculate_data(VGAState *s, bool fVirtHeightOnly)
    916 {
    917     uint16_t cBPP        = s->vbe_regs[VBE_DISPI_INDEX_BPP];
    918     uint16_t cVirtWidth  = s->vbe_regs[VBE_DISPI_INDEX_VIRT_WIDTH];
    919     uint16_t cX          = s->vbe_regs[VBE_DISPI_INDEX_XRES];
     915static void recalculate_data(VGAState *pThis, bool fVirtHeightOnly)
     916{
     917    uint16_t cBPP        = pThis->vbe_regs[VBE_DISPI_INDEX_BPP];
     918    uint16_t cVirtWidth  = pThis->vbe_regs[VBE_DISPI_INDEX_VIRT_WIDTH];
     919    uint16_t cX          = pThis->vbe_regs[VBE_DISPI_INDEX_XRES];
    920920    if (!cBPP || !cX)
    921921        return;  /* Not enough data has been set yet. */
     
    924924        cbLinePitch      = calc_line_pitch(cBPP, cX);
    925925    Assert(cbLinePitch != 0);
    926     uint32_t cVirtHeight = s->vram_size / cbLinePitch;
     926    uint32_t cVirtHeight = pThis->vram_size / cbLinePitch;
    927927    if (!fVirtHeightOnly)
    928928    {
    929         uint16_t offX        = s->vbe_regs[VBE_DISPI_INDEX_X_OFFSET];
    930         uint16_t offY        = s->vbe_regs[VBE_DISPI_INDEX_Y_OFFSET];
     929        uint16_t offX        = pThis->vbe_regs[VBE_DISPI_INDEX_X_OFFSET];
     930        uint16_t offY        = pThis->vbe_regs[VBE_DISPI_INDEX_Y_OFFSET];
    931931        uint32_t offStart    = cbLinePitch * offY;
    932932        if (cBPP == 4)
     
    935935            offStart += offX * ((cBPP + 7) >> 3);
    936936        offStart >>= 2;
    937         s->vbe_line_offset = RT_MIN(cbLinePitch, s->vram_size);
    938         s->vbe_start_addr  = RT_MIN(offStart, s->vram_size);
     937        pThis->vbe_line_offset = RT_MIN(cbLinePitch, pThis->vram_size);
     938        pThis->vbe_start_addr  = RT_MIN(offStart, pThis->vram_size);
    939939    }
    940940
    941941    /* The VBE_DISPI_INDEX_VIRT_HEIGHT is used to prevent setting resolution bigger than VRAM permits
    942942     * it is used instead of VBE_DISPI_INDEX_YRES *only* in case
    943      * s->vbe_regs[VBE_DISPI_INDEX_VIRT_HEIGHT] < s->vbe_regs[VBE_DISPI_INDEX_YRES]
    944      * We can not simply do s->vbe_regs[VBE_DISPI_INDEX_VIRT_HEIGHT] = cVirtHeight since
     943     * pThis->vbe_regs[VBE_DISPI_INDEX_VIRT_HEIGHT] < pThis->vbe_regs[VBE_DISPI_INDEX_YRES]
     944     * We can not simply do pThis->vbe_regs[VBE_DISPI_INDEX_VIRT_HEIGHT] = cVirtHeight since
    945945     * the cVirtHeight we calculated can exceed the 16bit value range
    946      * instead we'll check if it's bigger than s->vbe_regs[VBE_DISPI_INDEX_YRES], and if yes,
    947      * assign the s->vbe_regs[VBE_DISPI_INDEX_VIRT_HEIGHT] with a dummy UINT16_MAX value
    948      * that is always bigger than s->vbe_regs[VBE_DISPI_INDEX_YRES]
    949      * to just ensure the s->vbe_regs[VBE_DISPI_INDEX_YRES] is always used */
    950     s->vbe_regs[VBE_DISPI_INDEX_VIRT_HEIGHT] = (cVirtHeight >= (uint32_t)s->vbe_regs[VBE_DISPI_INDEX_YRES]) ? UINT16_MAX : (uint16_t)cVirtHeight;
     946     * instead we'll check if it's bigger than pThis->vbe_regs[VBE_DISPI_INDEX_YRES], and if yes,
     947     * assign the pThis->vbe_regs[VBE_DISPI_INDEX_VIRT_HEIGHT] with a dummy UINT16_MAX value
     948     * that is always bigger than pThis->vbe_regs[VBE_DISPI_INDEX_YRES]
     949     * to just ensure the pThis->vbe_regs[VBE_DISPI_INDEX_YRES] is always used */
     950    pThis->vbe_regs[VBE_DISPI_INDEX_VIRT_HEIGHT] = (cVirtHeight >= (uint32_t)pThis->vbe_regs[VBE_DISPI_INDEX_YRES])
     951                                                 ? UINT16_MAX : (uint16_t)cVirtHeight;
    951952}
    952953
    953954static void vbe_ioport_write_index(void *opaque, uint32_t addr, uint32_t val)
    954955{
    955     VGAState *s = (VGAState*)opaque;
    956     s->vbe_index = val;
     956    VGAState *pThis = (VGAState*)opaque;
     957    pThis->vbe_index = val;
    957958    NOREF(addr);
    958959}
     
    960961static int vbe_ioport_write_data(void *opaque, uint32_t addr, uint32_t val)
    961962{
    962     VGAState *s = (VGAState*)opaque;
     963    VGAState *pThis = (VGAState*)opaque;
    963964    uint32_t max_bank;
    964965    NOREF(addr);
    965966
    966     if (s->vbe_index <= VBE_DISPI_INDEX_NB) {
     967    if (pThis->vbe_index <= VBE_DISPI_INDEX_NB) {
    967968        bool fRecalculate = false;
    968         Log(("VBE: write index=0x%x val=0x%x\n", s->vbe_index, val));
    969         switch(s->vbe_index) {
     969        Log(("VBE: write index=0x%x val=0x%x\n", pThis->vbe_index, val));
     970        switch(pThis->vbe_index) {
    970971        case VBE_DISPI_INDEX_ID:
    971972            if (val == VBE_DISPI_ID0 ||
     
    974975                val == VBE_DISPI_ID3 ||
    975976                val == VBE_DISPI_ID4) {
    976                 s->vbe_regs[s->vbe_index] = val;
     977                pThis->vbe_regs[pThis->vbe_index] = val;
    977978            }
    978979            if (val == VBE_DISPI_ID_VBOX_VIDEO) {
    979                 s->vbe_regs[s->vbe_index] = val;
     980                pThis->vbe_regs[pThis->vbe_index] = val;
    980981            } else if (val == VBE_DISPI_ID_ANYX) {
    981                 s->vbe_regs[s->vbe_index] = val;
     982                pThis->vbe_regs[pThis->vbe_index] = val;
    982983            }
    983984#ifdef VBOX_WITH_HGSMI
    984985            else if (val == VBE_DISPI_ID_HGSMI) {
    985                 s->vbe_regs[s->vbe_index] = val;
     986                pThis->vbe_regs[pThis->vbe_index] = val;
    986987            }
    987988#endif /* VBOX_WITH_HGSMI */
     
    990991            if (val <= VBE_DISPI_MAX_XRES)
    991992            {
    992                 s->vbe_regs[s->vbe_index] = val;
    993                 s->vbe_regs[VBE_DISPI_INDEX_VIRT_WIDTH] = val;
     993                pThis->vbe_regs[pThis->vbe_index] = val;
     994                pThis->vbe_regs[VBE_DISPI_INDEX_VIRT_WIDTH] = val;
    994995                fRecalculate = true;
    995996            }
     
    997998        case VBE_DISPI_INDEX_YRES:
    998999            if (val <= VBE_DISPI_MAX_YRES)
    999                 s->vbe_regs[s->vbe_index] = val;
     1000                pThis->vbe_regs[pThis->vbe_index] = val;
    10001001            break;
    10011002        case VBE_DISPI_INDEX_BPP:
     
    10041005            if (val == 4 || val == 8 || val == 15 ||
    10051006                val == 16 || val == 24 || val == 32) {
    1006                 s->vbe_regs[s->vbe_index] = val;
     1007                pThis->vbe_regs[pThis->vbe_index] = val;
    10071008                fRecalculate = true;
    10081009            }
    10091010            break;
    10101011        case VBE_DISPI_INDEX_BANK:
    1011             if (s->vbe_regs[VBE_DISPI_INDEX_BPP] <= 4)
    1012                 max_bank = s->vbe_bank_max >> 2;    /* Each bank really covers 256K */
     1012            if (pThis->vbe_regs[VBE_DISPI_INDEX_BPP] <= 4)
     1013                max_bank = pThis->vbe_bank_max >> 2;    /* Each bank really covers 256K */
    10131014            else
    1014                 max_bank = s->vbe_bank_max;
     1015                max_bank = pThis->vbe_bank_max;
    10151016            /* Old software may pass garbage in the high byte of bank. If the maximum
    10161017             * bank fits into a single byte, toss the high byte the user supplied.
     
    10201021            if (val > max_bank)
    10211022                val = max_bank;
    1022             s->vbe_regs[s->vbe_index] = val;
    1023             s->bank_offset = (val << 16);
     1023            pThis->vbe_regs[pThis->vbe_index] = val;
     1024            pThis->bank_offset = (val << 16);
    10241025
    10251026#ifndef IN_RC
    10261027            /* The VGA region is (could be) affected by this change; reset all aliases we've created. */
    1027             if (s->fRemappedVGA)
     1028            if (pThis->fRemappedVGA)
    10281029            {
    1029                 IOMMMIOResetRegion(PDMDevHlpGetVM(s->CTX_SUFF(pDevIns)), 0x000a0000);
    1030                 s->fRemappedVGA = false;
     1030                IOMMMIOResetRegion(PDMDevHlpGetVM(pThis->CTX_SUFF(pDevIns)), 0x000a0000);
     1031                pThis->fRemappedVGA = false;
    10311032            }
    10321033#endif
     
    10381039#else
    10391040            if ((val & VBE_DISPI_ENABLED) &&
    1040                 !(s->vbe_regs[VBE_DISPI_INDEX_ENABLE] & VBE_DISPI_ENABLED)) {
     1041                !(pThis->vbe_regs[VBE_DISPI_INDEX_ENABLE] & VBE_DISPI_ENABLED)) {
    10411042                int h, shift_control;
    10421043                /* Check the values before we screw up with a resolution which is too big or small. */
    1043                 size_t cb = s->vbe_regs[VBE_DISPI_INDEX_XRES];
    1044                 if (s->vbe_regs[VBE_DISPI_INDEX_BPP] == 4)
    1045                     cb = s->vbe_regs[VBE_DISPI_INDEX_XRES] >> 1;
     1044                size_t cb = pThis->vbe_regs[VBE_DISPI_INDEX_XRES];
     1045                if (pThis->vbe_regs[VBE_DISPI_INDEX_BPP] == 4)
     1046                    cb = pThis->vbe_regs[VBE_DISPI_INDEX_XRES] >> 1;
    10461047                else
    1047                     cb = s->vbe_regs[VBE_DISPI_INDEX_XRES] * ((s->vbe_regs[VBE_DISPI_INDEX_BPP] + 7) >> 3);
    1048                 cb *= s->vbe_regs[VBE_DISPI_INDEX_YRES];
    1049                 uint16_t cVirtWidth = s->vbe_regs[VBE_DISPI_INDEX_VIRT_WIDTH];
     1048                    cb = pThis->vbe_regs[VBE_DISPI_INDEX_XRES] * ((pThis->vbe_regs[VBE_DISPI_INDEX_BPP] + 7) >> 3);
     1049                cb *= pThis->vbe_regs[VBE_DISPI_INDEX_YRES];
     1050                uint16_t cVirtWidth = pThis->vbe_regs[VBE_DISPI_INDEX_VIRT_WIDTH];
    10501051                if (!cVirtWidth)
    1051                     cVirtWidth = s->vbe_regs[VBE_DISPI_INDEX_XRES];
     1052                    cVirtWidth = pThis->vbe_regs[VBE_DISPI_INDEX_XRES];
    10521053                if (    !cVirtWidth
    1053                     ||  !s->vbe_regs[VBE_DISPI_INDEX_YRES]
    1054                     ||  cb > s->vram_size)
     1054                    ||  !pThis->vbe_regs[VBE_DISPI_INDEX_YRES]
     1055                    ||  cb > pThis->vram_size)
    10551056                {
    10561057                    AssertMsgFailed(("VIRT WIDTH=%d YRES=%d cb=%d vram_size=%d\n",
    1057                                      s->vbe_regs[VBE_DISPI_INDEX_VIRT_WIDTH], s->vbe_regs[VBE_DISPI_INDEX_YRES], cb, s->vram_size));
     1058                                     pThis->vbe_regs[VBE_DISPI_INDEX_VIRT_WIDTH], pThis->vbe_regs[VBE_DISPI_INDEX_YRES], cb, pThis->vram_size));
    10581059                    return VINF_SUCCESS; /* Note: silent failure like before */
    10591060                }
    10601061
    10611062                /* When VBE interface is enabled, it is reset. */
    1062                 s->vbe_regs[VBE_DISPI_INDEX_X_OFFSET] = 0;
    1063                 s->vbe_regs[VBE_DISPI_INDEX_Y_OFFSET] = 0;
     1063                pThis->vbe_regs[VBE_DISPI_INDEX_X_OFFSET] = 0;
     1064                pThis->vbe_regs[VBE_DISPI_INDEX_Y_OFFSET] = 0;
    10641065                fRecalculate = true;
    10651066
    10661067                /* clear the screen (should be done in BIOS) */
    10671068                if (!(val & VBE_DISPI_NOCLEARMEM)) {
    1068                     uint16_t cY = RT_MIN(s->vbe_regs[VBE_DISPI_INDEX_YRES],
    1069                                          s->vbe_regs[VBE_DISPI_INDEX_VIRT_HEIGHT]);
    1070                     uint16_t cbLinePitch = s->vbe_line_offset;
    1071                     memset(s->CTX_SUFF(vram_ptr), 0,
     1069                    uint16_t cY = RT_MIN(pThis->vbe_regs[VBE_DISPI_INDEX_YRES],
     1070                                         pThis->vbe_regs[VBE_DISPI_INDEX_VIRT_HEIGHT]);
     1071                    uint16_t cbLinePitch = pThis->vbe_line_offset;
     1072                    memset(pThis->CTX_SUFF(vram_ptr), 0,
    10721073                           cY * cbLinePitch);
    10731074                }
     
    10751076                /* we initialize the VGA graphic mode (should be done
    10761077                   in BIOS) */
    1077                 s->gr[0x06] = (s->gr[0x06] & ~0x0c) | 0x05; /* graphic mode + memory map 1 */
    1078                 s->cr[0x17] |= 3; /* no CGA modes */
    1079                 s->cr[0x13] = s->vbe_line_offset >> 3;
     1078                pThis->gr[0x06] = (pThis->gr[0x06] & ~0x0c) | 0x05; /* graphic mode + memory map 1 */
     1079                pThis->cr[0x17] |= 3; /* no CGA modes */
     1080                pThis->cr[0x13] = pThis->vbe_line_offset >> 3;
    10801081                /* width */
    1081                 s->cr[0x01] = (cVirtWidth >> 3) - 1;
     1082                pThis->cr[0x01] = (cVirtWidth >> 3) - 1;
    10821083                /* height (only meaningful if < 1024) */
    1083                 h = s->vbe_regs[VBE_DISPI_INDEX_YRES] - 1;
    1084                 s->cr[0x12] = h;
    1085                 s->cr[0x07] = (s->cr[0x07] & ~0x42) |
     1084                h = pThis->vbe_regs[VBE_DISPI_INDEX_YRES] - 1;
     1085                pThis->cr[0x12] = h;
     1086                pThis->cr[0x07] = (pThis->cr[0x07] & ~0x42) |
    10861087                    ((h >> 7) & 0x02) | ((h >> 3) & 0x40);
    10871088                /* line compare to 1023 */
    1088                 s->cr[0x18] = 0xff;
    1089                 s->cr[0x07] |= 0x10;
    1090                 s->cr[0x09] |= 0x40;
    1091 
    1092                 if (s->vbe_regs[VBE_DISPI_INDEX_BPP] == 4) {
     1089                pThis->cr[0x18] = 0xff;
     1090                pThis->cr[0x07] |= 0x10;
     1091                pThis->cr[0x09] |= 0x40;
     1092
     1093                if (pThis->vbe_regs[VBE_DISPI_INDEX_BPP] == 4) {
    10931094                    shift_control = 0;
    1094                     s->sr[0x01] &= ~8; /* no double line */
     1095                    pThis->sr[0x01] &= ~8; /* no double line */
    10951096                } else {
    10961097                    shift_control = 2;
    1097                     s->sr[4] |= 0x08; /* set chain 4 mode */
    1098                     s->sr[2] |= 0x0f; /* activate all planes */
     1098                    pThis->sr[4] |= 0x08; /* set chain 4 mode */
     1099                    pThis->sr[2] |= 0x0f; /* activate all planes */
    10991100                    /* Indicate non-VGA mode in SR07. */
    1100                     s->sr[7] |= 1;
     1101                    pThis->sr[7] |= 1;
    11011102                }
    1102                 s->gr[0x05] = (s->gr[0x05] & ~0x60) | (shift_control << 5);
    1103                 s->cr[0x09] &= ~0x9f; /* no double scan */
     1103                pThis->gr[0x05] = (pThis->gr[0x05] & ~0x60) | (shift_control << 5);
     1104                pThis->cr[0x09] &= ~0x9f; /* no double scan */
    11041105                /* sunlover 30.05.2007
    11051106                 * The ar_index remains with bit 0x20 cleared after a switch from fullscreen
     
    11071108                 * But the VBE mode is graphics, so not a blank anymore.
    11081109                 */
    1109                 s->ar_index |= 0x20;
     1110                pThis->ar_index |= 0x20;
    11101111            } else {
    11111112                /* XXX: the bios should do that */
     
    11131114                 * Here is probably more to reset. When this was executed in GC
    11141115                 * then the *update* functions could not detect a mode change.
    1115                  * Or may be these update function should take the s->vbe_regs[s->vbe_index]
     1116                 * Or may be these update function should take the pThis->vbe_regs[pThis->vbe_index]
    11161117                 * into account when detecting a mode change.
    11171118                 *
     
    11201121                 * LFBChange callback.
    11211122                 */
    1122                 s->bank_offset = 0;
     1123                pThis->bank_offset = 0;
    11231124            }
    1124             s->vbe_regs[s->vbe_index] = val;
     1125            pThis->vbe_regs[pThis->vbe_index] = val;
    11251126            /*
    11261127             * LFB video mode is either disabled or changed. This notification
    11271128             * is used by the display to disable VBVA.
    11281129             */
    1129             s->pDrv->pfnLFBModeChange(s->pDrv, (val & VBE_DISPI_ENABLED) != 0);
     1130            pThis->pDrv->pfnLFBModeChange(pThis->pDrv, (val & VBE_DISPI_ENABLED) != 0);
    11301131
    11311132            /* The VGA region is (could be) affected by this change; reset all aliases we've created. */
    1132             if (s->fRemappedVGA)
     1133            if (pThis->fRemappedVGA)
    11331134            {
    1134                 IOMMMIOResetRegion(PDMDevHlpGetVM(s->CTX_SUFF(pDevIns)), 0x000a0000);
    1135                 s->fRemappedVGA = false;
     1135                IOMMMIOResetRegion(PDMDevHlpGetVM(pThis->CTX_SUFF(pDevIns)), 0x000a0000);
     1136                pThis->fRemappedVGA = false;
    11361137            }
    11371138            break;
     
    11411142        case VBE_DISPI_INDEX_Y_OFFSET:
    11421143            {
    1143                 s->vbe_regs[s->vbe_index] = val;
     1144                pThis->vbe_regs[pThis->vbe_index] = val;
    11441145                fRecalculate = true;
    11451146            }
     
    11521153            if (val == VBOX_VIDEO_DISABLE_ADAPTER_MEMORY)
    11531154            {
    1154                 s->pDrv->pfnProcessAdapterData(s->pDrv, NULL, 0);
     1155                pThis->pDrv->pfnProcessAdapterData(pThis->pDrv, NULL, 0);
    11551156            }
    11561157            else if (val == VBOX_VIDEO_INTERPRET_ADAPTER_MEMORY)
    11571158            {
    1158                 s->pDrv->pfnProcessAdapterData(s->pDrv, s->CTX_SUFF(vram_ptr), s->vram_size);
     1159                pThis->pDrv->pfnProcessAdapterData(pThis->pDrv, pThis->CTX_SUFF(vram_ptr), pThis->vram_size);
    11591160            }
    11601161            else if ((val & 0xFFFF0000) == VBOX_VIDEO_INTERPRET_DISPLAY_MEMORY_BASE)
    11611162            {
    1162                 s->pDrv->pfnProcessDisplayData(s->pDrv, s->CTX_SUFF(vram_ptr), val & 0xFFFF);
     1163                pThis->pDrv->pfnProcessDisplayData(pThis->pDrv, pThis->CTX_SUFF(vram_ptr), val & 0xFFFF);
    11631164            }
    11641165#endif /* IN_RING3 */
     
    11691170        if (fRecalculate)
    11701171        {
    1171             recalculate_data(s, false);
     1172            recalculate_data(pThis, false);
    11721173        }
    11731174    }
     
    11791180static uint32_t vga_mem_readb(void *opaque, target_phys_addr_t addr, int *prc)
    11801181{
    1181     VGAState *s = (VGAState*)opaque;
     1182    VGAState *pThis = (VGAState*)opaque;
    11821183    int memory_map_mode, plane;
    11831184    uint32_t ret;
     
    11851186    Log3(("vga: read [0x%x] -> ", addr));
    11861187    /* convert to VGA memory offset */
    1187     memory_map_mode = (s->gr[6] >> 2) & 3;
     1188    memory_map_mode = (pThis->gr[6] >> 2) & 3;
    11881189#ifndef IN_RC
    11891190    RTGCPHYS GCPhys = addr; /* save original address */
     
    11971198        if (addr >= 0x10000)
    11981199            return 0xff;
    1199         addr += s->bank_offset;
     1200        addr += pThis->bank_offset;
    12001201        break;
    12011202    case 2:
     
    12121213    }
    12131214
    1214     if (s->sr[4] & 0x08) {
     1215    if (pThis->sr[4] & 0x08) {
    12151216        /* chain 4 mode : simplest access */
    12161217# ifndef IN_RC
    12171218        /* If all planes are accessible, then map the page to the frame buffer and make it writable. */
    1218         if (   (s->sr[2] & 3) == 3
    1219             && !vga_is_dirty(s, addr))
     1219        if (   (pThis->sr[2] & 3) == 3
     1220            && !vga_is_dirty(pThis, addr))
    12201221        {
    12211222            /** @todo only allow read access (doesn't work now) */
    1222             STAM_COUNTER_INC(&s->StatMapPage);
    1223             IOMMMIOMapMMIO2Page(PDMDevHlpGetVM(s->CTX_SUFF(pDevIns)), GCPhys, s->GCPhysVRAM + addr, X86_PTE_RW|X86_PTE_P);
     1223            STAM_COUNTER_INC(&pThis->StatMapPage);
     1224            IOMMMIOMapMMIO2Page(PDMDevHlpGetVM(pThis->CTX_SUFF(pDevIns)), GCPhys, pThis->GCPhysVRAM + addr, X86_PTE_RW|X86_PTE_P);
    12241225            /* Set as dirty as write accesses won't be noticed now. */
    1225             vga_set_dirty(s, addr);
    1226             s->fRemappedVGA = true;
     1226            vga_set_dirty(pThis, addr);
     1227            pThis->fRemappedVGA = true;
    12271228        }
    12281229# endif /* IN_RC */
    1229         VERIFY_VRAM_READ_OFF_RETURN(s, addr, *prc);
    1230         ret = s->CTX_SUFF(vram_ptr)[addr];
    1231     } else if (!(s->sr[4] & 0x04)) {    /* Host access is controlled by SR4, not GR5! */
     1230        VERIFY_VRAM_READ_OFF_RETURN(pThis, addr, *prc);
     1231        ret = pThis->CTX_SUFF(vram_ptr)[addr];
     1232    } else if (!(pThis->sr[4] & 0x04)) {    /* Host access is controlled by SR4, not GR5! */
    12321233        /* odd/even mode (aka text mode mapping) */
    1233         plane = (s->gr[4] & 2) | (addr & 1);
     1234        plane = (pThis->gr[4] & 2) | (addr & 1);
    12341235        /* See the comment for a similar line in vga_mem_writeb. */
    12351236        RTGCPHYS off = ((addr & ~1) << 2) | plane;
    1236         VERIFY_VRAM_READ_OFF_RETURN(s, off, *prc);
    1237         ret = s->CTX_SUFF(vram_ptr)[off];
     1237        VERIFY_VRAM_READ_OFF_RETURN(pThis, off, *prc);
     1238        ret = pThis->CTX_SUFF(vram_ptr)[off];
    12381239    } else {
    12391240        /* standard VGA latched access */
    1240         VERIFY_VRAM_READ_OFF_RETURN(s, addr, *prc);
    1241         s->latch = ((uint32_t *)s->CTX_SUFF(vram_ptr))[addr];
    1242 
    1243         if (!(s->gr[5] & 0x08)) {
     1241        VERIFY_VRAM_READ_OFF_RETURN(pThis, addr, *prc);
     1242        pThis->latch = ((uint32_t *)pThis->CTX_SUFF(vram_ptr))[addr];
     1243
     1244        if (!(pThis->gr[5] & 0x08)) {
    12441245            /* read mode 0 */
    1245             plane = s->gr[4];
    1246             ret = GET_PLANE(s->latch, plane);
     1246            plane = pThis->gr[4];
     1247            ret = GET_PLANE(pThis->latch, plane);
    12471248        } else {
    12481249            /* read mode 1 */
    1249             ret = (s->latch ^ mask16[s->gr[2]]) & mask16[s->gr[7]];
     1250            ret = (pThis->latch ^ mask16[pThis->gr[2]]) & mask16[pThis->gr[7]];
    12501251            ret |= ret >> 16;
    12511252            ret |= ret >> 8;
     
    12601261static int vga_mem_writeb(void *opaque, target_phys_addr_t addr, uint32_t val)
    12611262{
    1262     VGAState *s = (VGAState*)opaque;
     1263    VGAState *pThis = (VGAState*)opaque;
    12631264    int memory_map_mode, plane, write_mode, b, func_select, mask;
    12641265    uint32_t write_mask, bit_mask, set_mask;
     
    12661267    Log3(("vga: [0x%x] = 0x%02x\n", addr, val));
    12671268    /* convert to VGA memory offset */
    1268     memory_map_mode = (s->gr[6] >> 2) & 3;
     1269    memory_map_mode = (pThis->gr[6] >> 2) & 3;
    12691270#ifndef IN_RC
    12701271    RTGCPHYS GCPhys = addr; /* save original address */
     
    12781279        if (addr >= 0x10000)
    12791280            return VINF_SUCCESS;
    1280         addr += s->bank_offset;
     1281        addr += pThis->bank_offset;
    12811282        break;
    12821283    case 2:
     
    12931294    }
    12941295
    1295     if (s->sr[4] & 0x08) {
     1296    if (pThis->sr[4] & 0x08) {
    12961297        /* chain 4 mode : simplest access */
    12971298        plane = addr & 3;
    12981299        mask = (1 << plane);
    1299         if (s->sr[2] & mask) {
     1300        if (pThis->sr[2] & mask) {
    13001301# ifndef IN_RC
    13011302            /* If all planes are accessible, then map the page to the frame buffer and make it writable. */
    1302             if (   (s->sr[2] & 3) == 3
    1303                 && !vga_is_dirty(s, addr))
     1303            if (   (pThis->sr[2] & 3) == 3
     1304                && !vga_is_dirty(pThis, addr))
    13041305            {
    1305                 STAM_COUNTER_INC(&s->StatMapPage);
    1306                 IOMMMIOMapMMIO2Page(PDMDevHlpGetVM(s->CTX_SUFF(pDevIns)), GCPhys, s->GCPhysVRAM + addr, X86_PTE_RW | X86_PTE_P);
    1307                 s->fRemappedVGA = true;
     1306                STAM_COUNTER_INC(&pThis->StatMapPage);
     1307                IOMMMIOMapMMIO2Page(PDMDevHlpGetVM(pThis->CTX_SUFF(pDevIns)), GCPhys, pThis->GCPhysVRAM + addr, X86_PTE_RW | X86_PTE_P);
     1308                pThis->fRemappedVGA = true;
    13081309            }
    13091310# endif /* IN_RC */
    13101311
    1311             VERIFY_VRAM_WRITE_OFF_RETURN(s, addr);
    1312             s->CTX_SUFF(vram_ptr)[addr] = val;
     1312            VERIFY_VRAM_WRITE_OFF_RETURN(pThis, addr);
     1313            pThis->CTX_SUFF(vram_ptr)[addr] = val;
    13131314            Log3(("vga: chain4: [0x%x]\n", addr));
    1314             s->plane_updated |= mask; /* only used to detect font change */
    1315             vga_set_dirty(s, addr);
    1316         }
    1317     } else if (!(s->sr[4] & 0x04)) {    /* Host access is controlled by SR4, not GR5! */
     1315            pThis->plane_updated |= mask; /* only used to detect font change */
     1316            vga_set_dirty(pThis, addr);
     1317        }
     1318    } else if (!(pThis->sr[4] & 0x04)) {    /* Host access is controlled by SR4, not GR5! */
    13181319        /* odd/even mode (aka text mode mapping) */
    1319         plane = (s->gr[4] & 2) | (addr & 1);
     1320        plane = (pThis->gr[4] & 2) | (addr & 1);
    13201321        mask = (1 << plane);
    1321         if (s->sr[2] & mask) {
     1322        if (pThis->sr[2] & mask) {
    13221323            /* 'addr' is offset in a plane, bit 0 selects the plane.
    13231324             * Mask the bit 0, convert plane index to vram offset,
     
    13261327             */
    13271328            addr = ((addr & ~1) << 2) | plane;
    1328             VERIFY_VRAM_WRITE_OFF_RETURN(s, addr);
    1329             s->CTX_SUFF(vram_ptr)[addr] = val;
     1329            VERIFY_VRAM_WRITE_OFF_RETURN(pThis, addr);
     1330            pThis->CTX_SUFF(vram_ptr)[addr] = val;
    13301331            Log3(("vga: odd/even: [0x%x]\n", addr));
    1331             s->plane_updated |= mask; /* only used to detect font change */
    1332             vga_set_dirty(s, addr);
     1332            pThis->plane_updated |= mask; /* only used to detect font change */
     1333            vga_set_dirty(pThis, addr);
    13331334        }
    13341335    } else {
    13351336        /* standard VGA latched access */
    1336         VERIFY_VRAM_WRITE_OFF_RETURN(s, addr * 4 + 3);
     1337        VERIFY_VRAM_WRITE_OFF_RETURN(pThis, addr * 4 + 3);
    13371338
    13381339#ifdef IN_RING0
    1339         if (((++s->cLatchAccesses) & s->uMaskLatchAccess) == s->uMaskLatchAccess)
     1340        if (((++pThis->cLatchAccesses) & pThis->uMaskLatchAccess) == pThis->uMaskLatchAccess)
    13401341        {
    13411342            static uint32_t const s_aMask[5]  = {   0x3ff,   0x1ff,    0x7f,    0x3f,   0x1f};
    13421343            static uint64_t const s_aDelta[5] = {10000000, 5000000, 2500000, 1250000, 625000};
    1343             if (PDMDevHlpCanEmulateIoBlock(s->CTX_SUFF(pDevIns)))
     1344            if (PDMDevHlpCanEmulateIoBlock(pThis->CTX_SUFF(pDevIns)))
    13441345            {
    13451346                uint64_t u64CurTime = RTTimeSystemNanoTS();
     
    13481349                * to the recompiler
    13491350                */
    1350                 if (u64CurTime - s->u64LastLatchedAccess < s_aDelta[s->iMask])
     1351                if (u64CurTime - pThis->u64LastLatchedAccess < s_aDelta[pThis->iMask])
    13511352                {
    1352                     s->u64LastLatchedAccess = 0;
    1353                     s->iMask                = RT_MIN(s->iMask + 1U, RT_ELEMENTS(s_aMask) - 1U);
    1354                     s->uMaskLatchAccess     = s_aMask[s->iMask];
    1355                     s->cLatchAccesses       = s->uMaskLatchAccess - 1;
     1353                    pThis->u64LastLatchedAccess = 0;
     1354                    pThis->iMask                = RT_MIN(pThis->iMask + 1U, RT_ELEMENTS(s_aMask) - 1U);
     1355                    pThis->uMaskLatchAccess     = s_aMask[pThis->iMask];
     1356                    pThis->cLatchAccesses       = pThis->uMaskLatchAccess - 1;
    13561357                    return VINF_EM_RAW_EMULATE_IO_BLOCK;
    13571358                }
    1358                 if (s->u64LastLatchedAccess)
     1359                if (pThis->u64LastLatchedAccess)
    13591360                {
    1360                     Log2(("Reset mask (was %d) delta %RX64 (limit %x)\n", s->iMask, u64CurTime - s->u64LastLatchedAccess, s_aDelta[s->iMask]));
    1361                     if (s->iMask)
    1362                         s->iMask--;
    1363                     s->uMaskLatchAccess     = s_aMask[s->iMask];
     1361                    Log2(("Reset mask (was %d) delta %RX64 (limit %x)\n", pThis->iMask, u64CurTime - pThis->u64LastLatchedAccess, s_aDelta[pThis->iMask]));
     1362                    if (pThis->iMask)
     1363                        pThis->iMask--;
     1364                    pThis->uMaskLatchAccess     = s_aMask[pThis->iMask];
    13641365                }
    1365                 s->u64LastLatchedAccess = u64CurTime;
     1366                pThis->u64LastLatchedAccess = u64CurTime;
    13661367            }
    13671368            else
    13681369            {
    1369                 s->u64LastLatchedAccess = 0;
    1370                 s->iMask                = 0;
    1371                 s->uMaskLatchAccess     = s_aMask[s->iMask];
    1372                 s->cLatchAccesses       = 0;
     1370                pThis->u64LastLatchedAccess = 0;
     1371                pThis->iMask                = 0;
     1372                pThis->uMaskLatchAccess     = s_aMask[pThis->iMask];
     1373                pThis->cLatchAccesses       = 0;
    13731374            }
    13741375        }
    13751376#endif
    13761377
    1377         write_mode = s->gr[5] & 3;
     1378        write_mode = pThis->gr[5] & 3;
    13781379        switch(write_mode) {
    13791380        default:
    13801381        case 0:
    13811382            /* rotate */
    1382             b = s->gr[3] & 7;
     1383            b = pThis->gr[3] & 7;
    13831384            val = ((val >> b) | (val << (8 - b))) & 0xff;
    13841385            val |= val << 8;
     
    13861387
    13871388            /* apply set/reset mask */
    1388             set_mask = mask16[s->gr[1]];
    1389             val = (val & ~set_mask) | (mask16[s->gr[0]] & set_mask);
    1390             bit_mask = s->gr[8];
     1389            set_mask = mask16[pThis->gr[1]];
     1390            val = (val & ~set_mask) | (mask16[pThis->gr[0]] & set_mask);
     1391            bit_mask = pThis->gr[8];
    13911392            break;
    13921393        case 1:
    1393             val = s->latch;
     1394            val = pThis->latch;
    13941395            goto do_write;
    13951396        case 2:
    13961397            val = mask16[val & 0x0f];
    1397             bit_mask = s->gr[8];
     1398            bit_mask = pThis->gr[8];
    13981399            break;
    13991400        case 3:
    14001401            /* rotate */
    1401             b = s->gr[3] & 7;
     1402            b = pThis->gr[3] & 7;
    14021403            val = (val >> b) | (val << (8 - b));
    14031404
    1404             bit_mask = s->gr[8] & val;
    1405             val = mask16[s->gr[0]];
     1405            bit_mask = pThis->gr[8] & val;
     1406            val = mask16[pThis->gr[0]];
    14061407            break;
    14071408        }
    14081409
    14091410        /* apply logical operation */
    1410         func_select = s->gr[3] >> 3;
     1411        func_select = pThis->gr[3] >> 3;
    14111412        switch(func_select) {
    14121413        case 0:
     
    14161417        case 1:
    14171418            /* and */
    1418             val &= s->latch;
     1419            val &= pThis->latch;
    14191420            break;
    14201421        case 2:
    14211422            /* or */
    1422             val |= s->latch;
     1423            val |= pThis->latch;
    14231424            break;
    14241425        case 3:
    14251426            /* xor */
    1426             val ^= s->latch;
     1427            val ^= pThis->latch;
    14271428            break;
    14281429        }
     
    14311432        bit_mask |= bit_mask << 8;
    14321433        bit_mask |= bit_mask << 16;
    1433         val = (val & bit_mask) | (s->latch & ~bit_mask);
     1434        val = (val & bit_mask) | (pThis->latch & ~bit_mask);
    14341435
    14351436    do_write:
    14361437        /* mask data according to sr[2] */
    1437         mask = s->sr[2];
    1438         s->plane_updated |= mask; /* only used to detect font change */
     1438        mask = pThis->sr[2];
     1439        pThis->plane_updated |= mask; /* only used to detect font change */
    14391440        write_mask = mask16[mask];
    1440         ((uint32_t *)s->CTX_SUFF(vram_ptr))[addr] =
    1441             (((uint32_t *)s->CTX_SUFF(vram_ptr))[addr] & ~write_mask) |
     1441        ((uint32_t *)pThis->CTX_SUFF(vram_ptr))[addr] =
     1442            (((uint32_t *)pThis->CTX_SUFF(vram_ptr))[addr] & ~write_mask) |
    14421443            (val & write_mask);
    14431444            Log3(("vga: latch: [0x%x] mask=0x%08x val=0x%08x\n",
    14441445                   addr * 4, write_mask, val));
    1445             vga_set_dirty(s, (addr << 2));
     1446            vga_set_dirty(pThis, (addr << 2));
    14461447    }
    14471448
     
    14581459                                  uint32_t fgcol, uint32_t bgcol, int dup9);
    14591460typedef void vga_draw_line_func(VGAState *s1, uint8_t *d,
    1460                                 const uint8_t *s, int width);
     1461                                const uint8_t *pThis, int width);
    14611462
    14621463static inline unsigned int rgb_to_pixel8(unsigned int r, unsigned int g, unsigned b)
     
    15251526
    15261527/* return true if the palette was modified */
    1527 static bool update_palette16(VGAState *s)
     1528static bool update_palette16(VGAState *pThis)
    15281529{
    15291530    bool full_update = false;
     
    15311532    uint32_t v, col, *palette;
    15321533
    1533     palette = s->last_palette;
     1534    palette = pThis->last_palette;
    15341535    for(i = 0; i < 16; i++) {
    1535         v = s->ar[i];
    1536         if (s->ar[0x10] & 0x80)
    1537             v = ((s->ar[0x14] & 0xf) << 4) | (v & 0xf);
     1536        v = pThis->ar[i];
     1537        if (pThis->ar[0x10] & 0x80)
     1538            v = ((pThis->ar[0x14] & 0xf) << 4) | (v & 0xf);
    15381539        else
    1539             v = ((s->ar[0x14] & 0xc) << 4) | (v & 0x3f);
     1540            v = ((pThis->ar[0x14] & 0xc) << 4) | (v & 0x3f);
    15401541        v = v * 3;
    1541         col = s->rgb_to_pixel(c6_to_8(s->palette[v]),
    1542                               c6_to_8(s->palette[v + 1]),
    1543                               c6_to_8(s->palette[v + 2]));
     1542        col = pThis->rgb_to_pixel(c6_to_8(pThis->palette[v]),
     1543                              c6_to_8(pThis->palette[v + 1]),
     1544                              c6_to_8(pThis->palette[v + 2]));
    15441545        if (col != palette[i]) {
    15451546            full_update = true;
     
    15511552
    15521553/* return true if the palette was modified */
    1553 static bool update_palette256(VGAState *s)
     1554static bool update_palette256(VGAState *pThis)
    15541555{
    15551556    bool full_update = false;
     
    15581559    int wide_dac;
    15591560
    1560     palette = s->last_palette;
     1561    palette = pThis->last_palette;
    15611562    v = 0;
    1562     wide_dac = (s->vbe_regs[VBE_DISPI_INDEX_ENABLE] & (VBE_DISPI_ENABLED | VBE_DISPI_8BIT_DAC))
     1563    wide_dac = (pThis->vbe_regs[VBE_DISPI_INDEX_ENABLE] & (VBE_DISPI_ENABLED | VBE_DISPI_8BIT_DAC))
    15631564             == (VBE_DISPI_ENABLED | VBE_DISPI_8BIT_DAC);
    15641565    for(i = 0; i < 256; i++) {
    15651566        if (wide_dac)
    1566             col = s->rgb_to_pixel(s->palette[v],
    1567                                   s->palette[v + 1],
    1568                                   s->palette[v + 2]);
     1567            col = pThis->rgb_to_pixel(pThis->palette[v],
     1568                                  pThis->palette[v + 1],
     1569                                  pThis->palette[v + 2]);
    15691570        else
    1570             col = s->rgb_to_pixel(c6_to_8(s->palette[v]),
    1571                                   c6_to_8(s->palette[v + 1]),
    1572                                   c6_to_8(s->palette[v + 2]));
     1571            col = pThis->rgb_to_pixel(c6_to_8(pThis->palette[v]),
     1572                                  c6_to_8(pThis->palette[v + 1]),
     1573                                  c6_to_8(pThis->palette[v + 2]));
    15731574        if (col != palette[i]) {
    15741575            full_update = true;
     
    15801581}
    15811582
    1582 static void vga_get_offsets(VGAState *s,
     1583static void vga_get_offsets(VGAState *pThis,
    15831584                            uint32_t *pline_offset,
    15841585                            uint32_t *pstart_addr,
     
    15871588    uint32_t start_addr, line_offset, line_compare;
    15881589#ifdef CONFIG_BOCHS_VBE
    1589     if (s->vbe_regs[VBE_DISPI_INDEX_ENABLE] & VBE_DISPI_ENABLED) {
    1590         line_offset = s->vbe_line_offset;
    1591         start_addr = s->vbe_start_addr;
     1590    if (pThis->vbe_regs[VBE_DISPI_INDEX_ENABLE] & VBE_DISPI_ENABLED) {
     1591        line_offset = pThis->vbe_line_offset;
     1592        start_addr = pThis->vbe_start_addr;
    15921593        line_compare = 65535;
    15931594    } else
     
    15951596    {
    15961597        /* compute line_offset in bytes */
    1597         line_offset = s->cr[0x13];
     1598        line_offset = pThis->cr[0x13];
    15981599        line_offset <<= 3;
    1599         if (!(s->cr[0x14] & 0x40) && !(s->cr[0x17] & 0x40))
     1600        if (!(pThis->cr[0x14] & 0x40) && !(pThis->cr[0x17] & 0x40))
    16001601        {
    16011602            /* Word mode. Used for odd/even modes. */
     
    16041605
    16051606        /* starting address */
    1606         start_addr = s->cr[0x0d] | (s->cr[0x0c] << 8);
     1607        start_addr = pThis->cr[0x0d] | (pThis->cr[0x0c] << 8);
    16071608
    16081609        /* line compare */
    1609         line_compare = s->cr[0x18] |
    1610             ((s->cr[0x07] & 0x10) << 4) |
    1611             ((s->cr[0x09] & 0x40) << 3);
     1610        line_compare = pThis->cr[0x18] |
     1611            ((pThis->cr[0x07] & 0x10) << 4) |
     1612            ((pThis->cr[0x09] & 0x40) << 3);
    16121613    }
    16131614    *pline_offset = line_offset;
     
    16171618
    16181619/* update start_addr and line_offset. Return TRUE if modified */
    1619 static bool update_basic_params(VGAState *s)
     1620static bool update_basic_params(VGAState *pThis)
    16201621{
    16211622    bool full_update = false;
    16221623    uint32_t start_addr, line_offset, line_compare;
    16231624
    1624     s->get_offsets(s, &line_offset, &start_addr, &line_compare);
    1625 
    1626     if (line_offset != s->line_offset ||
    1627         start_addr != s->start_addr ||
    1628         line_compare != s->line_compare) {
    1629         s->line_offset = line_offset;
    1630         s->start_addr = start_addr;
    1631         s->line_compare = line_compare;
     1625    pThis->get_offsets(pThis, &line_offset, &start_addr, &line_compare);
     1626
     1627    if (line_offset != pThis->line_offset ||
     1628        start_addr != pThis->start_addr ||
     1629        line_compare != pThis->line_compare) {
     1630        pThis->line_offset = line_offset;
     1631        pThis->start_addr = start_addr;
     1632        pThis->line_compare = line_compare;
    16321633        full_update = true;
    16331634    }
     
    16961697 * - flashing
    16971698 */
    1698 static int vga_draw_text(VGAState *s, bool full_update, bool fFailOnResize, bool reset_dirty)
     1699static int vga_draw_text(VGAState *pThis, bool full_update, bool fFailOnResize, bool reset_dirty)
    16991700{
    17001701    int cx, cy, cheight, cw, ch, cattr, height, width, ch_attr;
     
    17101711    vga_draw_glyph9_func *vga_draw_glyph9;
    17111712
    1712     full_update |= update_palette16(s);
    1713     palette = s->last_palette;
     1713    full_update |= update_palette16(pThis);
     1714    palette = pThis->last_palette;
    17141715
    17151716    /* compute font data address (in plane 2) */
    1716     v = s->sr[3];
     1717    v = pThis->sr[3];
    17171718    offset = (((v >> 4) & 1) | ((v << 1) & 6)) * 8192 * 4 + 2;
    1718     if (offset != s->font_offsets[0]) {
    1719         s->font_offsets[0] = offset;
     1719    if (offset != pThis->font_offsets[0]) {
     1720        pThis->font_offsets[0] = offset;
    17201721        full_update = true;
    17211722    }
    1722     font_base[0] = s->CTX_SUFF(vram_ptr) + offset;
     1723    font_base[0] = pThis->CTX_SUFF(vram_ptr) + offset;
    17231724
    17241725    offset = (((v >> 5) & 1) | ((v >> 1) & 6)) * 8192 * 4 + 2;
    1725     font_base[1] = s->CTX_SUFF(vram_ptr) + offset;
    1726     if (offset != s->font_offsets[1]) {
    1727         s->font_offsets[1] = offset;
     1726    font_base[1] = pThis->CTX_SUFF(vram_ptr) + offset;
     1727    if (offset != pThis->font_offsets[1]) {
     1728        pThis->font_offsets[1] = offset;
    17281729        full_update = true;
    17291730    }
    1730     if (s->plane_updated & (1 << 2)) {
     1731    if (pThis->plane_updated & (1 << 2)) {
    17311732        /* if the plane 2 was modified since the last display, it
    17321733           indicates the font may have been modified */
    1733         s->plane_updated = 0;
     1734        pThis->plane_updated = 0;
    17341735        full_update = true;
    17351736    }
    1736     full_update |= update_basic_params(s);
    1737 
    1738     line_offset = s->line_offset;
    1739     s1 = s->CTX_SUFF(vram_ptr) + (s->start_addr * 8); /** @todo r=bird: Add comment why we do *8 instead of *4, it's not so obvious... */
     1737    full_update |= update_basic_params(pThis);
     1738
     1739    line_offset = pThis->line_offset;
     1740    s1 = pThis->CTX_SUFF(vram_ptr) + (pThis->start_addr * 8); /** @todo r=bird: Add comment why we do *8 instead of *4, it's not so obvious... */
    17401741
    17411742    /* double scanning - not for 9-wide modes */
    1742     dscan = (s->cr[9] >> 7) & 1;
     1743    dscan = (pThis->cr[9] >> 7) & 1;
    17431744
    17441745    /* total width & height */
    1745     cheight = (s->cr[9] & 0x1f) + 1;
     1746    cheight = (pThis->cr[9] & 0x1f) + 1;
    17461747    cw = 8;
    1747     if (!(s->sr[1] & 0x01))
     1748    if (!(pThis->sr[1] & 0x01))
    17481749        cw = 9;
    1749     if (s->sr[1] & 0x08)
     1750    if (pThis->sr[1] & 0x08)
    17501751        cw = 16; /* NOTE: no 18 pixel wide */
    1751     x_incr = cw * ((s->pDrv->cBits + 7) >> 3);
    1752     width = (s->cr[0x01] + 1);
    1753     if (s->cr[0x06] == 100) {
     1752    x_incr = cw * ((pThis->pDrv->cBits + 7) >> 3);
     1753    width = (pThis->cr[0x01] + 1);
     1754    if (pThis->cr[0x06] == 100) {
    17541755        /* ugly hack for CGA 160x100x16 - explain me the logic */
    17551756        height = 100;
    17561757    } else {
    1757         height = s->cr[0x12] |
    1758             ((s->cr[0x07] & 0x02) << 7) |
    1759             ((s->cr[0x07] & 0x40) << 3);
     1758        height = pThis->cr[0x12] |
     1759            ((pThis->cr[0x07] & 0x02) << 7) |
     1760            ((pThis->cr[0x07] & 0x40) << 3);
    17601761        height = (height + 1) / cheight;
    17611762    }
     
    17651766    }
    17661767
    1767     if (width != (int)s->last_width || height != (int)s->last_height ||
    1768         cw != s->last_cw || cheight != s->last_ch) {
     1768    if (width != (int)pThis->last_width || height != (int)pThis->last_height ||
     1769        cw != pThis->last_cw || cheight != pThis->last_ch) {
    17691770        if (fFailOnResize)
    17701771        {
     
    17721773            return VERR_TRY_AGAIN;
    17731774        }
    1774         s->last_scr_width = width * cw;
    1775         s->last_scr_height = height * cheight;
     1775        pThis->last_scr_width = width * cw;
     1776        pThis->last_scr_height = height * cheight;
    17761777        /* For text modes the direct use of guest VRAM is not implemented, so bpp and cbLine are 0 here. */
    1777         int rc = s->pDrv->pfnResize(s->pDrv, 0, NULL, 0, s->last_scr_width, s->last_scr_height);
    1778         s->last_width = width;
    1779         s->last_height = height;
    1780         s->last_ch = cheight;
    1781         s->last_cw = cw;
     1778        int rc = pThis->pDrv->pfnResize(pThis->pDrv, 0, NULL, 0, pThis->last_scr_width, pThis->last_scr_height);
     1779        pThis->last_width = width;
     1780        pThis->last_height = height;
     1781        pThis->last_ch = cheight;
     1782        pThis->last_cw = cw;
    17821783        full_update = true;
    17831784        if (rc == VINF_VGA_RESIZE_IN_PROGRESS)
     
    17851786        AssertRC(rc);
    17861787    }
    1787     cursor_offset = ((s->cr[0x0e] << 8) | s->cr[0x0f]) - s->start_addr;
    1788     if (cursor_offset != s->cursor_offset ||
    1789         s->cr[0xa] != s->cursor_start ||
    1790         s->cr[0xb] != s->cursor_end) {
     1788    cursor_offset = ((pThis->cr[0x0e] << 8) | pThis->cr[0x0f]) - pThis->start_addr;
     1789    if (cursor_offset != pThis->cursor_offset ||
     1790        pThis->cr[0xa] != pThis->cursor_start ||
     1791        pThis->cr[0xb] != pThis->cursor_end) {
    17911792      /* if the cursor position changed, we update the old and new
    17921793         chars */
    1793         if (s->cursor_offset < CH_ATTR_SIZE)
    1794             s->last_ch_attr[s->cursor_offset] = ~0;
     1794        if (pThis->cursor_offset < CH_ATTR_SIZE)
     1795            pThis->last_ch_attr[pThis->cursor_offset] = ~0;
    17951796        if (cursor_offset < CH_ATTR_SIZE)
    1796             s->last_ch_attr[cursor_offset] = ~0;
    1797         s->cursor_offset = cursor_offset;
    1798         s->cursor_start = s->cr[0xa];
    1799         s->cursor_end = s->cr[0xb];
    1800     }
    1801     cursor_ptr = s->CTX_SUFF(vram_ptr) + (s->start_addr + cursor_offset) * 8;
    1802     depth_index = get_depth_index(s->pDrv->cBits);
     1797            pThis->last_ch_attr[cursor_offset] = ~0;
     1798        pThis->cursor_offset = cursor_offset;
     1799        pThis->cursor_start = pThis->cr[0xa];
     1800        pThis->cursor_end = pThis->cr[0xb];
     1801    }
     1802    cursor_ptr = pThis->CTX_SUFF(vram_ptr) + (pThis->start_addr + cursor_offset) * 8;
     1803    depth_index = get_depth_index(pThis->pDrv->cBits);
    18031804    if (cw == 16)
    18041805        vga_draw_glyph8 = vga_draw_glyph16_table[depth_index];
     
    18071808    vga_draw_glyph9 = vga_draw_glyph9_table[depth_index];
    18081809
    1809     dest = s->pDrv->pu8Data;
    1810     linesize = s->pDrv->cbScanline;
    1811     ch_attr_ptr = s->last_ch_attr;
     1810    dest = pThis->pDrv->pu8Data;
     1811    linesize = pThis->pDrv->cbScanline;
     1812    ch_attr_ptr = pThis->last_ch_attr;
    18121813    cy_start = -1;
    18131814    cx_max_upd = -1;
     
    18441845                } else {
    18451846                    dup9 = 0;
    1846                     if (ch >= 0xb0 && ch <= 0xdf && (s->ar[0x10] & 0x04))
     1847                    if (ch >= 0xb0 && ch <= 0xdf && (pThis->ar[0x10] & 0x04))
    18471848                        dup9 = 1;
    18481849                    vga_draw_glyph9(d1, linesize,
     
    18501851                }
    18511852                if (src == cursor_ptr &&
    1852                     !(s->cr[0x0a] & 0x20)) {
     1853                    !(pThis->cr[0x0a] & 0x20)) {
    18531854                    int line_start, line_last, h;
    18541855                    /* draw the cursor */
    1855                     line_start = s->cr[0x0a] & 0x1f;
    1856                     line_last = s->cr[0x0b] & 0x1f;
     1856                    line_start = pThis->cr[0x0a] & 0x1f;
     1857                    line_last = pThis->cr[0x0b] & 0x1f;
    18571858                    /* XXX: check that */
    18581859                    if (line_last > cheight - 1)
     
    18851886        } else if (cy_start >= 0) {
    18861887            /* Flush updates to display. */
    1887             s->pDrv->pfnUpdateRect(s->pDrv, cx_min_upd * cw, cy_start * cheight,
    1888                                    (cx_max_upd - cx_min_upd + 1) * cw, (cy - cy_start) * cheight);
     1888            pThis->pDrv->pfnUpdateRect(pThis->pDrv, cx_min_upd * cw, cy_start * cheight,
     1889                                       (cx_max_upd - cx_min_upd + 1) * cw, (cy - cy_start) * cheight);
    18891890            cy_start = -1;
    18901891            cx_max_upd = -1;
     
    18961897    if (cy_start >= 0)
    18971898        /* Flush any remaining changes to display. */
    1898         s->pDrv->pfnUpdateRect(s->pDrv, cx_min_upd * cw, cy_start * cheight,
    1899                                (cx_max_upd - cx_min_upd + 1) * cw, (cy - cy_start) * cheight);
     1899        pThis->pDrv->pfnUpdateRect(pThis->pDrv, cx_min_upd * cw, cy_start * cheight,
     1900                                   (cx_max_upd - cx_min_upd + 1) * cw, (cy - cy_start) * cheight);
    19001901        return VINF_SUCCESS;
    19011902}
     
    19671968};
    19681969
    1969 static int vga_get_bpp(VGAState *s)
     1970static int vga_get_bpp(VGAState *pThis)
    19701971{
    19711972    int ret;
    19721973#ifdef CONFIG_BOCHS_VBE
    1973     if (s->vbe_regs[VBE_DISPI_INDEX_ENABLE] & VBE_DISPI_ENABLED) {
    1974         ret = s->vbe_regs[VBE_DISPI_INDEX_BPP];
     1974    if (pThis->vbe_regs[VBE_DISPI_INDEX_ENABLE] & VBE_DISPI_ENABLED) {
     1975        ret = pThis->vbe_regs[VBE_DISPI_INDEX_BPP];
    19751976    } else
    19761977#endif
     
    19811982}
    19821983
    1983 static void vga_get_resolution(VGAState *s, int *pwidth, int *pheight)
     1984static void vga_get_resolution(VGAState *pThis, int *pwidth, int *pheight)
    19841985{
    19851986    int width, height;
    19861987#ifdef CONFIG_BOCHS_VBE
    1987     if (s->vbe_regs[VBE_DISPI_INDEX_ENABLE] & VBE_DISPI_ENABLED) {
    1988         width = s->vbe_regs[VBE_DISPI_INDEX_XRES];
    1989         height = RT_MIN(s->vbe_regs[VBE_DISPI_INDEX_YRES],
    1990                         s->vbe_regs[VBE_DISPI_INDEX_VIRT_HEIGHT]);
     1988    if (pThis->vbe_regs[VBE_DISPI_INDEX_ENABLE] & VBE_DISPI_ENABLED) {
     1989        width = pThis->vbe_regs[VBE_DISPI_INDEX_XRES];
     1990        height = RT_MIN(pThis->vbe_regs[VBE_DISPI_INDEX_YRES],
     1991                        pThis->vbe_regs[VBE_DISPI_INDEX_VIRT_HEIGHT]);
    19911992    } else
    19921993#endif
    19931994    {
    1994         width = (s->cr[0x01] + 1) * 8;
    1995         height = s->cr[0x12] |
    1996             ((s->cr[0x07] & 0x02) << 7) |
    1997             ((s->cr[0x07] & 0x40) << 3);
     1995        width = (pThis->cr[0x01] + 1) * 8;
     1996        height = pThis->cr[0x12] |
     1997            ((pThis->cr[0x07] & 0x02) << 7) |
     1998            ((pThis->cr[0x07] & 0x40) << 3);
    19981999        height = (height + 1);
    19992000    }
     
    20102011 * @returns VINF_SUCCESS on success.
    20112012 * @returns VINF_VGA_RESIZE_IN_PROGRESS if the operation wasn't complete.
    2012  * @param   s       Pointer to the vga status.
     2013 * @param   pThis   Pointer to the vga state.
    20132014 * @param   cx      The width.
    20142015 * @param   cy      The height.
    20152016 */
    2016 static int vga_resize_graphic(VGAState *s, int cx, int cy)
    2017 {
    2018     const unsigned cBits = s->get_bpp(s);
     2017static int vga_resize_graphic(VGAState *pThis, int cx, int cy)
     2018{
     2019    const unsigned cBits = pThis->get_bpp(pThis);
    20192020
    20202021    int rc;
    20212022    AssertReturn(cx, VERR_INVALID_PARAMETER);
    20222023    AssertReturn(cy, VERR_INVALID_PARAMETER);
    2023     AssertPtrReturn(s, VERR_INVALID_POINTER);
    2024     AssertReturn(s->line_offset, VERR_INTERNAL_ERROR);
     2024    AssertPtrReturn(pThis, VERR_INVALID_POINTER);
     2025    AssertReturn(pThis->line_offset, VERR_INTERNAL_ERROR);
    20252026
    20262027#if 0 //def VBOX_WITH_VDMA
     
    20322033     *
    20332034     * The reason for doing this for WDDM driver only now is to avoid regressions of the current code */
    2034     PVBOXVDMAHOST pVdma = s->pVdma;
     2035    PVBOXVDMAHOST pVdma = pThis->pVdma;
    20352036    if (pVdma && vboxVDMAIsEnabled(pVdma))
    20362037        rc = VINF_SUCCESS;
     
    20392040    {
    20402041        /* Skip the resize if the values are not valid. */
    2041         if (s->start_addr * 4 + s->line_offset * cy < s->vram_size)
     2042        if (pThis->start_addr * 4 + pThis->line_offset * cy < pThis->vram_size)
    20422043            /* Take into account the programmed start address (in DWORDs) of the visible screen. */
    2043             rc = s->pDrv->pfnResize(s->pDrv, cBits, s->CTX_SUFF(vram_ptr) + s->start_addr * 4, s->line_offset, cx, cy);
     2044            rc = pThis->pDrv->pfnResize(pThis->pDrv, cBits, pThis->CTX_SUFF(vram_ptr) + pThis->start_addr * 4, pThis->line_offset, cx, cy);
    20442045        else
    20452046        {
     
    20502051
    20512052    /* last stuff */
    2052     s->last_bpp = cBits;
    2053     s->last_scr_width = cx;
    2054     s->last_scr_height = cy;
    2055     s->last_width = cx;
    2056     s->last_height = cy;
     2053    pThis->last_bpp = cBits;
     2054    pThis->last_scr_width = cx;
     2055    pThis->last_scr_height = cy;
     2056    pThis->last_width = cx;
     2057    pThis->last_height = cy;
    20572058
    20582059    if (rc == VINF_VGA_RESIZE_IN_PROGRESS)
     
    20612062
    20622063    /* update palette */
    2063     switch (s->pDrv->cBits)
    2064     {
    2065         case 32:    s->rgb_to_pixel = rgb_to_pixel32_dup; break;
     2064    switch (pThis->pDrv->cBits)
     2065    {
     2066        case 32:    pThis->rgb_to_pixel = rgb_to_pixel32_dup; break;
    20662067        case 16:
    2067         default:    s->rgb_to_pixel = rgb_to_pixel16_dup; break;
    2068         case 15:    s->rgb_to_pixel = rgb_to_pixel15_dup; break;
    2069         case 8:     s->rgb_to_pixel = rgb_to_pixel8_dup;  break;
    2070     }
    2071     if (s->shift_control == 0)
    2072         update_palette16(s);
    2073     else if (s->shift_control == 1)
    2074         update_palette16(s);
     2068        default:    pThis->rgb_to_pixel = rgb_to_pixel16_dup; break;
     2069        case 15:    pThis->rgb_to_pixel = rgb_to_pixel15_dup; break;
     2070        case 8:     pThis->rgb_to_pixel = rgb_to_pixel8_dup;  break;
     2071    }
     2072    if (pThis->shift_control == 0)
     2073        update_palette16(pThis);
     2074    else if (pThis->shift_control == 1)
     2075        update_palette16(pThis);
    20752076    return VINF_SUCCESS;
    20762077}
     
    20792080 * graphic modes
    20802081 */
    2081 static int vga_draw_graphic(VGAState *s, bool full_update, bool fFailOnResize, bool reset_dirty)
     2082static int vga_draw_graphic(VGAState *pThis, bool full_update, bool fFailOnResize, bool reset_dirty)
    20822083{
    20832084    int y1, y2, y, page_min, page_max, linesize, y_start, double_scan;
     
    20882089    vga_draw_line_func *vga_draw_line;
    20892090
    2090     bool offsets_changed = update_basic_params(s);
     2091    bool offsets_changed = update_basic_params(pThis);
    20912092
    20922093    full_update |= offsets_changed;
    20932094
    2094     s->get_resolution(s, &width, &height);
     2095    pThis->get_resolution(pThis, &width, &height);
    20952096    disp_width = width;
    20962097
    2097     shift_control = (s->gr[0x05] >> 5) & 3;
    2098     double_scan = (s->cr[0x09] >> 7);
     2098    shift_control = (pThis->gr[0x05] >> 5) & 3;
     2099    double_scan = (pThis->cr[0x09] >> 7);
    20992100    multi_run = double_scan;
    2100     if (shift_control != s->shift_control ||
    2101         double_scan != s->double_scan) {
     2101    if (shift_control != pThis->shift_control ||
     2102        double_scan != pThis->double_scan) {
    21022103        full_update = true;
    2103         s->shift_control = shift_control;
    2104         s->double_scan = double_scan;
     2104        pThis->shift_control = shift_control;
     2105        pThis->double_scan = double_scan;
    21052106    }
    21062107
    21072108    if (shift_control == 0) {
    2108         full_update |= update_palette16(s);
    2109         if (s->sr[0x01] & 8) {
     2109        full_update |= update_palette16(pThis);
     2110        if (pThis->sr[0x01] & 8) {
    21102111            v = VGA_DRAW_LINE4D2;
    21112112            disp_width <<= 1;
     
    21152116        bits = 4;
    21162117    } else if (shift_control == 1) {
    2117         full_update |= update_palette16(s);
    2118         if (s->sr[0x01] & 8) {
     2118        full_update |= update_palette16(pThis);
     2119        if (pThis->sr[0x01] & 8) {
    21192120            v = VGA_DRAW_LINE2D2;
    21202121            disp_width <<= 1;
     
    21242125        bits = 4;
    21252126    } else {
    2126         switch(s->get_bpp(s)) {
     2127        switch(pThis->get_bpp(pThis)) {
    21272128        default:
    21282129        case 0:
    2129             full_update |= update_palette256(s);
     2130            full_update |= update_palette256(pThis);
    21302131            v = VGA_DRAW_LINE8D2;
    21312132            bits = 4;
    21322133            break;
    21332134        case 8:
    2134             full_update |= update_palette256(s);
     2135            full_update |= update_palette256(pThis);
    21352136            v = VGA_DRAW_LINE8;
    21362137            bits = 8;
     
    21542155        }
    21552156    }
    2156     if (    disp_width     != (int)s->last_width
    2157         ||  height         != (int)s->last_height
    2158         ||  s->get_bpp(s)  != (int)s->last_bpp
    2159         || (offsets_changed && !s->fRenderVRAM))
     2157    if (    disp_width     != (int)pThis->last_width
     2158        ||  height         != (int)pThis->last_height
     2159        ||  pThis->get_bpp(pThis)  != (int)pThis->last_bpp
     2160        || (offsets_changed && !pThis->fRenderVRAM))
    21602161    {
    21612162        if (fFailOnResize)
     
    21642165            return VERR_TRY_AGAIN;
    21652166        }
    2166         int rc = vga_resize_graphic(s, disp_width, height);
     2167        int rc = vga_resize_graphic(pThis, disp_width, height);
    21672168        if (rc != VINF_SUCCESS)  /* Return any rc, particularly VINF_VGA_RESIZE_IN_PROGRESS, to the caller. */
    21682169            return rc;
    21692170        full_update = true;
    21702171    }
    2171     vga_draw_line = vga_draw_line_table[v * 4 + get_depth_index(s->pDrv->cBits)];
    2172 
    2173     if (s->cursor_invalidate)
    2174         s->cursor_invalidate(s);
    2175 
    2176     line_offset = s->line_offset;
     2172    vga_draw_line = vga_draw_line_table[v * 4 + get_depth_index(pThis->pDrv->cBits)];
     2173
     2174    if (pThis->cursor_invalidate)
     2175        pThis->cursor_invalidate(pThis);
     2176
     2177    line_offset = pThis->line_offset;
    21772178#if 0
    21782179    Log(("w=%d h=%d v=%d line_offset=%d cr[0x09]=0x%02x cr[0x17]=0x%02x linecmp=%d sr[0x01]=0x%02x\n",
    2179            width, height, v, line_offset, s->cr[9], s->cr[0x17], s->line_compare, s->sr[0x01]));
     2180           width, height, v, line_offset, pThis->cr[9], pThis->cr[0x17], pThis->line_compare, pThis->sr[0x01]));
    21802181#endif
    2181     addr1 = (s->start_addr * 4);
     2182    addr1 = (pThis->start_addr * 4);
    21822183    bwidth = (width * bits + 7) / 8;    /* The visible width of a scanline. */
    21832184    y_start = -1;
    21842185    page_min = 0x7fffffff;
    21852186    page_max = -1;
    2186     d = s->pDrv->pu8Data;
    2187     linesize = s->pDrv->cbScanline;
     2187    d = pThis->pDrv->pu8Data;
     2188    linesize = pThis->pDrv->cbScanline;
    21882189
    21892190    y1 = 0;
    2190     y2 = s->cr[0x09] & 0x1F;    /* starting row scan count */
     2191    y2 = pThis->cr[0x09] & 0x1F;    /* starting row scan count */
    21912192    for(y = 0; y < height; y++) {
    21922193        addr = addr1;
     
    21942195         * shifted left by two compared to VGA specs.
    21952196         */
    2196         if (!(s->cr[0x17] & 1)) {
     2197        if (!(pThis->cr[0x17] & 1)) {
    21972198            addr = (addr & ~(1 << 15)) | ((y1 & 1) << 15);
    21982199        }
    2199         if (!(s->cr[0x17] & 2)) {
     2200        if (!(pThis->cr[0x17] & 2)) {
    22002201            addr = (addr & ~(1 << 16)) | ((y1 & 2) << 15);
    22012202        }
    22022203        page0 = addr & TARGET_PAGE_MASK;
    22032204        page1 = (addr + bwidth - 1) & TARGET_PAGE_MASK;
    2204         bool update = full_update | vga_is_dirty(s, page0) | vga_is_dirty(s, page1);
     2205        bool update = full_update | vga_is_dirty(pThis, page0) | vga_is_dirty(pThis, page1);
    22052206        if (page1 - page0 > TARGET_PAGE_SIZE) {
    22062207            /* if wide line, can use another page */
    2207             update |= vga_is_dirty(s, page0 + TARGET_PAGE_SIZE);
     2208            update |= vga_is_dirty(pThis, page0 + TARGET_PAGE_SIZE);
    22082209        }
    22092210        /* explicit invalidation for the hardware cursor */
    2210         update |= (s->invalidated_y_table[y >> 5] >> (y & 0x1f)) & 1;
     2211        update |= (pThis->invalidated_y_table[y >> 5] >> (y & 0x1f)) & 1;
    22112212        if (update) {
    22122213            if (y_start < 0)
     
    22162217            if (page1 > page_max)
    22172218                page_max = page1;
    2218             if (s->fRenderVRAM)
    2219                 vga_draw_line(s, d, s->CTX_SUFF(vram_ptr) + addr, width);
    2220             if (s->cursor_draw_line)
    2221                 s->cursor_draw_line(s, d, y);
     2219            if (pThis->fRenderVRAM)
     2220                vga_draw_line(pThis, d, pThis->CTX_SUFF(vram_ptr) + addr, width);
     2221            if (pThis->cursor_draw_line)
     2222                pThis->cursor_draw_line(pThis, d, y);
    22222223        } else {
    22232224            if (y_start >= 0) {
    22242225                /* flush to display */
    2225                 s->pDrv->pfnUpdateRect(s->pDrv, 0, y_start, disp_width, y - y_start);
     2226                pThis->pDrv->pfnUpdateRect(pThis->pDrv, 0, y_start, disp_width, y - y_start);
    22262227                y_start = -1;
    22272228            }
     
    22322233
    22332234            if (y2 == 0) {
    2234                 y2 = s->cr[0x09] & 0x1F;
     2235                y2 = pThis->cr[0x09] & 0x1F;
    22352236                addr1 += line_offset;
    22362237            } else {
     
    22412242        }
    22422243        /* line compare acts on the displayed lines */
    2243         if ((uint32_t)y == s->line_compare)
     2244        if ((uint32_t)y == pThis->line_compare)
    22442245            addr1 = 0;
    22452246        d += linesize;
     
    22472248    if (y_start >= 0) {
    22482249        /* flush to display */
    2249         s->pDrv->pfnUpdateRect(s->pDrv, 0, y_start, disp_width, y - y_start);
     2250        pThis->pDrv->pfnUpdateRect(pThis->pDrv, 0, y_start, disp_width, y - y_start);
    22502251    }
    22512252    /* reset modified pages */
    22522253    if (page_max != -1 && reset_dirty) {
    2253         vga_reset_dirty(s, page_min, page_max + TARGET_PAGE_SIZE);
    2254     }
    2255     memset(s->invalidated_y_table, 0, ((height + 31) >> 5) * 4);
     2254        vga_reset_dirty(pThis, page_min, page_max + TARGET_PAGE_SIZE);
     2255    }
     2256    memset(pThis->invalidated_y_table, 0, ((height + 31) >> 5) * 4);
    22562257    return VINF_SUCCESS;
    22572258}
    22582259
    2259 static void vga_draw_blank(VGAState *s, int full_update)
     2260static void vga_draw_blank(VGAState *pThis, int full_update)
    22602261{
    22612262    int i, w, val;
    22622263    uint8_t *d;
    2263     uint32_t cbScanline = s->pDrv->cbScanline;
    2264 
    2265     if (s->pDrv->pu8Data == s->vram_ptrR3) /* Do not clear the VRAM itself. */
     2264    uint32_t cbScanline = pThis->pDrv->cbScanline;
     2265
     2266    if (pThis->pDrv->pu8Data == pThis->vram_ptrR3) /* Do not clear the VRAM itself. */
    22662267        return;
    22672268    if (!full_update)
    22682269        return;
    2269     if (s->last_scr_width <= 0 || s->last_scr_height <= 0)
     2270    if (pThis->last_scr_width <= 0 || pThis->last_scr_height <= 0)
    22702271        return;
    2271     if (s->pDrv->cBits == 8)
    2272         val = s->rgb_to_pixel(0, 0, 0);
     2272    if (pThis->pDrv->cBits == 8)
     2273        val = pThis->rgb_to_pixel(0, 0, 0);
    22732274    else
    22742275        val = 0;
    2275     w = s->last_scr_width * ((s->pDrv->cBits + 7) >> 3);
    2276     d = s->pDrv->pu8Data;
    2277     for(i = 0; i < (int)s->last_scr_height; i++) {
     2276    w = pThis->last_scr_width * ((pThis->pDrv->cBits + 7) >> 3);
     2277    d = pThis->pDrv->pu8Data;
     2278    for(i = 0; i < (int)pThis->last_scr_height; i++) {
    22782279        memset(d, val, w);
    22792280        d += cbScanline;
    22802281    }
    2281     s->pDrv->pfnUpdateRect(s->pDrv, 0, 0, s->last_scr_width, s->last_scr_height);
     2282    pThis->pDrv->pfnUpdateRect(pThis->pDrv, 0, 0, pThis->last_scr_width, pThis->last_scr_height);
    22822283}
    22832284
     
    22922293#define GMODE_BLANK 2
    22932294
    2294 static int vga_update_display(PVGASTATE s, bool fUpdateAll, bool fFailOnResize, bool reset_dirty)
     2295static int vga_update_display(PVGASTATE pThis, bool fUpdateAll, bool fFailOnResize, bool reset_dirty)
    22952296{
    22962297    int rc = VINF_SUCCESS;
    22972298    int graphic_mode;
    22982299
    2299     if (s->pDrv->cBits == 0) {
     2300    if (pThis->pDrv->cBits == 0) {
    23002301        /* nothing to do */
    23012302    } else {
    2302         switch(s->pDrv->cBits) {
     2303        switch(pThis->pDrv->cBits) {
    23032304        case 8:
    2304             s->rgb_to_pixel = rgb_to_pixel8_dup;
     2305            pThis->rgb_to_pixel = rgb_to_pixel8_dup;
    23052306            break;
    23062307        case 15:
    2307             s->rgb_to_pixel = rgb_to_pixel15_dup;
     2308            pThis->rgb_to_pixel = rgb_to_pixel15_dup;
    23082309            break;
    23092310        default:
    23102311        case 16:
    2311             s->rgb_to_pixel = rgb_to_pixel16_dup;
     2312            pThis->rgb_to_pixel = rgb_to_pixel16_dup;
    23122313            break;
    23132314        case 32:
    2314             s->rgb_to_pixel = rgb_to_pixel32_dup;
     2315            pThis->rgb_to_pixel = rgb_to_pixel32_dup;
    23152316            break;
    23162317        }
     
    23312332            /* Detect the "screen blank" conditions. */
    23322333            int fBlank = 0;
    2333             if (!(s->ar_index & 0x20) || (s->sr[0x01] & 0x20)) {
     2334            if (!(pThis->ar_index & 0x20) || (pThis->sr[0x01] & 0x20)) {
    23342335                fBlank = 1;
    23352336            }
     
    23372338            if (fBlank) {
    23382339                /* Provide a void pfnUpdateRect callback. */
    2339                 if (s->pDrv) {
    2340                     pfnUpdateRect = s->pDrv->pfnUpdateRect;
    2341                     s->pDrv->pfnUpdateRect = voidUpdateRect;
     2340                if (pThis->pDrv) {
     2341                    pfnUpdateRect = pThis->pDrv->pfnUpdateRect;
     2342                    pThis->pDrv->pfnUpdateRect = voidUpdateRect;
    23422343                }
    23432344            }
    23442345
    23452346            /* Do a complete redraw, which will pick up a new screen resolution. */
    2346             if (s->gr[6] & 1) {
    2347                 s->graphic_mode = GMODE_GRAPH;
    2348                 rc = vga_draw_graphic(s, 1, false, reset_dirty);
     2347            if (pThis->gr[6] & 1) {
     2348                pThis->graphic_mode = GMODE_GRAPH;
     2349                rc = vga_draw_graphic(pThis, 1, false, reset_dirty);
    23492350            } else {
    2350                 s->graphic_mode = GMODE_TEXT;
    2351                 rc = vga_draw_text(s, 1, false, reset_dirty);
     2351                pThis->graphic_mode = GMODE_TEXT;
     2352                rc = vga_draw_text(pThis, 1, false, reset_dirty);
    23522353            }
    23532354
    23542355            if (fBlank) {
    23552356                /* Set the current mode and restore the callback. */
    2356                 s->graphic_mode = GMODE_BLANK;
    2357                 if (s->pDrv) {
    2358                     s->pDrv->pfnUpdateRect = pfnUpdateRect;
     2357                pThis->graphic_mode = GMODE_BLANK;
     2358                if (pThis->pDrv) {
     2359                    pThis->pDrv->pfnUpdateRect = pfnUpdateRect;
    23592360                }
    23602361            }
     
    23622363        }
    23632364
    2364         if (!(s->ar_index & 0x20) || (s->sr[0x01] & 0x20)) {
     2365        if (!(pThis->ar_index & 0x20) || (pThis->sr[0x01] & 0x20)) {
    23652366            graphic_mode = GMODE_BLANK;
    23662367        } else {
    2367             graphic_mode = s->gr[6] & 1;
    2368         }
    2369         bool full_update = graphic_mode != s->graphic_mode;
     2368            graphic_mode = pThis->gr[6] & 1;
     2369        }
     2370        bool full_update = graphic_mode != pThis->graphic_mode;
    23702371        if (full_update) {
    2371             s->graphic_mode = graphic_mode;
     2372            pThis->graphic_mode = graphic_mode;
    23722373        }
    23732374        switch(graphic_mode) {
    23742375        case GMODE_TEXT:
    2375             rc = vga_draw_text(s, full_update, fFailOnResize, reset_dirty);
     2376            rc = vga_draw_text(pThis, full_update, fFailOnResize, reset_dirty);
    23762377            break;
    23772378        case GMODE_GRAPH:
    2378             rc = vga_draw_graphic(s, full_update, fFailOnResize, reset_dirty);
     2379            rc = vga_draw_graphic(pThis, full_update, fFailOnResize, reset_dirty);
    23792380            break;
    23802381        case GMODE_BLANK:
    23812382        default:
    2382             vga_draw_blank(s, full_update);
     2383            vga_draw_blank(pThis, full_update);
    23832384            break;
    23842385        }
     
    23892390static void vga_save(QEMUFile *f, void *opaque)
    23902391{
    2391     VGAState *s = (VGAState*)opaque;
     2392    VGAState *pThis = (VGAState*)opaque;
    23922393    int i;
    23932394
    2394     qemu_put_be32s(f, &s->latch);
    2395     qemu_put_8s(f, &s->sr_index);
    2396     qemu_put_buffer(f, s->sr, 8);
    2397     qemu_put_8s(f, &s->gr_index);
    2398     qemu_put_buffer(f, s->gr, 16);
    2399     qemu_put_8s(f, &s->ar_index);
    2400     qemu_put_buffer(f, s->ar, 21);
    2401     qemu_put_be32s(f, &s->ar_flip_flop);
    2402     qemu_put_8s(f, &s->cr_index);
    2403     qemu_put_buffer(f, s->cr, 256);
    2404     qemu_put_8s(f, &s->msr);
    2405     qemu_put_8s(f, &s->fcr);
    2406     qemu_put_8s(f, &s->st00);
    2407     qemu_put_8s(f, &s->st01);
    2408 
    2409     qemu_put_8s(f, &s->dac_state);
    2410     qemu_put_8s(f, &s->dac_sub_index);
    2411     qemu_put_8s(f, &s->dac_read_index);
    2412     qemu_put_8s(f, &s->dac_write_index);
    2413     qemu_put_buffer(f, s->dac_cache, 3);
    2414     qemu_put_buffer(f, s->palette, 768);
    2415 
    2416     qemu_put_be32s(f, &s->bank_offset);
     2395    qemu_put_be32s(f, &pThis->latch);
     2396    qemu_put_8s(f, &pThis->sr_index);
     2397    qemu_put_buffer(f, pThis->sr, 8);
     2398    qemu_put_8s(f, &pThis->gr_index);
     2399    qemu_put_buffer(f, pThis->gr, 16);
     2400    qemu_put_8s(f, &pThis->ar_index);
     2401    qemu_put_buffer(f, pThis->ar, 21);
     2402    qemu_put_be32s(f, &pThis->ar_flip_flop);
     2403    qemu_put_8s(f, &pThis->cr_index);
     2404    qemu_put_buffer(f, pThis->cr, 256);
     2405    qemu_put_8s(f, &pThis->msr);
     2406    qemu_put_8s(f, &pThis->fcr);
     2407    qemu_put_8s(f, &pThis->st00);
     2408    qemu_put_8s(f, &pThis->st01);
     2409
     2410    qemu_put_8s(f, &pThis->dac_state);
     2411    qemu_put_8s(f, &pThis->dac_sub_index);
     2412    qemu_put_8s(f, &pThis->dac_read_index);
     2413    qemu_put_8s(f, &pThis->dac_write_index);
     2414    qemu_put_buffer(f, pThis->dac_cache, 3);
     2415    qemu_put_buffer(f, pThis->palette, 768);
     2416
     2417    qemu_put_be32s(f, &pThis->bank_offset);
    24172418#ifdef CONFIG_BOCHS_VBE
    24182419    qemu_put_byte(f, 1);
    2419     qemu_put_be16s(f, &s->vbe_index);
     2420    qemu_put_be16s(f, &pThis->vbe_index);
    24202421    for(i = 0; i < VBE_DISPI_INDEX_NB_SAVED; i++)
    2421         qemu_put_be16s(f, &s->vbe_regs[i]);
    2422     qemu_put_be32s(f, &s->vbe_start_addr);
    2423     qemu_put_be32s(f, &s->vbe_line_offset);
     2422        qemu_put_be16s(f, &pThis->vbe_regs[i]);
     2423    qemu_put_be32s(f, &pThis->vbe_start_addr);
     2424    qemu_put_be32s(f, &pThis->vbe_line_offset);
    24242425#else
    24252426    qemu_put_byte(f, 0);
     
    24292430static int vga_load(QEMUFile *f, void *opaque, int version_id)
    24302431{
    2431     VGAState *s = (VGAState*)opaque;
     2432    VGAState *pThis = (VGAState*)opaque;
    24322433    int is_vbe, i;
    24332434    uint32_t u32Dummy;
    24342435
    2435     qemu_get_be32s(f, &s->latch);
    2436     qemu_get_8s(f, &s->sr_index);
    2437     qemu_get_buffer(f, s->sr, 8);
    2438     qemu_get_8s(f, &s->gr_index);
    2439     qemu_get_buffer(f, s->gr, 16);
    2440     qemu_get_8s(f, &s->ar_index);
    2441     qemu_get_buffer(f, s->ar, 21);
    2442     qemu_get_be32s(f, (uint32_t *)&s->ar_flip_flop);
    2443     qemu_get_8s(f, &s->cr_index);
    2444     qemu_get_buffer(f, s->cr, 256);
    2445     qemu_get_8s(f, &s->msr);
    2446     qemu_get_8s(f, &s->fcr);
    2447     qemu_get_8s(f, &s->st00);
    2448     qemu_get_8s(f, &s->st01);
    2449 
    2450     qemu_get_8s(f, &s->dac_state);
    2451     qemu_get_8s(f, &s->dac_sub_index);
    2452     qemu_get_8s(f, &s->dac_read_index);
    2453     qemu_get_8s(f, &s->dac_write_index);
    2454     qemu_get_buffer(f, s->dac_cache, 3);
    2455     qemu_get_buffer(f, s->palette, 768);
    2456 
    2457     qemu_get_be32s(f, (uint32_t *)&s->bank_offset);
     2436    qemu_get_be32s(f, &pThis->latch);
     2437    qemu_get_8s(f, &pThis->sr_index);
     2438    qemu_get_buffer(f, pThis->sr, 8);
     2439    qemu_get_8s(f, &pThis->gr_index);
     2440    qemu_get_buffer(f, pThis->gr, 16);
     2441    qemu_get_8s(f, &pThis->ar_index);
     2442    qemu_get_buffer(f, pThis->ar, 21);
     2443    qemu_get_be32s(f, (uint32_t *)&pThis->ar_flip_flop);
     2444    qemu_get_8s(f, &pThis->cr_index);
     2445    qemu_get_buffer(f, pThis->cr, 256);
     2446    qemu_get_8s(f, &pThis->msr);
     2447    qemu_get_8s(f, &pThis->fcr);
     2448    qemu_get_8s(f, &pThis->st00);
     2449    qemu_get_8s(f, &pThis->st01);
     2450
     2451    qemu_get_8s(f, &pThis->dac_state);
     2452    qemu_get_8s(f, &pThis->dac_sub_index);
     2453    qemu_get_8s(f, &pThis->dac_read_index);
     2454    qemu_get_8s(f, &pThis->dac_write_index);
     2455    qemu_get_buffer(f, pThis->dac_cache, 3);
     2456    qemu_get_buffer(f, pThis->palette, 768);
     2457
     2458    qemu_get_be32s(f, (uint32_t *)&pThis->bank_offset);
    24582459    is_vbe = qemu_get_byte(f);
    24592460#ifdef CONFIG_BOCHS_VBE
     
    24632464        return VERR_SSM_DATA_UNIT_FORMAT_CHANGED;
    24642465    }
    2465     qemu_get_be16s(f, &s->vbe_index);
     2466    qemu_get_be16s(f, &pThis->vbe_index);
    24662467    for(i = 0; i < VBE_DISPI_INDEX_NB_SAVED; i++)
    2467         qemu_get_be16s(f, &s->vbe_regs[i]);
     2468        qemu_get_be16s(f, &pThis->vbe_regs[i]);
    24682469    if (version_id <= VGA_SAVEDSTATE_VERSION_INV_VHEIGHT)
    2469         recalculate_data(s, false); /* <- re-calculate the s->vbe_regs[VBE_DISPI_INDEX_VIRT_HEIGHT] since it might be invalid */
    2470     qemu_get_be32s(f, &s->vbe_start_addr);
    2471     qemu_get_be32s(f, &s->vbe_line_offset);
     2470        recalculate_data(pThis, false); /* <- re-calculate the pThis->vbe_regs[VBE_DISPI_INDEX_VIRT_HEIGHT] since it might be invalid */
     2471    qemu_get_be32s(f, &pThis->vbe_start_addr);
     2472    qemu_get_be32s(f, &pThis->vbe_line_offset);
    24722473    if (version_id < 2)
    24732474        qemu_get_be32s(f, &u32Dummy);
    2474     s->vbe_bank_max = (s->vram_size >> 16) - 1;
     2475    pThis->vbe_bank_max = (pThis->vram_size >> 16) - 1;
    24752476#else
    24762477    if (is_vbe)
     
    24822483
    24832484    /* force refresh */
    2484     s->graphic_mode = -1;
     2485    pThis->graphic_mode = -1;
    24852486    return 0;
    24862487}
     
    25342535PDMBOTHCBDECL(int) vgaIOPortWrite(PPDMDEVINS pDevIns, void *pvUser, RTIOPORT Port, uint32_t u32, unsigned cb)
    25352536{
    2536     VGAState *s = PDMINS_2_DATA(pDevIns, PVGASTATE);
    2537 
    2538     int rc = PDMCritSectEnter(&s->lock, VINF_IOM_R3_IOPORT_WRITE);
    2539     if (rc != VINF_SUCCESS)
    2540         return rc;
     2537    PVGASTATE pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
     2538    Assert(PDMCritSectIsOwner(pDevIns->CTX_SUFF(pCritSectRo)));
    25412539
    25422540    NOREF(pvUser);
    25432541    if (cb == 1)
    2544         vga_ioport_write(s, Port, u32);
     2542        vga_ioport_write(pThis, Port, u32);
    25452543    else if (cb == 2)
    25462544    {
    2547         vga_ioport_write(s, Port, u32 & 0xff);
    2548         vga_ioport_write(s, Port + 1, u32 >> 8);
    2549     }
    2550     PDMCritSectLeave(&s->lock);
     2545        vga_ioport_write(pThis, Port, u32 & 0xff);
     2546        vga_ioport_write(pThis, Port + 1, u32 >> 8);
     2547    }
    25512548    return VINF_SUCCESS;
    25522549}
     
    25662563PDMBOTHCBDECL(int) vgaIOPortRead(PPDMDEVINS pDevIns, void *pvUser, RTIOPORT Port, uint32_t *pu32, unsigned cb)
    25672564{
    2568     VGAState *s = PDMINS_2_DATA(pDevIns, PVGASTATE);
     2565    PVGASTATE pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
     2566    Assert(PDMCritSectIsOwner(pDevIns->CTX_SUFF(pCritSectRo)));
    25692567    NOREF(pvUser);
    25702568
    2571     int rc = PDMCritSectEnter(&s->lock, VINF_IOM_R3_IOPORT_READ);
    2572     if (rc != VINF_SUCCESS)
    2573         return rc;
    2574 
    2575     rc = VERR_IOM_IOPORT_UNUSED;
     2569    int rc = VINF_SUCCESS;
    25762570    if (cb == 1)
    2577     {
    2578         *pu32 = vga_ioport_read(s, Port);
    2579         rc = VINF_SUCCESS;
    2580     }
     2571        *pu32 = vga_ioport_read(pThis, Port);
    25812572    else if (cb == 2)
    2582     {
    2583         *pu32 = vga_ioport_read(s, Port)
    2584              | (vga_ioport_read(s, Port + 1) << 8);
    2585         rc = VINF_SUCCESS;
    2586     }
    2587     PDMCritSectLeave(&s->lock);
     2573        *pu32 = vga_ioport_read(pThis, Port)
     2574             | (vga_ioport_read(pThis, Port + 1) << 8);
     2575    else
     2576        rc = VERR_IOM_IOPORT_UNUSED;
    25882577    return rc;
    25892578}
     
    26032592PDMBOTHCBDECL(int) vgaIOPortWriteVBEData(PPDMDEVINS pDevIns, void *pvUser, RTIOPORT Port, uint32_t u32, unsigned cb)
    26042593{
    2605     VGAState *s = PDMINS_2_DATA(pDevIns, PVGASTATE);
    2606 
    2607     int rc = PDMCritSectEnter(&s->lock, VINF_IOM_R3_IOPORT_WRITE);
    2608     if (rc != VINF_SUCCESS)
    2609         return rc;
     2594    PVGASTATE pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
     2595    Assert(PDMCritSectIsOwner(pDevIns->CTX_SUFF(pCritSectRo)));
    26102596
    26112597    NOREF(pvUser);
     
    26152601     * This has to be done on the host in order to execute the connector callbacks.
    26162602     */
    2617     if (    s->vbe_index == VBE_DISPI_INDEX_ENABLE
    2618         ||  s->vbe_index == VBE_DISPI_INDEX_VBOX_VIDEO)
     2603    if (    pThis->vbe_index == VBE_DISPI_INDEX_ENABLE
     2604        ||  pThis->vbe_index == VBE_DISPI_INDEX_VBOX_VIDEO)
    26192605    {
    26202606        Log(("vgaIOPortWriteVBEData: VBE_DISPI_INDEX_ENABLE - Switching to host...\n"));
    2621         PDMCritSectLeave(&s->lock);
    26222607        return VINF_IOM_R3_IOPORT_WRITE;
    26232608    }
     
    26262611    if (cb == 1)
    26272612    {
    2628         if (!s->fWriteVBEData)
     2613        if (!pThis->fWriteVBEData)
    26292614        {
    2630             if (    (s->vbe_index == VBE_DISPI_INDEX_ENABLE)
     2615            if (    (pThis->vbe_index == VBE_DISPI_INDEX_ENABLE)
    26312616                &&  (u32 & VBE_DISPI_ENABLED))
    26322617            {
    2633                 s->fWriteVBEData = false;
    2634                 rc = vbe_ioport_write_data(s, Port, u32 & 0xFF);
    2635                 PDMCritSectLeave(&s->lock);
    2636                 return rc;
     2618                pThis->fWriteVBEData = false;
     2619                return vbe_ioport_write_data(pThis, Port, u32 & 0xFF);
    26372620            }
    2638             else
    2639             {
    2640                 s->cbWriteVBEData = u32 & 0xFF;
    2641                 s->fWriteVBEData = true;
    2642                 PDMCritSectLeave(&s->lock);
    2643                 return VINF_SUCCESS;
    2644             }
    2645         }
    2646         else
    2647         {
    2648             u32 = (s->cbWriteVBEData << 8) | (u32 & 0xFF);
    2649             s->fWriteVBEData = false;
    2650             cb = 2;
    2651         }
     2621
     2622            pThis->cbWriteVBEData = u32 & 0xFF;
     2623            pThis->fWriteVBEData = true;
     2624            return VINF_SUCCESS;
     2625        }
     2626
     2627        u32 = (pThis->cbWriteVBEData << 8) | (u32 & 0xFF);
     2628        pThis->fWriteVBEData = false;
     2629        cb = 2;
    26522630    }
    26532631#endif
     
    26602638//         * has to be done on the host.
    26612639//         */
    2662 //        if (    (s->vbe_index == VBE_DISPI_INDEX_ENABLE)
     2640//        if (    (pThis->vbe_index == VBE_DISPI_INDEX_ENABLE)
    26632641//            &&  (u32 & VBE_DISPI_ENABLED))
    26642642//        {
     
    26672645//        }
    26682646//#endif
    2669         rc = vbe_ioport_write_data(s, Port, u32);
    2670         PDMCritSectLeave(&s->lock);
    2671         return rc;
    2672     }
    2673     else
    2674         AssertMsgFailed(("vgaIOPortWriteVBEData: Port=%#x cb=%d u32=%#x\n", Port, cb, u32));
    2675 
    2676     PDMCritSectLeave(&s->lock);
     2647        return vbe_ioport_write_data(pThis, Port, u32);
     2648    }
     2649    AssertMsgFailed(("vgaIOPortWriteVBEData: Port=%#x cb=%d u32=%#x\n", Port, cb, u32));
     2650
    26772651    return VINF_SUCCESS;
    26782652}
     
    26922666PDMBOTHCBDECL(int) vgaIOPortWriteVBEIndex(PPDMDEVINS pDevIns, void *pvUser, RTIOPORT Port, uint32_t u32, unsigned cb)
    26932667{
    2694     NOREF(pvUser);
    2695     VGAState *s = PDMINS_2_DATA(pDevIns, PVGASTATE);
    2696 
    2697     int rc = PDMCritSectEnter(&s->lock, VINF_IOM_R3_IOPORT_WRITE);
    2698     if (rc != VINF_SUCCESS)
    2699         return rc;
     2668    PVGASTATE pThis = PDMINS_2_DATA(pDevIns, PVGASTATE); NOREF(pvUser);
     2669    Assert(PDMCritSectIsOwner(pDevIns->CTX_SUFF(pCritSectRo)));
    27002670
    27012671#ifdef VBE_BYTEWISE_IO
    27022672    if (cb == 1)
    27032673    {
    2704         if (!s->fWriteVBEIndex)
     2674        if (!pThis->fWriteVBEIndex)
    27052675        {
    2706             s->cbWriteVBEIndex = u32 & 0x00FF;
    2707             s->fWriteVBEIndex = true;
    2708             PDMCritSectLeave(&s->lock);
     2676            pThis->cbWriteVBEIndex = u32 & 0x00FF;
     2677            pThis->fWriteVBEIndex = true;
    27092678            return VINF_SUCCESS;
    27102679        }
    2711         else
    2712         {
    2713             s->fWriteVBEIndex = false;
    2714             vbe_ioport_write_index(s, Port, (s->cbWriteVBEIndex << 8) | (u32 & 0x00FF));
    2715             PDMCritSectLeave(&s->lock);
    2716             return VINF_SUCCESS;
    2717         }
    2718     }
    2719     else
     2680        pThis->fWriteVBEIndex = false;
     2681        vbe_ioport_write_index(pThis, Port, (pThis->cbWriteVBEIndex << 8) | (u32 & 0x00FF));
     2682        return VINF_SUCCESS;
     2683    }
    27202684#endif
     2685
    27212686    if (cb == 2)
    2722         vbe_ioport_write_index(s, Port, u32);
     2687        vbe_ioport_write_index(pThis, Port, u32);
    27232688    else
    27242689        AssertMsgFailed(("vgaIOPortWriteVBEIndex: Port=%#x cb=%d u32=%#x\n", Port, cb, u32));
    2725     PDMCritSectLeave(&s->lock);
    27262690    return VINF_SUCCESS;
    27272691}
     
    27412705PDMBOTHCBDECL(int) vgaIOPortReadVBEData(PPDMDEVINS pDevIns, void *pvUser, RTIOPORT Port, uint32_t *pu32, unsigned cb)
    27422706{
    2743     NOREF(pvUser);
    2744     VGAState *s = PDMINS_2_DATA(pDevIns, PVGASTATE);
    2745 
    2746     int rc = PDMCritSectEnter(&s->lock, VINF_IOM_R3_IOPORT_READ);
    2747     if (rc != VINF_SUCCESS)
    2748         return rc;
     2707    PVGASTATE pThis = PDMINS_2_DATA(pDevIns, PVGASTATE); NOREF(pvUser);
     2708    Assert(PDMCritSectIsOwner(pDevIns->CTX_SUFF(pCritSectRo)));
     2709
    27492710
    27502711#ifdef VBE_BYTEWISE_IO
    27512712    if (cb == 1)
    27522713    {
    2753         if (!s->fReadVBEData)
     2714        if (!pThis->fReadVBEData)
    27542715        {
    2755             *pu32 = (vbe_ioport_read_data(s, Port) >> 8) & 0xFF;
    2756             s->fReadVBEData = true;
    2757             PDMCritSectLeave(&s->lock);
     2716            *pu32 = (vbe_ioport_read_data(pThis, Port) >> 8) & 0xFF;
     2717            pThis->fReadVBEData = true;
    27582718            return VINF_SUCCESS;
    27592719        }
    2760         else
    2761         {
    2762             *pu32 = vbe_ioport_read_data(s, Port) & 0xFF;
    2763             s->fReadVBEData = false;
    2764             PDMCritSectLeave(&s->lock);
    2765             return VINF_SUCCESS;
    2766         }
    2767     }
    2768     else
     2720        *pu32 = vbe_ioport_read_data(pThis, Port) & 0xFF;
     2721        pThis->fReadVBEData = false;
     2722        return VINF_SUCCESS;
     2723    }
    27692724#endif
    27702725    if (cb == 2)
    27712726    {
    2772         *pu32 = vbe_ioport_read_data(s, Port);
    2773         PDMCritSectLeave(&s->lock);
     2727        *pu32 = vbe_ioport_read_data(pThis, Port);
    27742728        return VINF_SUCCESS;
    27752729    }
    2776     else if (cb == 4)
     2730    if (cb == 4)
    27772731    {
    27782732        /* Quick hack for getting the vram size. */
    2779         *pu32 = s->vram_size;
    2780         PDMCritSectLeave(&s->lock);
     2733        *pu32 = pThis->vram_size;
    27812734        return VINF_SUCCESS;
    27822735    }
    27832736    AssertMsgFailed(("vgaIOPortReadVBEData: Port=%#x cb=%d\n", Port, cb));
    2784     PDMCritSectLeave(&s->lock);
    27852737    return VERR_IOM_IOPORT_UNUSED;
    27862738}
     
    28012753{
    28022754    NOREF(pvUser);
    2803     VGAState *s = PDMINS_2_DATA(pDevIns, PVGASTATE);
    2804 
    2805     int rc = PDMCritSectEnter(&s->lock, VINF_IOM_R3_IOPORT_READ);
    2806     if (rc != VINF_SUCCESS)
    2807         return rc;
     2755    VGAState *pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
     2756    Assert(PDMCritSectIsOwner(pDevIns->CTX_SUFF(pCritSectRo)));
    28082757
    28092758#ifdef VBE_BYTEWISE_IO
    28102759    if (cb == 1)
    28112760    {
    2812         if (!s->fReadVBEIndex)
     2761        if (!pThis->fReadVBEIndex)
    28132762        {
    2814             *pu32 = (vbe_ioport_read_index(s, Port) >> 8) & 0xFF;
    2815             s->fReadVBEIndex = true;
    2816             PDMCritSectLeave(&s->lock);
     2763            *pu32 = (vbe_ioport_read_index(pThis, Port) >> 8) & 0xFF;
     2764            pThis->fReadVBEIndex = true;
    28172765            return VINF_SUCCESS;
    28182766        }
    2819         else
    2820         {
    2821             *pu32 = vbe_ioport_read_index(s, Port) & 0xFF;
    2822             s->fReadVBEIndex = false;
    2823             PDMCritSectLeave(&s->lock);
    2824             return VINF_SUCCESS;
    2825         }
    2826     }
    2827     else
     2767        *pu32 = vbe_ioport_read_index(pThis, Port) & 0xFF;
     2768        pThis->fReadVBEIndex = false;
     2769        return VINF_SUCCESS;
     2770    }
    28282771#endif
    28292772    if (cb == 2)
    28302773    {
    2831         *pu32 = vbe_ioport_read_index(s, Port);
    2832         PDMCritSectLeave(&s->lock);
     2774        *pu32 = vbe_ioport_read_index(pThis, Port);
    28332775        return VINF_SUCCESS;
    28342776    }
    2835     PDMCritSectLeave(&s->lock);
    28362777    AssertMsgFailed(("vgaIOPortReadVBEIndex: Port=%#x cb=%d\n", Port, cb));
    28372778    return VERR_IOM_IOPORT_UNUSED;
     
    28532794static DECLCALLBACK(int) vgaR3IOPortHGSMIWrite(PPDMDEVINS pDevIns, void *pvUser, RTIOPORT Port, uint32_t u32, unsigned cb)
    28542795{
     2796    VGAState *pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
     2797    Assert(PDMCritSectIsOwner(pDevIns->CTX_SUFF(pCritSectRo)));
    28552798    LogFlowFunc(("Port 0x%x, u32 0x%x, cb %d\n", Port, u32, cb));
    2856     VGAState *s = PDMINS_2_DATA(pDevIns, PVGASTATE);
    2857 
    2858     int rc = PDMCritSectEnter(&s->lock, VERR_SEM_BUSY);
    2859     if (rc != VINF_SUCCESS)
    2860         return rc;
     2799
    28612800
    28622801    NOREF(pvUser);
     
    28692808            {
    28702809#if defined(VBOX_WITH_VIDEOHWACCEL) || defined(VBOX_WITH_VDMA) || defined(VBOX_WITH_WDDM)
    2871                 if(u32 == HGSMIOFFSET_VOID)
     2810                if (u32 == HGSMIOFFSET_VOID)
    28722811                {
    28732812                    PDMDevHlpPCISetIrq(pDevIns, 0, PDM_IRQ_LEVEL_LOW);
    2874                     HGSMIClearHostGuestFlags(s->pHGSMI, HGSMIHOSTFLAGS_IRQ
     2813                    HGSMIClearHostGuestFlags(pThis->pHGSMI, HGSMIHOSTFLAGS_IRQ
    28752814#ifdef VBOX_VDMA_WITH_WATCHDOG
    28762815                            | HGSMIHOSTFLAGS_WATCHDOG
     
    28822821#endif
    28832822                {
    2884                     HGSMIHostWrite(s->pHGSMI, u32);
     2823                    HGSMIHostWrite(pThis->pHGSMI, u32);
    28852824                }
    2886             } break;
     2825                break;
     2826            }
    28872827
    28882828            case VGA_PORT_HGSMI_GUEST: /* Guest */
    2889             {
    2890                 HGSMIGuestWrite(s->pHGSMI, u32);
    2891             } break;
     2829                HGSMIGuestWrite(pThis->pHGSMI, u32);
     2830                break;
    28922831
    28932832            default:
    2894             {
    28952833#ifdef DEBUG_sunlover
    28962834                AssertMsgFailed(("vgaR3IOPortHGSMIWrite: Port=%#x cb=%d u32=%#x\n", Port, cb, u32));
    28972835#endif
    2898             } break;
     2836                break;
    28992837        }
    29002838    }
     
    29062844    }
    29072845
    2908     PDMCritSectLeave(&s->lock);
    29092846    return VINF_SUCCESS;
    29102847}
     
    29232860static DECLCALLBACK(int) vgaR3IOPortHGSMIRead(PPDMDEVINS pDevIns, void *pvUser, RTIOPORT Port, uint32_t *pu32, unsigned cb)
    29242861{
     2862    VGAState *pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
     2863    Assert(PDMCritSectIsOwner(pDevIns->CTX_SUFF(pCritSectRo)));
    29252864    LogFlowFunc(("Port 0x%x, cb %d\n", Port, cb));
    2926     VGAState *s = PDMINS_2_DATA(pDevIns, PVGASTATE);
    2927 
    2928     int rc = PDMCritSectEnter(&s->lock, VERR_SEM_BUSY);
    2929     if (rc != VINF_SUCCESS)
    2930         return rc;
    29312865
    29322866    NOREF(pvUser);
    29332867
     2868    int rc = VINF_SUCCESS;
    29342869    if (cb == 4)
    29352870    {
     
    29372872        {
    29382873            case VGA_PORT_HGSMI_HOST: /* Host */
    2939             {
    2940                 *pu32 = HGSMIHostRead(s->pHGSMI);
    2941             } break;
     2874                *pu32 = HGSMIHostRead(pThis->pHGSMI);
     2875                break;
    29422876            case VGA_PORT_HGSMI_GUEST: /* Guest */
    2943             {
    2944                 *pu32 = HGSMIGuestRead(s->pHGSMI);
    2945             } break;
     2877                *pu32 = HGSMIGuestRead(pThis->pHGSMI);
     2878                break;
    29462879            default:
    2947             {
    29482880#ifdef DEBUG_sunlover
    29492881                AssertMsgFailed(("vgaR3IOPortHGSMIRead: Port=%#x cb=%d\n", Port, cb));
    29502882#endif
    29512883                rc = VERR_IOM_IOPORT_UNUSED;
    2952             } break;
     2884                break;
    29532885        }
    29542886    }
     
    29612893    }
    29622894
    2963     PDMCritSectLeave(&s->lock);
    29642895    return rc;
    29652896}
     
    29762907 * Macro for apply logical operation and bit mask.
    29772908 */
    2978 #define APPLY_LOGICAL_AND_MASK(s, val, bit_mask) \
     2909#define APPLY_LOGICAL_AND_MASK(pThis, val, bit_mask) \
    29792910    /* apply logical operation */                \
    2980     switch(s->gr[3] >> 3)                        \
     2911    switch(pThis->gr[3] >> 3)                        \
    29812912    {                                            \
    29822913        case 0:                                  \
     
    29862917        case 1:                                  \
    29872918            /* and */                            \
    2988             val &= s->latch;                     \
     2919            val &= pThis->latch;                     \
    29892920            break;                               \
    29902921        case 2:                                  \
    29912922            /* or */                             \
    2992             val |= s->latch;                     \
     2923            val |= pThis->latch;                     \
    29932924            break;                               \
    29942925        case 3:                                  \
    29952926            /* xor */                            \
    2996             val ^= s->latch;                     \
     2927            val ^= pThis->latch;                     \
    29972928            break;                               \
    29982929    }                                            \
    29992930    /* apply bit mask */                         \
    3000     val = (val & bit_mask) | (s->latch & ~bit_mask)
     2931    val = (val & bit_mask) | (pThis->latch & ~bit_mask)
    30012932
    30022933/**
     
    31953126{
    31963127    PVGASTATE pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
    3197 
    3198     int rc = PDMCritSectEnter(&pThis->lock, VINF_IOM_R3_MMIO_WRITE);
    3199     if (rc != VINF_SUCCESS)
    3200         return rc;
    3201 
    3202     rc = vgaInternalMMIOFill(pThis, pvUser, GCPhysAddr, u32Item, cbItem, cItems);
    3203     PDMCritSectLeave(&pThis->lock);
    3204     return rc;
     3128    Assert(PDMCritSectIsOwner(pDevIns->CTX_SUFF(pCritSectRo)));
     3129
     3130    return vgaInternalMMIOFill(pThis, pvUser, GCPhysAddr, u32Item, cbItem, cItems);
    32053131}
    32063132#undef APPLY_LOGICAL_AND_MASK
     
    32213147    PVGASTATE pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
    32223148    STAM_PROFILE_START(&pThis->CTX_MID_Z(Stat,MemoryRead), a);
     3149    Assert(PDMCritSectIsOwner(pDevIns->CTX_SUFF(pCritSectRo)));
    32233150    NOREF(pvUser);
    32243151
    3225     int rc = PDMCritSectEnter(&pThis->lock, VINF_IOM_R3_MMIO_READ);
    3226     if (rc != VINF_SUCCESS)
    3227         return rc;
    3228 
     3152    int rc = VINF_SUCCESS;
    32293153    switch (cb)
    32303154    {
    32313155        case 1:
    3232             *(uint8_t  *)pv = vga_mem_readb(pThis, GCPhysAddr, &rc); break;
     3156            *(uint8_t  *)pv = vga_mem_readb(pThis, GCPhysAddr, &rc);
     3157            break;
    32333158        case 2:
    32343159            *(uint16_t *)pv = vga_mem_readb(pThis, GCPhysAddr, &rc)
     
    32643189        }
    32653190    }
     3191
    32663192    STAM_PROFILE_STOP(&pThis->CTX_MID_Z(Stat,MemoryRead), a);
    3267     PDMCritSectLeave(&pThis->lock);
    32683193    return rc;
    32693194}
     
    32853210    NOREF(pvUser);
    32863211    STAM_PROFILE_START(&pThis->CTX_MID_Z(Stat,MemoryWrite), a);
    3287 
    3288     int rc = PDMCritSectEnter(&pThis->lock, VINF_IOM_R3_MMIO_WRITE);
    3289     if (rc != VINF_SUCCESS)
    3290         return rc;
    3291 
     3212    Assert(PDMCritSectIsOwner(pDevIns->CTX_SUFF(pCritSectRo)));
     3213
     3214    int rc;
    32923215    switch (cb)
    32933216    {
     
    33393262#endif
    33403263        default:
     3264            rc = VINF_SUCCESS;
    33413265            while (cb-- > 0 && rc == VINF_SUCCESS)
    33423266                rc = vga_mem_writeb(pThis, GCPhysAddr++, *pu8++);
     
    33453269    }
    33463270    STAM_PROFILE_STOP(&pThis->CTX_MID_Z(Stat,MemoryWrite), a);
    3347     PDMCritSectLeave(&pThis->lock);
    33483271    return rc;
    33493272}
     
    33603283static int vgaLFBAccess(PVM pVM, PVGASTATE pThis, RTGCPHYS GCPhys, RTGCPTR GCPtr)
    33613284{
    3362     int rc = PDMCritSectEnter(&pThis->lock, VINF_EM_RAW_EMULATE_INSTR);
     3285    int rc = PDMCritSectEnter(&pThis->CritSect, VINF_EM_RAW_EMULATE_INSTR);
    33633286    if (rc != VINF_SUCCESS)
    33643287        return rc;
     
    33813304        rc = PGMShwMakePageWritable(PDMDevHlpGetVMCPU(pThis->CTX_SUFF(pDevIns)), GCPtr,
    33823305                                    PGM_MK_PG_IS_MMIO2 | PGM_MK_PG_IS_WRITE_FAULT);
    3383         PDMCritSectLeave(&pThis->lock);
     3306        PDMCritSectLeave(&pThis->CritSect);
    33843307        AssertMsgReturn(    rc == VINF_SUCCESS
    33853308                        /* In the SMP case the page table might be removed while we wait for the PGM lock in the trap handler. */
     
    33893312                        rc);
    33903313#else /* IN_RING3 : We don't have any virtual page address of the access here. */
    3391         PDMCritSectLeave(&pThis->lock);
     3314        PDMCritSectLeave(&pThis->CritSect);
    33923315        Assert(GCPtr == 0);
    33933316#endif
     
    33953318    }
    33963319
    3397     PDMCritSectLeave(&pThis->lock);
     3320    PDMCritSectLeave(&pThis->CritSect);
    33983321    AssertMsgFailed(("PGMHandlerPhysicalPageTempOff -> rc=%d\n", rc));
    33993322    return rc;
     
    35183441    PVGASTATE pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
    35193442    NOREF(pvUser);
    3520 
    3521     int rc = PDMCritSectEnter(&pThis->lock, VINF_IOM_R3_IOPORT_WRITE);
    3522     if (rc != VINF_SUCCESS)
    3523         return rc;
     3443    Assert(PDMCritSectIsOwner(pDevIns->CTX_SUFF(pCritSectRo)));
    35243444
    35253445    /*
     
    35483468            lastWasNotNewline = 1;
    35493469#endif
    3550         PDMCritSectLeave(&pThis->lock);
    35513470        return VINF_SUCCESS;
    35523471    }
    35533472
    3554     PDMCritSectLeave(&pThis->lock);
    35553473    /* not in use. */
    35563474    return VERR_IOM_IOPORT_UNUSED;
     
    35773495{
    35783496    PVGASTATE pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
    3579     NOREF(pvUser);
    3580     NOREF(Port);
    3581 
    3582     int rc = PDMCritSectEnter(&pThis->lock, VINF_IOM_R3_IOPORT_WRITE);
    3583     if (rc != VINF_SUCCESS)
    3584         return rc;
     3497    Assert(PDMCritSectIsOwner(pDevIns->CTX_SUFF(pCritSectRo)));
     3498    NOREF(pvUser); NOREF(Port);
    35853499
    35863500    if (cb == 2)
     
    35913505    else
    35923506        Log(("vbeIOPortWriteVBEExtra: Ignoring invalid cb=%d writes to the VBE Extra port!!!\n", cb));
    3593     PDMCritSectLeave(&pThis->lock);
    35943507
    35953508    return VINF_SUCCESS;
     
    36113524{
    36123525    PVGASTATE pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
    3613     NOREF(pvUser);
    3614     NOREF(Port);
    3615 
    3616     int rc = PDMCritSectEnter(&pThis->lock, VINF_IOM_R3_IOPORT_READ);
    3617     if (rc != VINF_SUCCESS)
    3618         return rc;
    3619 
     3526    NOREF(pvUser); NOREF(Port);
     3527    Assert(PDMCritSectIsOwner(pDevIns->CTX_SUFF(pCritSectRo)));
     3528
     3529    int rc = VINF_SUCCESS;
    36203530    if (pThis->u16VBEExtraAddress == 0xffff)
    36213531    {
    36223532        Log(("vbeIOPortReadVBEExtra: Requested number of 64k video banks\n"));
    36233533        *pu32 = pThis->vram_size / _64K;
    3624         rc = VINF_SUCCESS;
    3625     }
    3626     else
    3627     if (    pThis->u16VBEExtraAddress >= pThis->cbVBEExtraData
    3628         ||  pThis->u16VBEExtraAddress + cb > pThis->cbVBEExtraData)
     3534    }
     3535    else if (   pThis->u16VBEExtraAddress >= pThis->cbVBEExtraData
     3536             || pThis->u16VBEExtraAddress + cb > pThis->cbVBEExtraData)
    36293537    {
    36303538        *pu32 = 0;
    36313539        Log(("vbeIOPortReadVBEExtra: Requested address is out of VBE data!!! Address=%#x(%d) cbVBEExtraData=%#x(%d)\n",
    36323540             pThis->u16VBEExtraAddress, pThis->u16VBEExtraAddress, pThis->cbVBEExtraData, pThis->cbVBEExtraData));
    3633         rc = VINF_SUCCESS;
    3634     }
    3635     else
    3636     if (cb == 1)
     3541    }
     3542    else if (cb == 1)
    36373543    {
    36383544        *pu32 = pThis->pu8VBEExtraData[pThis->u16VBEExtraAddress] & 0xFF;
    36393545
    36403546        Log(("vbeIOPortReadVBEExtra: cb=%#x %.*Rhxs\n", cb, cb, pu32));
    3641         rc = VINF_SUCCESS;
    3642     }
    3643     else
    3644     if (cb == 2)
     3547    }
     3548    else if (cb == 2)
    36453549    {
    36463550        *pu32 = pThis->pu8VBEExtraData[pThis->u16VBEExtraAddress]
     
    36483552
    36493553        Log(("vbeIOPortReadVBEExtra: cb=%#x %.*Rhxs\n", cb, cb, pu32));
    3650         rc = VINF_SUCCESS;
    36513554    }
    36523555    else
     
    36563559    }
    36573560
    3658     PDMCritSectLeave(&pThis->lock);
    36593561    return rc;
    36603562}
     
    40893991static DECLCALLBACK(void) vgaInfoState(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, const char *pszArgs)
    40903992{
    4091     PVGASTATE       s = PDMINS_2_DATA(pDevIns, PVGASTATE);
     3993    PVGASTATE       pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
    40923994    int             is_graph, double_scan;
    40933995    int             w, h, char_height, char_dots;
    40943996    int             val, vfreq_hz, hfreq_hz;
    4095     vga_retrace_s   *r = &s->retrace_state;
     3997    vga_retrace_s   *r = &pThis->retrace_state;
    40963998    const char      *clocks[] = { "25.175 MHz", "28.322 MHz", "External", "Reserved?!" };
    40973999    NOREF(pszArgs);
    40984000
    4099     is_graph  = s->gr[6] & 1;
    4100     char_dots = (s->sr[0x01] & 1) ? 8 : 9;
    4101     double_scan = s->cr[9] >> 7;
    4102     pHlp->pfnPrintf(pHlp, "pixel clock: %s\n", clocks[(s->msr >> 2) & 3]);
     4001    is_graph  = pThis->gr[6] & 1;
     4002    char_dots = (pThis->sr[0x01] & 1) ? 8 : 9;
     4003    double_scan = pThis->cr[9] >> 7;
     4004    pHlp->pfnPrintf(pHlp, "pixel clock: %s\n", clocks[(pThis->msr >> 2) & 3]);
    41034005    pHlp->pfnPrintf(pHlp, "double scanning %s\n", double_scan ? "on" : "off");
    4104     pHlp->pfnPrintf(pHlp, "double clocking %s\n", s->sr[1] & 0x08 ? "on" : "off");
    4105     val = s->cr[0] + 5;
     4006    pHlp->pfnPrintf(pHlp, "double clocking %s\n", pThis->sr[1] & 0x08 ? "on" : "off");
     4007    val = pThis->cr[0] + 5;
    41064008    pHlp->pfnPrintf(pHlp, "htotal: %d px (%d cclk)\n", val * char_dots, val);
    4107     val = s->cr[6] + ((s->cr[7] & 1) << 8) + ((s->cr[7] & 0x20) << 4) + 2;
     4009    val = pThis->cr[6] + ((pThis->cr[7] & 1) << 8) + ((pThis->cr[7] & 0x20) << 4) + 2;
    41084010    pHlp->pfnPrintf(pHlp, "vtotal: %d px\n", val);
    4109     val = s->cr[1] + 1;
     4011    val = pThis->cr[1] + 1;
    41104012    w   = val * char_dots;
    41114013    pHlp->pfnPrintf(pHlp, "hdisp : %d px (%d cclk)\n", w, val);
    4112     val = s->cr[0x12] + ((s->cr[7] & 2) << 7) + ((s->cr[7] & 0x40) << 4) + 1;
     4014    val = pThis->cr[0x12] + ((pThis->cr[7] & 2) << 7) + ((pThis->cr[7] & 0x40) << 4) + 1;
    41134015    h   = val;
    41144016    pHlp->pfnPrintf(pHlp, "vdisp : %d px\n", val);
    4115     val = ((s->cr[9] & 0x40) << 3) + ((s->cr[7] & 0x10) << 4) + s->cr[0x18];
     4017    val = ((pThis->cr[9] & 0x40) << 3) + ((pThis->cr[7] & 0x10) << 4) + pThis->cr[0x18];
    41164018    pHlp->pfnPrintf(pHlp, "split : %d ln\n", val);
    4117     val = (s->cr[0xc] << 8) + s->cr[0xd];
     4019    val = (pThis->cr[0xc] << 8) + pThis->cr[0xd];
    41184020    pHlp->pfnPrintf(pHlp, "start : %#x\n", val);
    41194021    if (!is_graph)
    41204022    {
    4121         val = (s->cr[9] & 0x1f) + 1;
     4023        val = (pThis->cr[9] & 0x1f) + 1;
    41224024        char_height = val;
    41234025        pHlp->pfnPrintf(pHlp, "char height %d\n", val);
    41244026        pHlp->pfnPrintf(pHlp, "text mode %dx%d\n", w / char_dots, h / (char_height << double_scan));
    41254027    }
    4126     if (s->fRealRetrace)
     4028    if (pThis->fRealRetrace)
    41274029    {
    41284030        val = r->hb_start;
     
    41394041                        vfreq_hz, hfreq_hz / 1000, hfreq_hz % 1000);
    41404042    }
    4141     pHlp->pfnPrintf(pHlp, "display refresh interval: %u ms\n", s->cMilliesRefreshInterval);
     4043    pHlp->pfnPrintf(pHlp, "display refresh interval: %u ms\n", pThis->cMilliesRefreshInterval);
    41424044}
    41434045
     
    43234225static DECLCALLBACK(void) vgaInfoSR(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, const char *pszArgs)
    43244226{
    4325     PVGASTATE   s = PDMINS_2_DATA(pDevIns, PVGASTATE);
     4227    PVGASTATE   pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
    43264228    unsigned    i;
    43274229    NOREF(pszArgs);
    43284230
    4329     pHlp->pfnPrintf(pHlp, "VGA Sequencer (3C5): SR index 3C4:%02X\n", s->sr_index);
    4330     Assert(sizeof(s->sr) >= 8);
     4231    pHlp->pfnPrintf(pHlp, "VGA Sequencer (3C5): SR index 3C4:%02X\n", pThis->sr_index);
     4232    Assert(sizeof(pThis->sr) >= 8);
    43314233    for (i = 0; i < 5; ++i)
    4332         pHlp->pfnPrintf(pHlp, " SR%02X:%02X", i, s->sr[i]);
     4234        pHlp->pfnPrintf(pHlp, " SR%02X:%02X", i, pThis->sr[i]);
    43334235    pHlp->pfnPrintf(pHlp, "\n");
    43344236}
     
    43444246static DECLCALLBACK(void) vgaInfoCR(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, const char *pszArgs)
    43454247{
    4346     PVGASTATE   s = PDMINS_2_DATA(pDevIns, PVGASTATE);
     4248    PVGASTATE   pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
    43474249    unsigned    i;
    43484250    NOREF(pszArgs);
    43494251
    4350     pHlp->pfnPrintf(pHlp, "VGA CRTC (3D5): CRTC index 3D4:%02X\n", s->cr_index);
    4351     Assert(sizeof(s->cr) >= 24);
     4252    pHlp->pfnPrintf(pHlp, "VGA CRTC (3D5): CRTC index 3D4:%02X\n", pThis->cr_index);
     4253    Assert(sizeof(pThis->cr) >= 24);
    43524254    for (i = 0; i < 10; ++i)
    43534255    {
    4354         pHlp->pfnPrintf(pHlp, " CR%02X:%02X", i, s->cr[i]);
     4256        pHlp->pfnPrintf(pHlp, " CR%02X:%02X", i, pThis->cr[i]);
    43554257    }
    43564258    pHlp->pfnPrintf(pHlp, "\n");
    43574259    for (i = 10; i < 20; ++i)
    43584260    {
    4359         pHlp->pfnPrintf(pHlp, " CR%02X:%02X", i, s->cr[i]);
     4261        pHlp->pfnPrintf(pHlp, " CR%02X:%02X", i, pThis->cr[i]);
    43604262    }
    43614263    pHlp->pfnPrintf(pHlp, "\n");
    43624264    for (i = 20; i < 25; ++i)
    43634265    {
    4364         pHlp->pfnPrintf(pHlp, " CR%02X:%02X", i, s->cr[i]);
     4266        pHlp->pfnPrintf(pHlp, " CR%02X:%02X", i, pThis->cr[i]);
    43654267    }
    43664268    pHlp->pfnPrintf(pHlp, "\n");
     
    43774279static DECLCALLBACK(void) vgaInfoGR(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, const char *pszArgs)
    43784280{
    4379     PVGASTATE   s = PDMINS_2_DATA(pDevIns, PVGASTATE);
     4281    PVGASTATE   pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
    43804282    unsigned    i;
    43814283    NOREF(pszArgs);
    43824284
    4383     pHlp->pfnPrintf(pHlp, "VGA Graphics Controller (3CF): GR index 3CE:%02X\n", s->gr_index);
    4384     Assert(sizeof(s->gr) >= 9);
     4285    pHlp->pfnPrintf(pHlp, "VGA Graphics Controller (3CF): GR index 3CE:%02X\n", pThis->gr_index);
     4286    Assert(sizeof(pThis->gr) >= 9);
    43854287    for (i = 0; i < 9; ++i)
    43864288    {
    4387         pHlp->pfnPrintf(pHlp, " GR%02X:%02X", i, s->gr[i]);
     4289        pHlp->pfnPrintf(pHlp, " GR%02X:%02X", i, pThis->gr[i]);
    43884290    }
    43894291    pHlp->pfnPrintf(pHlp, "\n");
     
    44004302static DECLCALLBACK(void) vgaInfoAR(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, const char *pszArgs)
    44014303{
    4402     PVGASTATE   s = PDMINS_2_DATA(pDevIns, PVGASTATE);
     4304    PVGASTATE   pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
    44034305    unsigned    i;
    44044306    NOREF(pszArgs);
    44054307
    44064308    pHlp->pfnPrintf(pHlp, "VGA Attribute Controller (3C0): index reg %02X, flip-flop: %d (%s)\n",
    4407                     s->ar_index, s->ar_flip_flop, s->ar_flip_flop ? "data" : "index" );
    4408     Assert(sizeof(s->ar) >= 0x14);
     4309                    pThis->ar_index, pThis->ar_flip_flop, pThis->ar_flip_flop ? "data" : "index" );
     4310    Assert(sizeof(pThis->ar) >= 0x14);
    44094311    pHlp->pfnPrintf(pHlp, " Palette:");
    44104312    for (i = 0; i < 0x10; ++i)
    44114313    {
    4412         pHlp->pfnPrintf(pHlp, " %02X", s->ar[i]);
     4314        pHlp->pfnPrintf(pHlp, " %02X", pThis->ar[i]);
    44134315    }
    44144316    pHlp->pfnPrintf(pHlp, "\n");
    44154317    for (i = 0x10; i <= 0x14; ++i)
    44164318    {
    4417         pHlp->pfnPrintf(pHlp, " AR%02X:%02X", i, s->ar[i]);
     4319        pHlp->pfnPrintf(pHlp, " AR%02X:%02X", i, pThis->ar[i]);
    44184320    }
    44194321    pHlp->pfnPrintf(pHlp, "\n");
     
    44294331static DECLCALLBACK(void) vgaInfoDAC(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, const char *pszArgs)
    44304332{
    4431     PVGASTATE   s = PDMINS_2_DATA(pDevIns, PVGASTATE);
     4333    PVGASTATE   pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
    44324334    unsigned    i;
    44334335    NOREF(pszArgs);
     
    44374339    {
    44384340        pHlp->pfnPrintf(pHlp, " %02X: %02X %02X %02X\n",
    4439                         i, s->palette[i*3+0], s->palette[i*3+1], s->palette[i*3+2]);
     4341                        i, pThis->palette[i*3+0], pThis->palette[i*3+1], pThis->palette[i*3+2]);
    44404342    }
    44414343}
     
    44514353static DECLCALLBACK(void) vgaInfoVBE(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, const char *pszArgs)
    44524354{
    4453     PVGASTATE   s = PDMINS_2_DATA(pDevIns, PVGASTATE);
     4355    PVGASTATE   pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
    44544356    NOREF(pszArgs);
    44554357
    4456     pHlp->pfnPrintf(pHlp, "LFB at %RGp\n", s->GCPhysVRAM);
    4457 
    4458     if (!(s->vbe_regs[VBE_DISPI_INDEX_ENABLE] & VBE_DISPI_ENABLED))
     4358    pHlp->pfnPrintf(pHlp, "LFB at %RGp\n", pThis->GCPhysVRAM);
     4359
     4360    if (!(pThis->vbe_regs[VBE_DISPI_INDEX_ENABLE] & VBE_DISPI_ENABLED))
    44594361    {
    44604362        pHlp->pfnPrintf(pHlp, "VBE disabled\n");
     
    44624364    }
    44634365
    4464     pHlp->pfnPrintf(pHlp, "VBE state (chip ID 0x%04x):\n", s->vbe_regs[VBE_DISPI_INDEX_ID]);
     4366    pHlp->pfnPrintf(pHlp, "VBE state (chip ID 0x%04x):\n", pThis->vbe_regs[VBE_DISPI_INDEX_ID]);
    44654367    pHlp->pfnPrintf(pHlp, " Display resolution: %d x %d @ %dbpp\n",
    4466                     s->vbe_regs[VBE_DISPI_INDEX_XRES], s->vbe_regs[VBE_DISPI_INDEX_YRES],
    4467                     s->vbe_regs[VBE_DISPI_INDEX_BPP]);
     4368                    pThis->vbe_regs[VBE_DISPI_INDEX_XRES], pThis->vbe_regs[VBE_DISPI_INDEX_YRES],
     4369                    pThis->vbe_regs[VBE_DISPI_INDEX_BPP]);
    44684370    pHlp->pfnPrintf(pHlp, " Virtual resolution: %d x %d\n",
    4469                     s->vbe_regs[VBE_DISPI_INDEX_VIRT_WIDTH], s->vbe_regs[VBE_DISPI_INDEX_VIRT_HEIGHT]);
     4371                    pThis->vbe_regs[VBE_DISPI_INDEX_VIRT_WIDTH], pThis->vbe_regs[VBE_DISPI_INDEX_VIRT_HEIGHT]);
    44704372    pHlp->pfnPrintf(pHlp, " Display start addr: %d, %d\n",
    4471                     s->vbe_regs[VBE_DISPI_INDEX_X_OFFSET], s->vbe_regs[VBE_DISPI_INDEX_Y_OFFSET]);
    4472     pHlp->pfnPrintf(pHlp, " Linear scanline pitch: 0x%04x\n", s->vbe_line_offset);
    4473     pHlp->pfnPrintf(pHlp, " Linear display start : 0x%04x\n", s->vbe_start_addr);
    4474     pHlp->pfnPrintf(pHlp, " Selected bank: 0x%04x\n", s->vbe_regs[VBE_DISPI_INDEX_BANK]);
     4373                    pThis->vbe_regs[VBE_DISPI_INDEX_X_OFFSET], pThis->vbe_regs[VBE_DISPI_INDEX_Y_OFFSET]);
     4374    pHlp->pfnPrintf(pHlp, " Linear scanline pitch: 0x%04x\n", pThis->vbe_line_offset);
     4375    pHlp->pfnPrintf(pHlp, " Linear display start : 0x%04x\n", pThis->vbe_start_addr);
     4376    pHlp->pfnPrintf(pHlp, " Selected bank: 0x%04x\n", pThis->vbe_regs[VBE_DISPI_INDEX_BANK]);
    44754377}
    44764378
     
    44864388static DECLCALLBACK(void) vgaInfoPlanar(PPDMDEVINS pDevIns, PCDBGFINFOHLP pHlp, const char *pszArgs)
    44874389{
    4488     PVGASTATE       s = PDMINS_2_DATA(pDevIns, PVGASTATE);
     4390    PVGASTATE       pThis = PDMINS_2_DATA(pDevIns, PVGASTATE);
    44894391    int             val1, val2;
    44904392    NOREF(pszArgs);
    44914393
    4492     val1 = (s->gr[5] >> 3) & 1;
    4493     val2 = s->gr[5] & 3;
     4394    val1 = (pThis->gr[5] >> 3) & 1;
     4395    val2 = pThis->gr[5] & 3;
    44944396    pHlp->pfnPrintf(pHlp, "read mode     : %d     write mode: %d\n", val1, val2);
    4495     val1 = s->gr[0];
    4496     val2 = s->gr[1];
     4397    val1 = pThis->gr[0];
     4398    val2 = pThis->gr[1];
    44974399    pHlp->pfnPrintf(pHlp, "set/reset data: %02X    S/R enable: %02X\n", val1, val2);
    4498     val1 = s->gr[2];
    4499     val2 = s->gr[4] & 3;
     4400    val1 = pThis->gr[2];
     4401    val2 = pThis->gr[4] & 3;
    45004402    pHlp->pfnPrintf(pHlp, "color compare : %02X    read map  : %d\n", val1, val2);
    4501     val1 = s->gr[3] & 7;
    4502     val2 = (s->gr[3] >> 3) & 3;
     4403    val1 = pThis->gr[3] & 7;
     4404    val2 = (pThis->gr[3] >> 3) & 3;
    45034405    pHlp->pfnPrintf(pHlp, "rotate        : %d     function  : %d\n", val1, val2);
    4504     val1 = s->gr[7];
    4505     val2 = s->gr[8];
     4406    val1 = pThis->gr[7];
     4407    val2 = pThis->gr[8];
    45064408    pHlp->pfnPrintf(pHlp, "don't care    : %02X    bit mask  : %02X\n", val1, val2);
    4507     val1 = s->sr[2];
    4508     val2 = s->sr[4] & 8;
     4409    val1 = pThis->sr[2];
     4410    val2 = pThis->sr[4] & 8;
    45094411    pHlp->pfnPrintf(pHlp, "seq plane mask: %02X    chain-4   : %s\n", val1, val2 ? "on" : "off");
    45104412}
     
    46014503    PPDMDEVINS pDevIns = pThis->CTX_SUFF(pDevIns);
    46024504
    4603     int rc = PDMCritSectEnter(&pThis->lock, VERR_SEM_BUSY);
     4505    int rc = PDMCritSectEnter(&pThis->CritSect, VERR_SEM_BUSY);
    46044506    AssertRC(rc);
    46054507
     
    46094511    if (VBVAUpdateDisplay (pThis) == VINF_SUCCESS)
    46104512    {
    4611         PDMCritSectLeave(&pThis->lock);
     4513        PDMCritSectLeave(&pThis->CritSect);
    46124514        return VINF_SUCCESS;
    46134515    }
     
    46274529
    46284530    rc = vga_update_display(pThis, false, false, true);
    4629     if (rc != VINF_SUCCESS)
    4630     {
    4631         PDMCritSectLeave(&pThis->lock);
    4632         return rc;
    4633     }
    4634     PDMCritSectLeave(&pThis->lock);
    4635     return VINF_SUCCESS;
     4531    PDMCritSectLeave(&pThis->CritSect);
     4532    return rc;
    46364533}
    46374534
    46384535
    46394536/**
    4640  * Internal vgaPortUpdateDisplayAll worker called under pThis->lock.
     4537 * Internal vgaPortUpdateDisplayAll worker called under pThis->CritSect.
    46414538 */
    46424539static int updateDisplayAll(PVGASTATE pThis)
     
    46764573#endif /* DEBUG_sunlover */
    46774574
    4678     int rc = PDMCritSectEnter(&pThis->lock, VERR_SEM_BUSY);
     4575    int rc = PDMCritSectEnter(&pThis->CritSect, VERR_SEM_BUSY);
    46794576    AssertRC(rc);
    46804577
    46814578    rc = updateDisplayAll(pThis);
    46824579
    4683     PDMCritSectLeave(&pThis->lock);
     4580    PDMCritSectLeave(&pThis->CritSect);
    46844581    return rc;
    46854582}
     
    47404637        return VERR_INVALID_PARAMETER;
    47414638
    4742     int rc = PDMCritSectEnter(&pThis->lock, VERR_SEM_BUSY);
     4639    int rc = PDMCritSectEnter(&pThis->CritSect, VERR_SEM_BUSY);
    47434640    AssertRCReturn(rc, rc);
    47444641
     
    48274724        rc = VERR_NOT_SUPPORTED;
    48284725
    4829     PDMCritSectLeave(&pThis->lock);
     4726    PDMCritSectLeave(&pThis->CritSect);
    48304727
    48314728    LogFlow(("vgaPortTakeScreenshot: returns %Rrc (cbData=%d cx=%d cy=%d)\n", rc, *pcbData, *pcx, *pcy));
     
    48674764    LogFlow(("vgaPortDisplayBlt: pvData=%p x=%d y=%d cx=%d cy=%d\n", pvData, x, y, cx, cy));
    48684765
    4869     rc = PDMCritSectEnter(&pThis->lock, VERR_SEM_BUSY);
     4766    rc = PDMCritSectEnter(&pThis->CritSect, VERR_SEM_BUSY);
    48704767    AssertRC(rc);
    48714768
     
    49324829        rc = VERR_INVALID_PARAMETER;
    49334830
    4934     PDMCritSectLeave(&pThis->lock);
     4831    PDMCritSectLeave(&pThis->CritSect);
    49354832
    49364833    LogFlow(("vgaPortDisplayBlt: returns %Rrc\n", rc));
     
    49384835}
    49394836
    4940 static DECLCALLBACK(void) vgaPortUpdateDisplayRect (PPDMIDISPLAYPORT pInterface, int32_t x, int32_t y, uint32_t w, uint32_t h)
     4837static DECLCALLBACK(void) vgaPortUpdateDisplayRect(PPDMIDISPLAYPORT pInterface, int32_t x, int32_t y, uint32_t w, uint32_t h)
    49414838{
    49424839    uint32_t v;
     
    49534850    uint32_t u32OffsetSrc, u32Dummy;
    49544851
    4955     PVGASTATE s = IDISPLAYPORT_2_VGASTATE(pInterface);
     4852    PVGASTATE pThis = IDISPLAYPORT_2_VGASTATE(pInterface);
    49564853
    49574854#ifdef DEBUG_sunlover
     
    49604857
    49614858    Assert(pInterface);
    4962     Assert(s->pDrv);
    4963     Assert(s->pDrv->pu8Data);
     4859    Assert(pThis->pDrv);
     4860    Assert(pThis->pDrv->pu8Data);
    49644861
    49654862    /* Check if there is something to do at all. */
    4966     if (!s->fRenderVRAM)
     4863    if (!pThis->fRenderVRAM)
    49674864    {
    49684865        /* The framebuffer uses the guest VRAM directly. */
     
    49734870    }
    49744871
    4975     int rc = PDMCritSectEnter(&s->lock, VERR_SEM_BUSY);
     4872    int rc = PDMCritSectEnter(&pThis->CritSect, VERR_SEM_BUSY);
    49764873    AssertRC(rc);
    49774874
     
    49924889
    49934890    /* Also check if coords are greater than the display resolution. */
    4994     if (x + w > s->pDrv->cx)
     4891    if (x + w > pThis->pDrv->cx)
    49954892    {
    49964893        // x < 0 is not possible here
    4997         w = s->pDrv->cx > (uint32_t)x? s->pDrv->cx - x: 0;
    4998     }
    4999 
    5000     if (y + h > s->pDrv->cy)
     4894        w = pThis->pDrv->cx > (uint32_t)x? pThis->pDrv->cx - x: 0;
     4895    }
     4896
     4897    if (y + h > pThis->pDrv->cy)
    50014898    {
    50024899        // y < 0 is not possible here
    5003         h = s->pDrv->cy > (uint32_t)y? s->pDrv->cy - y: 0;
     4900        h = pThis->pDrv->cy > (uint32_t)y? pThis->pDrv->cy - y: 0;
    50044901    }
    50054902
     
    50154912        LogFlow(("vgaPortUpdateDisplayRect: nothing to do: %dx%d\n", w, h));
    50164913#endif /* DEBUG_sunlover */
    5017         PDMCritSectLeave(&s->lock);
     4914        PDMCritSectLeave(&pThis->CritSect);
    50184915        return;
    50194916    }
     
    50254922
    50264923    /* Choose the rendering function. */
    5027     switch(s->get_bpp(s))
     4924    switch(pThis->get_bpp(pThis))
    50284925    {
    50294926        default:
     
    50334930             * Nothing to do, just return.
    50344931             */
    5035             PDMCritSectLeave(&s->lock);
     4932            PDMCritSectLeave(&pThis->CritSect);
    50364933            return;
    50374934        case 8:
     
    50524949    }
    50534950
    5054     vga_draw_line = vga_draw_line_table[v * 4 + get_depth_index(s->pDrv->cBits)];
     4951    vga_draw_line = vga_draw_line_table[v * 4 + get_depth_index(pThis->pDrv->cBits)];
    50554952
    50564953    /* Compute source and destination addresses and pitches. */
    5057     cbPixelDst = (s->pDrv->cBits + 7) / 8;
    5058     cbLineDst  = s->pDrv->cbScanline;
    5059     pu8Dst     = s->pDrv->pu8Data + y * cbLineDst + x * cbPixelDst;
    5060 
    5061     cbPixelSrc = (s->get_bpp(s) + 7) / 8;
    5062     s->get_offsets(s, &cbLineSrc, &u32OffsetSrc, &u32Dummy);
     4954    cbPixelDst = (pThis->pDrv->cBits + 7) / 8;
     4955    cbLineDst  = pThis->pDrv->cbScanline;
     4956    pu8Dst     = pThis->pDrv->pu8Data + y * cbLineDst + x * cbPixelDst;
     4957
     4958    cbPixelSrc = (pThis->get_bpp(pThis) + 7) / 8;
     4959    pThis->get_offsets(pThis, &cbLineSrc, &u32OffsetSrc, &u32Dummy);
    50634960
    50644961    /* Assume that rendering is performed only on visible part of VRAM.
    50654962     * This is true because coordinates were verified.
    50664963     */
    5067     pu8Src = s->vram_ptrR3;
     4964    pu8Src = pThis->vram_ptrR3;
    50684965    pu8Src += u32OffsetSrc * 4 + y * cbLineSrc + x * cbPixelSrc;
    50694966
     
    50764973    while (h-- > 0)
    50774974    {
    5078         vga_draw_line (s, pu8Dst, pu8Src, w);
     4975        vga_draw_line (pThis, pu8Dst, pu8Src, w);
    50794976        pu8Dst += cbLineDst;
    50804977        pu8Src += cbLineSrc;
    50814978    }
    5082     PDMCritSectLeave(&s->lock);
    5083 
     4979
     4980    PDMCritSectLeave(&pThis->CritSect);
    50844981#ifdef DEBUG_sunlover
    50854982    LogFlow(("vgaPortUpdateDisplayRect: completed.\n"));
     
    51205017#endif /* DEBUG_sunlover */
    51215018
    5122     PVGASTATE s = IDISPLAYPORT_2_VGASTATE(pInterface);
     5019    PVGASTATE pThis = IDISPLAYPORT_2_VGASTATE(pInterface);
    51235020
    51245021    Assert(pInterface);
    5125     Assert(s->pDrv);
     5022    Assert(pThis->pDrv);
    51265023
    51275024    int32_t xSrcCorrected = xSrc;
     
    52075104    }
    52085105
    5209     int rc = PDMCritSectEnter(&s->lock, VERR_SEM_BUSY);
     5106    int rc = PDMCritSectEnter(&pThis->CritSect, VERR_SEM_BUSY);
    52105107    AssertRC(rc);
    52115108
     
    52275124    while (hCorrected-- > 0)
    52285125    {
    5229         vga_draw_line (s, pu8DstPtr, pu8SrcPtr, wCorrected);
     5126        vga_draw_line (pThis, pu8DstPtr, pu8SrcPtr, wCorrected);
    52305127        pu8DstPtr += cbLineDst;
    52315128        pu8SrcPtr += cbLineSrc;
    52325129    }
    5233     PDMCritSectLeave(&s->lock);
    5234 
     5130
     5131    PDMCritSectLeave(&pThis->CritSect);
    52355132#ifdef DEBUG_sunlover
    52365133    LogFlow(("vgaPortCopyRect: completed.\n"));
     
    52425139static DECLCALLBACK(void) vgaPortSetRenderVRAM(PPDMIDISPLAYPORT pInterface, bool fRender)
    52435140{
    5244     PVGASTATE s = IDISPLAYPORT_2_VGASTATE(pInterface);
     5141    PVGASTATE pThis = IDISPLAYPORT_2_VGASTATE(pInterface);
    52455142
    52465143    LogFlow(("vgaPortSetRenderVRAM: fRender = %d\n", fRender));
    52475144
    5248     s->fRenderVRAM = fRender;
     5145    pThis->fRenderVRAM = fRender;
    52495146}
    52505147
     
    57475644    }
    57485645
    5749     PDMR3CritSectDelete(&pThis->lock);
     5646    PDMR3CritSectDelete(&pThis->CritSect);
    57505647    return VINF_SUCCESS;
    57515648}
     
    59215818
    59225819    /*
     5820     * We use our own critical section to avoid unncessary pointer indirections
     5821     * in interface methods (as we all as for historical reasons).
     5822     */
     5823    rc = PDMDevHlpCritSectInit(pDevIns, &pThis->CritSect, RT_SRC_POS, "VGA#%u", iInstance);
     5824    AssertRCReturn(rc, rc);
     5825    rc = PDMDevHlpSetDeviceCritSect(pDevIns, &pThis->CritSect);
     5826    AssertRCReturn(rc, rc);
     5827
     5828    /*
    59235829     * Allocate the VRAM and map the first 512KB of it into GC so we can speed up VGA support.
    59245830     */
     
    61946100    if (RT_FAILURE(rc))
    61956101        return rc;
    6196 
    6197     /* Initialize the PDM lock. */
    6198     rc = PDMDevHlpCritSectInit(pDevIns, &pThis->lock, RT_SRC_POS, "VGA#%u", iInstance);
    6199     if (RT_FAILURE(rc))
    6200     {
    6201         Log(("%s: Failed to create critical section.\n", __FUNCTION__));
    6202         return rc;
    6203     }
    62046102
    62056103    /*
  • trunk/src/VBox/Devices/Graphics/DevVGA.h

    r44528 r44876  
    317317    /** The physical address the VRAM was assigned. */
    318318    RTGCPHYS                    GCPhysVRAM;
    319     /** The critical section. */
    320     PDMCRITSECT                 lock;
     319    /** The critical section protect the instance data. */
     320    PDMCRITSECT                 CritSect;
    321321    /** The PCI device. */
    322322    PCIDEVICE                   Dev;
  • trunk/src/VBox/Devices/Graphics/DevVGA_VBVA.cpp

    r44528 r44876  
     1/* $Id$ */
    12/** @file
    23 * VirtualBox Video Acceleration (VBVA).
     
    45
    56/*
    6  * Copyright (C) 2006-2012 Oracle Corporation
     7 * Copyright (C) 2006-2013 Oracle Corporation
    78 *
    89 * This file is part of VirtualBox Open Source Edition (OSE), as
     
    1516 */
    1617
     18/*******************************************************************************
     19*   Header Files                                                               *
     20*******************************************************************************/
    1721#define LOG_GROUP LOG_GROUP_DEV_VGA
    1822#include <VBox/vmm/pdmifs.h>
     
    3741#define LOGVBVABUFFER(a) LogFlow(a)
    3842#else
    39 #define LOGVBVABUFFER(a) do {} while(0)
     43#define LOGVBVABUFFER(a) do {} while (0)
    4044#endif
    4145
     46/*******************************************************************************
     47*   Structures and Typedefs                                                    *
     48*******************************************************************************/
    4249typedef struct VBVAPARTIALRECORD
    4350{
     
    6976} VBVAMOUSESHAPEINFO;
    7077
    71 /* @todo saved state: save and restore VBVACONTEXT */
     78/** @todo saved state: save and restore VBVACONTEXT */
    7279typedef struct VBVACONTEXT
    7380{
     
    7784} VBVACONTEXT;
    7885
    79 /* Copies 'cb' bytes from the VBVA ring buffer to the 'pu8Dst'.
     86
     87
     88/** Copies @a cb bytes from the VBVA ring buffer to the @a pu8Dst.
    8089 * Used for partial records or for records which cross the ring boundary.
    8190 */
    8291static void vbvaFetchBytes (VBVABUFFER *pVBVA, uint8_t *pu8Dst, uint32_t cb)
    8392{
    84     /* @todo replace the 'if' with an assert. The caller must ensure this condition. */
     93    /** @todo replace the 'if' with an assert. The caller must ensure this condition. */
    8594    if (cb >= pVBVA->cbData)
    8695    {
     
    16331642{
    16341643    PPDMDEVINS pDevIns = pVGAState->pDevInsR3;
    1635     PDMCritSectEnter(&pVGAState->lock, VERR_SEM_BUSY);
     1644    PDMCritSectEnter(&pVGAState->CritSect, VERR_SEM_BUSY);
     1645
    16361646    HGSMISetHostGuestFlags(pVGAState->pHGSMI, HGSMIHOSTFLAGS_IRQ | fFlags);
    16371647    PDMDevHlpPCISetIrq(pDevIns, 0, PDM_IRQ_LEVEL_HIGH);
    1638     PDMCritSectLeave(&pVGAState->lock);
     1648
     1649    PDMCritSectLeave(&pVGAState->CritSect);
    16391650}
    16401651
  • trunk/src/VBox/Devices/testcase/tstDeviceStructSize.cpp

    r44806 r44876  
    316316    CHECK_MEMBER_ALIGNMENT(SerialState, CritSect, 8);
    317317    CHECK_MEMBER_ALIGNMENT(VGASTATE, Dev, 8);
    318     CHECK_MEMBER_ALIGNMENT(VGASTATE, lock, 8);
     318    CHECK_MEMBER_ALIGNMENT(VGASTATE, CritSect, 8);
    319319    CHECK_MEMBER_ALIGNMENT(VGASTATE, StatRZMemoryRead, 8);
    320320    CHECK_MEMBER_ALIGNMENT(VMMDevState, CritSect, 8);
  • trunk/src/VBox/Devices/testcase/tstDeviceStructSizeRC.cpp

    r44852 r44876  
    313313    GEN_CHECK_OFF(VGASTATE, fRenderVRAM);
    314314    GEN_CHECK_OFF(VGASTATE, GCPhysVRAM);
    315     GEN_CHECK_OFF(VGASTATE, lock);
     315    GEN_CHECK_OFF(VGASTATE, CritSect);
    316316    GEN_CHECK_OFF(VGASTATE, Dev);
    317317    GEN_CHECK_OFF(VGASTATE, StatRZMemoryRead);
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette