diff mbox

[PATCHv2] tcx: Fix 24-bit display mode

Message ID 1370190180-18232-1-git-send-email-mark.cave-ayland@ilande.co.uk
State New
Headers show

Commit Message

Mark Cave-Ayland June 2, 2013, 4:23 p.m. UTC
Commit d08151bf (conversion of tcx to the memory API) broke the 24-bit mode of
the tcx display adapter by accidentally passing in the final address of the
dirty region to memory_region_reset_dirty() instead of its size.

Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
---
 hw/display/tcx.c |   10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

Comments

Blue Swirl June 2, 2013, 5:01 p.m. UTC | #1
Thanks, applied.

On Sun, Jun 2, 2013 at 4:23 PM, Mark Cave-Ayland
<mark.cave-ayland@ilande.co.uk> wrote:
> Commit d08151bf (conversion of tcx to the memory API) broke the 24-bit mode of
> the tcx display adapter by accidentally passing in the final address of the
> dirty region to memory_region_reset_dirty() instead of its size.
>
> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
> ---
>  hw/display/tcx.c |   10 ++++++----
>  1 file changed, 6 insertions(+), 4 deletions(-)
>
> diff --git a/hw/display/tcx.c b/hw/display/tcx.c
> index fc27f45..995641c 100644
> --- a/hw/display/tcx.c
> +++ b/hw/display/tcx.c
> @@ -193,15 +193,16 @@ static inline void reset_dirty(TCXState *ts, ram_addr_t page_min,
>                                ram_addr_t cpage)
>  {
>      memory_region_reset_dirty(&ts->vram_mem,
> -                              page_min, page_max + TARGET_PAGE_SIZE,
> +                              page_min,
> +                              (page_max - page_min) + TARGET_PAGE_SIZE,
>                                DIRTY_MEMORY_VGA);
>      memory_region_reset_dirty(&ts->vram_mem,
>                                page24 + page_min * 4,
> -                              page24 + page_max * 4 + TARGET_PAGE_SIZE,
> +                              (page_max - page_min) * 4 + TARGET_PAGE_SIZE,
>                                DIRTY_MEMORY_VGA);
>      memory_region_reset_dirty(&ts->vram_mem,
>                                cpage + page_min * 4,
> -                              cpage + page_max * 4 + TARGET_PAGE_SIZE,
> +                              (page_max - page_min) * 4 + TARGET_PAGE_SIZE,
>                                DIRTY_MEMORY_VGA);
>  }
>
> @@ -285,7 +286,8 @@ static void tcx_update_display(void *opaque)
>      /* reset modified pages */
>      if (page_max >= page_min) {
>          memory_region_reset_dirty(&ts->vram_mem,
> -                                  page_min, page_max + TARGET_PAGE_SIZE,
> +                                  page_min,
> +                                  (page_max - page_min) + TARGET_PAGE_SIZE,
>                                    DIRTY_MEMORY_VGA);
>      }
>  }
> --
> 1.7.10.4
>
>
diff mbox

Patch

diff --git a/hw/display/tcx.c b/hw/display/tcx.c
index fc27f45..995641c 100644
--- a/hw/display/tcx.c
+++ b/hw/display/tcx.c
@@ -193,15 +193,16 @@  static inline void reset_dirty(TCXState *ts, ram_addr_t page_min,
                               ram_addr_t cpage)
 {
     memory_region_reset_dirty(&ts->vram_mem,
-                              page_min, page_max + TARGET_PAGE_SIZE,
+                              page_min,
+                              (page_max - page_min) + TARGET_PAGE_SIZE,
                               DIRTY_MEMORY_VGA);
     memory_region_reset_dirty(&ts->vram_mem,
                               page24 + page_min * 4,
-                              page24 + page_max * 4 + TARGET_PAGE_SIZE,
+                              (page_max - page_min) * 4 + TARGET_PAGE_SIZE,
                               DIRTY_MEMORY_VGA);
     memory_region_reset_dirty(&ts->vram_mem,
                               cpage + page_min * 4,
-                              cpage + page_max * 4 + TARGET_PAGE_SIZE,
+                              (page_max - page_min) * 4 + TARGET_PAGE_SIZE,
                               DIRTY_MEMORY_VGA);
 }
 
@@ -285,7 +286,8 @@  static void tcx_update_display(void *opaque)
     /* reset modified pages */
     if (page_max >= page_min) {
         memory_region_reset_dirty(&ts->vram_mem,
-                                  page_min, page_max + TARGET_PAGE_SIZE,
+                                  page_min,
+                                  (page_max - page_min) + TARGET_PAGE_SIZE,
                                   DIRTY_MEMORY_VGA);
     }
 }