| 
									
										
										
										
											2009-05-02 05:04:19 -04:00
										 |  |  | #include <ucontext.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-04 02:46:13 -04:00
										 |  |  | namespace factor | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-14 00:37:28 -04:00
										 |  |  | inline static unsigned int uap_fpu_status(void *uap) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2010-02-06 02:06:26 -05:00
										 |  |  | 	ucontext_t *ucontext = (ucontext_t *)uap; | 
					
						
							|  |  |  | 	return ucontext->uc_mcontext.fpregs->swd | 
					
						
							|  |  |  | 		| ucontext->uc_mcontext.fpregs->mxcsr; | 
					
						
							| 
									
										
										
										
											2009-09-14 00:37:28 -04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | inline static void uap_clear_fpu_status(void *uap) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2010-02-06 02:06:26 -05:00
										 |  |  | 	ucontext_t *ucontext = (ucontext_t *)uap; | 
					
						
							|  |  |  | 	ucontext->uc_mcontext.fpregs->swd = 0; | 
					
						
							|  |  |  | 	ucontext->uc_mcontext.fpregs->mxcsr &= 0xffffffc0; | 
					
						
							| 
									
										
										
										
											2009-09-14 00:37:28 -04:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-10-22 06:22:59 -04:00
										 |  |  | #define UAP_STACK_POINTER(ucontext) (((ucontext_t *)ucontext)->uc_mcontext.gregs[15])
 | 
					
						
							|  |  |  | #define UAP_PROGRAM_COUNTER(ucontext) (((ucontext_t *)ucontext)->uc_mcontext.gregs[16])
 | 
					
						
							| 
									
										
										
										
											2011-05-20 18:11:50 -04:00
										 |  |  | #define UAP_SET_TOC_POINTER(uap, ptr) (void)0
 | 
					
						
							| 
									
										
										
										
											2009-05-04 02:46:13 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-05-20 18:11:50 -04:00
										 |  |  | #define CODE_TO_FUNCTION_POINTER(code) (void)0
 | 
					
						
							|  |  |  | #define CODE_TO_FUNCTION_POINTER_CALLBACK(vm, code) (void)0
 | 
					
						
							|  |  |  | #define FUNCTION_CODE_POINTER(ptr) ptr
 | 
					
						
							|  |  |  | #define FUNCTION_TOC_POINTER(ptr) ptr
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define UAP_STACK_POINTER_TYPE greg_t
 | 
					
						
							| 
									
										
										
										
											2011-11-25 21:58:21 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2011-11-30 15:39:21 -05:00
										 |  |  | /* Must match the leaf-stack-frame-size, signal-handler-stack-frame-size,
 | 
					
						
							|  |  |  | and stack-frame-size constants in basis/cpu/x86/64/unix/bootstrap.factor */ | 
					
						
							| 
									
										
										
										
											2011-12-13 18:13:32 -05:00
										 |  |  | static const unsigned LEAF_FRAME_SIZE = 16; | 
					
						
							| 
									
										
										
										
											2011-12-13 22:31:59 -05:00
										 |  |  | static const unsigned SIGNAL_HANDLER_STACK_FRAME_SIZE = 160; | 
					
						
							| 
									
										
										
										
											2011-11-25 21:58:21 -05:00
										 |  |  | static const unsigned JIT_FRAME_SIZE = 32; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-05-04 02:46:13 -04:00
										 |  |  | } |