#include "mem.h"
-#ifdef RAW
+#ifdef MULTICORE
#include "runtime.h"
-#include <raw.h>
+#include "runtime_arch.h"
/*void * m_calloc(int m, int size) {
- void * p = malloc(m*size);
- int i = 0;
- for(i = 0; i < size; ++i) {
- *(char *)(p+i) = 0;
- }
- return p;
-}*/
+ void * p = malloc(m*size);
+ int i = 0;
+ for(i = 0; i < size; ++i) {
+ *(char *)(p+i) = 0;
+ }
+ return p;
+ }*/
void * mycalloc(int m, int size) {
- void * p = NULL;
- int isize = 2*kCacheLineSize-4+(size-1)&(~kCacheLineMask);
- raw_test_pass(0xdd00);
-#ifdef INTERRUPT
- // shut down interrupt
- raw_user_interrupts_off();
-#endif
- p = calloc(m, isize);
- //p = m_calloc(m, isize);
- raw_test_pass_reg(p);
- raw_test_pass_reg((kCacheLineSize+((int)p-1)&(~kCacheLineMask)));
-#ifdef INTERRUPT
- // re-open interruption
- raw_user_interrupts_on();
-#endif
- return (void *)(kCacheLineSize+((int)p-1)&(~kCacheLineMask));
+ void * p = NULL;
+ int isize = 2*BAMBOO_CACHE_LINE_SIZE-4+(size-1)&(~BAMBOO_CACHE_LINE_MASK);
+ BAMBOO_START_CRITICAL_SECTION_MEM();
+ p = BAMBOO_SHARE_MEM_CALLOC(m, isize); // calloc(m, isize);
+ BAMBOO_CLOSE_CRITICAL_SECTION_MEM();
+ return (void *)(BAMBOO_CACHE_LINE_SIZE+((int)p-1)&(~BAMBOO_CACHE_LINE_MASK));
}
void * mycalloc_i(int m, int size) {
- void * p = NULL;
- int isize = 2*kCacheLineSize-4+(size-1)&(~kCacheLineMask);
- raw_test_pass(0xdd00);
- p = calloc(m, isize);
- //p = m_calloc(m, isize);
- raw_test_pass_reg(p);
- raw_test_pass_reg((kCacheLineSize+((int)p-1)&(~kCacheLineMask)));
- return (void *)(kCacheLineSize+((int)p-1)&(~kCacheLineMask));
+ void * p = NULL;
+ int isize = 2*BAMBOO_CACHE_LINE_SIZE-4+(size-1)&(~BAMBOO_CACHE_LINE_MASK);
+ p = BAMBOO_SHARE_MEM_CALLOC(m, isize); // calloc(m, isize);
+ return (void *)(BAMBOO_CACHE_LINE_SIZE+((int)p-1)&(~BAMBOO_CACHE_LINE_MASK));
}
void myfree(void * ptr) {
- return;
+ return;
}
#endif