diff options
author | 2015-09-12 10:12:14 +0200 | |
---|---|---|
committer | 2015-09-12 10:12:14 +0200 | |
commit | 115ffcb10a45bca233fa6e22f674d8db8982b7df (patch) | |
tree | b4ccf5ba5c2ff9874fd3c093cc05132aba23c712 /src/lib/netlist/plib/palloc.c | |
parent | 9b5c3ab3e0fdab069b3b2d38af3d007e8403f8a5 (diff) |
Moved netlist from emu to lib (nw)
Diffstat (limited to 'src/lib/netlist/plib/palloc.c')
-rw-r--r-- | src/lib/netlist/plib/palloc.c | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/src/lib/netlist/plib/palloc.c b/src/lib/netlist/plib/palloc.c new file mode 100644 index 00000000000..9b0ee555cbb --- /dev/null +++ b/src/lib/netlist/plib/palloc.c @@ -0,0 +1,58 @@ +// license:GPL-2.0+ +// copyright-holders:Couriersud +/* + * palloc.c + * + */ + +#include <cstdio> + +#include "pconfig.h" +#include "palloc.h" +//============================================================ +// Exceptions +//============================================================ + +pexception::pexception(const pstring &text) +{ + m_text = text; + fprintf(stderr, "%s\n", m_text.cstr()); +} + +#if (PSTANDALONE) +#include <stdlib.h> +#include <xmmintrin.h> + +class pmemory_pool +{ +public: + pmemory_pool() {} +}; + +static pmemory_pool sppool; + +pmemory_pool *ppool = &sppool; + +void* operator new(std::size_t size, pmemory_pool *pool) throw (std::bad_alloc) +{ + //printf("here new\n"); + return palloc_raw(size);; +} + +void operator delete(void *ptr, pmemory_pool *pool) +{ + //printf("here delete\n"); + if (ptr != NULL) + pfree_raw(ptr); +} + +void *palloc_raw(const size_t size) +{ + return _mm_malloc(size, 64); +} + +void pfree_raw(void *p) +{ + _mm_free(p); +} +#endif |