Skip to content

Commit

Permalink
no data exec support
Browse files Browse the repository at this point in the history
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1074 c046a42c-6fe2-441c-8c8c-71466251a162
  • Loading branch information
bellard committed Sep 29, 2004
1 parent 345fbaa commit d5a8f07
Showing 1 changed file with 29 additions and 4 deletions.
33 changes: 29 additions & 4 deletions exec.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,16 +18,18 @@
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "config.h"
#ifdef _WIN32
#include <windows.h>
#else
#include <sys/mman.h>
#endif
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <inttypes.h>
#if !defined(CONFIG_SOFTMMU)
#include <sys/mman.h>
#endif

#include "cpu.h"
#include "exec-all.h"
Expand Down Expand Up @@ -130,10 +132,33 @@ static void page_init(void)
/* NOTE: we can always suppose that qemu_host_page_size >=
TARGET_PAGE_SIZE */
#ifdef _WIN32
qemu_real_host_page_size = 4096;
{
SYSTEM_INFO system_info;
DWORD old_protect;

GetSystemInfo(&system_info);
qemu_real_host_page_size = system_info.dwPageSize;

VirtualProtect(code_gen_buffer, sizeof(code_gen_buffer),
PAGE_EXECUTE_READWRITE, &old_protect);
}
#else
qemu_real_host_page_size = getpagesize();
{
unsigned long start, end;

start = (unsigned long)code_gen_buffer;
start &= ~(qemu_real_host_page_size - 1);

end = (unsigned long)code_gen_buffer + sizeof(code_gen_buffer);
end += qemu_real_host_page_size - 1;
end &= ~(qemu_real_host_page_size - 1);

mprotect((void *)start, end - start,
PROT_READ | PROT_WRITE | PROT_EXEC);
}
#endif

if (qemu_host_page_size == 0)
qemu_host_page_size = qemu_real_host_page_size;
if (qemu_host_page_size < TARGET_PAGE_SIZE)
Expand Down

0 comments on commit d5a8f07

Please sign in to comment.