From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=48767 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OCZDh-0004is-BA for qemu-devel@nongnu.org; Thu, 13 May 2010 10:17:02 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OCZDb-0005X6-4Q for qemu-devel@nongnu.org; Thu, 13 May 2010 10:17:01 -0400 Received: from fmmailgate02.web.de ([217.72.192.227]:59223) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OCZDa-0005W4-OI for qemu-devel@nongnu.org; Thu, 13 May 2010 10:16:55 -0400 From: Jan Kiszka Date: Thu, 13 May 2010 16:16:47 +0200 Message-Id: <02a76f27b38bc9ecfd00b8a3d2c5920cbb7495e5.1273760202.git.jan.kiszka@web.de> In-Reply-To: References: In-Reply-To: References: Sender: jan.kiszka@web.de Subject: [Qemu-devel] [PATCH 3/4] cfi: Mark flash memory executable List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Michael Walle Add the new IO_MEM_EXEC flag to all cfi01/02 memory regions to allow execution from them in any state. Signed-off-by: Jan Kiszka --- hw/pflash_cfi01.c | 9 +++++---- hw/pflash_cfi02.c | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/hw/pflash_cfi01.c b/hw/pflash_cfi01.c index 20fe93d..50f6598 100644 --- a/hw/pflash_cfi01.c +++ b/hw/pflash_cfi01.c @@ -90,7 +90,7 @@ static void pflash_timer (void *opaque) pfl->wcycle = 2; } else { cpu_register_physical_memory(pfl->base, pfl->total_len, - pfl->off | IO_MEM_ROMD | pfl->fl_mem); + pfl->off | IO_MEM_ROMD | IO_MEM_EXEC | pfl->fl_mem); pfl->wcycle = 0; } pfl->cmd = 0; @@ -247,7 +247,8 @@ static void pflash_write(pflash_t *pfl, target_phys_addr_t offset, if (!pfl->wcycle) { /* Set the device in I/O access mode */ - cpu_register_physical_memory(pfl->base, pfl->total_len, pfl->fl_mem); + cpu_register_physical_memory(pfl->base, pfl->total_len, + pfl->fl_mem | IO_MEM_EXEC); } switch (pfl->wcycle) { @@ -403,7 +404,7 @@ static void pflash_write(pflash_t *pfl, target_phys_addr_t offset, reset_flash: cpu_register_physical_memory(pfl->base, pfl->total_len, - pfl->off | IO_MEM_ROMD | pfl->fl_mem); + pfl->off | IO_MEM_ROMD | IO_MEM_EXEC | pfl->fl_mem); pfl->bypass = 0; pfl->wcycle = 0; @@ -587,7 +588,7 @@ pflash_t *pflash_cfi01_register(target_phys_addr_t base, ram_addr_t off, } pfl->off = off; cpu_register_physical_memory(base, total_len, - off | pfl->fl_mem | IO_MEM_ROMD); + off | pfl->fl_mem | IO_MEM_ROMD | IO_MEM_EXEC); pfl->bs = bs; if (pfl->bs) { diff --git a/hw/pflash_cfi02.c b/hw/pflash_cfi02.c index 8195d91..6bc58b4 100644 --- a/hw/pflash_cfi02.c +++ b/hw/pflash_cfi02.c @@ -75,7 +75,7 @@ struct pflash_t { static void pflash_register_memory(pflash_t *pfl, int rom_mode) { - unsigned long phys_offset = pfl->fl_mem; + unsigned long phys_offset = pfl->fl_mem | IO_MEM_EXEC; int i; if (rom_mode) -- 1.6.0.2