diff mbox

[3/3] vga: compile cirrus_vga in hwlib

Message ID CAAu8pHsOJaPTxmLm1VXyJ0T2uxsXfF1KdQ-yBq9OF-s9n8xQJw@mail.gmail.com
State New
Headers show

Commit Message

Blue Swirl Oct. 9, 2011, 10:24 a.m. UTC
Remove target dependencies and compile Cirrus VGA in hwlib.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
---
 Makefile.objs   |    1 +
 Makefile.target |    1 -
 hw/cirrus_vga.c |    9 ++++++---
 3 files changed, 7 insertions(+), 4 deletions(-)

     }
@@ -1900,7 +1903,7 @@ static void cirrus_mmio_blt_write(CirrusVGAState
* s, unsigned address,
  *
  *  write mode 4/5
  *
- * assume TARGET_PAGE_SIZE >= 16
+ * assume CIRRUS_PAGE_SIZE >= 16
  *
  ***************************************/

Comments

Avi Kivity Oct. 9, 2011, 4:19 p.m. UTC | #1
On 10/09/2011 12:24 PM, Blue Swirl wrote:
> Remove target dependencies and compile Cirrus VGA in hwlib.

> @@ -618,10 +621,10 @@ static void
> cirrus_invalidate_region(CirrusVGAState * s, int off_begin,
>       for (y = 0; y<  lines; y++) {
>   	off_cur = off_begin;
>   	off_cur_end = (off_cur + bytesperline)&  s->cirrus_addr_mask;
> -	off_cur&= TARGET_PAGE_MASK;
> +        off_cur&= CIRRUS_PAGE_MASK;
>   	while (off_cur<  off_cur_end) {
>   	    memory_region_set_dirty(&s->vga.vram, off_cur);
> -	    off_cur += TARGET_PAGE_SIZE;
> +            off_cur += CIRRUS_PAGE_SIZE;
>   	}
>   	off_begin += off_pitch;
>       }
>

Won't that miss some pages, if CIRRUS_PAGE_SIZE > TARGET_PAGE_SIZE?

We probably need to change memory_region_set_dirty() to take a range, or 
add a new API that accepts a range.  The only time you can assume you 
only modify a single page is when you write an aligned natural type; not 
general DMA.
diff mbox

Patch

From c753f44923bb53a9a80443ae5a93313d33d63efc Mon Sep 17 00:00:00 2001
Message-Id: <c753f44923bb53a9a80443ae5a93313d33d63efc.1318155718.git.blauwirbel@gmail.com>
In-Reply-To: <10ffb6a14f287979003c8f1b520e7d25bd5b1df5.1318155718.git.blauwirbel@gmail.com>
References: <10ffb6a14f287979003c8f1b520e7d25bd5b1df5.1318155718.git.blauwirbel@gmail.com>
From: Blue Swirl <blauwirbel@gmail.com>
Date: Sun, 9 Oct 2011 09:58:00 +0000
Subject: [PATCH 3/3] vga: compile cirrus_vga in hwlib

Remove target dependencies and compile Cirrus VGA in hwlib.

Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
---
 Makefile.objs   |    1 +
 Makefile.target |    1 -
 hw/cirrus_vga.c |    9 ++++++---
 3 files changed, 7 insertions(+), 4 deletions(-)

diff --git a/Makefile.objs b/Makefile.objs
index c849e51..df2c888 100644
--- a/Makefile.objs
+++ b/Makefile.objs
@@ -284,6 +284,7 @@  hw-obj-$(CONFIG_VGA_ISA) += vga-isa.o
 hw-obj-$(CONFIG_VGA_ISA_MM) += vga-isa-mm.o
 hw-obj-$(CONFIG_VMWARE_VGA) += vmware_vga.o
 hw-obj-$(CONFIG_VMMOUSE) += vmmouse.o
+hw-obj-$(CONFIG_VGA_CIRRUS) += cirrus_vga.o
 
 hw-obj-$(CONFIG_RC4030) += rc4030.o
 hw-obj-$(CONFIG_DP8393X) += dp8393x.o
diff --git a/Makefile.target b/Makefile.target
index 8eeda65..0ca0fe5 100644
--- a/Makefile.target
+++ b/Makefile.target
@@ -195,7 +195,6 @@  obj-$(CONFIG_KVM) += kvm.o kvm-all.o
 obj-$(CONFIG_NO_KVM) += kvm-stub.o
 obj-y += memory.o
 obj-$(CONFIG_VGA) += vga.o
-obj-$(CONFIG_VGA_CIRRUS) += cirrus_vga.o
 LIBS+=-lz
 
 QEMU_CFLAGS += $(VNC_TLS_CFLAGS)
diff --git a/hw/cirrus_vga.c b/hw/cirrus_vga.c
index aa8a0e6..ee05fd4 100644
--- a/hw/cirrus_vga.c
+++ b/hw/cirrus_vga.c
@@ -173,6 +173,9 @@ 
 
 #define CIRRUS_PNPMMIO_SIZE         0x1000
 
+#define CIRRUS_PAGE_SIZE 4096
+#define CIRRUS_PAGE_MASK (CIRRUS_PAGE_SIZE - 1)
+
 #define BLTUNSAFE(s) \
     ( \
         ( /* check dst is within bounds */ \
@@ -618,10 +621,10 @@  static void cirrus_invalidate_region(CirrusVGAState * s, int off_begin,
     for (y = 0; y < lines; y++) {
 	off_cur = off_begin;
 	off_cur_end = (off_cur + bytesperline) & s->cirrus_addr_mask;
-	off_cur &= TARGET_PAGE_MASK;
+        off_cur &= CIRRUS_PAGE_MASK;
 	while (off_cur < off_cur_end) {
 	    memory_region_set_dirty(&s->vga.vram, off_cur);
-	    off_cur += TARGET_PAGE_SIZE;
+            off_cur += CIRRUS_PAGE_SIZE;
 	}
 	off_begin += off_pitch;
     }
@@ -1900,7 +1903,7 @@  static void cirrus_mmio_blt_write(CirrusVGAState * s, unsigned address,
  *
  *  write mode 4/5
  *
- * assume TARGET_PAGE_SIZE >= 16
+ * assume CIRRUS_PAGE_SIZE >= 16
  *
  ***************************************/
 
-- 
1.7.2.5