Me@178: /* Me@178: * Copyright 2009 OpenSourceStewardshipFoundation.org Me@178: * Licensed under GNU General Public License version 2 Me@178: * Me@178: * Author: seanhalle@yahoo.com Me@178: * Me@178: */ Me@178: Me@178: #ifndef _ProcrContext_H Me@178: #define _ProcrContext_H Me@178: #define _GNU_SOURCE Me@178: Me@178: void saveCoreLoopReturnAddr(void **returnAddress); Me@178: Me@200: void switchToVP(SlaveVP *nextProcr); Me@178: Me@200: void switchToCoreLoop(SlaveVP *nextProcr); Me@178: Me@200: void masterSwitchToCoreLoop(SlaveVP *nextProcr); Me@178: Me@200: void startVPFn(); Me@178: Me@200: void *asmTerminateCoreLoop(SlaveVP *currPr); Me@178: Me@178: #define flushRegisters() \ Me@178: asm volatile ("":::"%rbx", "%r12", "%r13","%r14","%r15") Me@178: Me@200: inline SlaveVP * Me@200: create_procr_helper( SlaveVP *newPr, VirtProcrFnPtr fnPtr, Me@178: void *initialData, void *stackLocs ); Me@178: Me@178: #endif /* _ProcrContext_H */ Me@178: