view mem.c @ 217:acd29e2664c6

Added testcases file. Some fixes to test generator for dealing with indexed mode with base and index reg the same. Added support for blastem headless mode in test runner.
author Mike Pavone <pavone@retrodev.com>
date Sat, 20 Apr 2013 00:29:14 -0700
parents 3e7bfde7606e
children 140af5509ce7
line wrap: on
line source

#include <sys/mman.h>
#include <stddef.h>
#include <stdint.h>
#include <stdlib.h>
#include <unistd.h>
#include "mem.h"

/*
void * alloc_code(size_t *size)
{
	*size += PAGE_SIZE - (*size & (PAGE_SIZE - 1));
	return mmap(NULL, *size, PROT_EXEC | PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
}
*/

/*
void * alloc_code(size_t *size)
{
	char * ret = malloc(*size);
	char * base = (char *)(((intptr_t)ret) & (~(PAGE_SIZE-1)));
	mprotect(base, (ret + *size) - base, PROT_EXEC | PROT_READ | PROT_WRITE);
	return ret;
}
*/

void * alloc_code(size_t *size)
{
	*size += PAGE_SIZE - (*size & (PAGE_SIZE - 1));
	void * ret = sbrk(*size);
	if (ret == ((void *)-1)) {
		return NULL;
	}
	mprotect(ret, *size, PROT_EXEC | PROT_READ | PROT_WRITE);
	return ret;
}