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@178: void switchToVP(VirtProcr *nextProcr); Me@178: Me@178: void switchToCoreLoop(VirtProcr *nextProcr); Me@178: Me@178: void masterSwitchToCoreLoop(VirtProcr *nextProcr); Me@178: Me@178: void startVirtProcrFn(); Me@178: Me@178: void *asmTerminateCoreLoop(VirtProcr *currPr); Me@178: Me@178: #define flushRegisters() \ Me@178: asm volatile ("":::"%rbx", "%r12", "%r13","%r14","%r15") Me@178: Me@178: inline VirtProcr * Me@178: create_procr_helper( VirtProcr *newPr, VirtProcrFnPtr fnPtr, Me@178: void *initialData, void *stackLocs ); Me@178: Me@178: #endif /* _ProcrContext_H */ Me@178: