diff options
Diffstat (limited to 'src/lib/netlist/plib/palloc.c')
-rw-r--r-- | src/lib/netlist/plib/palloc.c | 56 |
1 files changed, 56 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..22dbc1d4e93 --- /dev/null +++ b/src/lib/netlist/plib/palloc.c @@ -0,0 +1,56 @@ +// 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) +{ + return palloc_raw(size);; +} + +void operator delete(void *ptr, pmemory_pool *pool) +{ + 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 |