Merge pull request #823 from DavidKarlas/master
[mono.git] / libgc / include / private / pthread_stop_world.h
1 #ifndef GC_PTHREAD_STOP_WORLD_H
2 #define GC_PTHREAD_STOP_WORLD_H
3
4 struct thread_stop_info {
5     int signal;
6     word last_stop_count;       /* GC_last_stop_count value when thread */
7                                 /* last successfully handled a suspend  */
8                                 /* signal.                              */
9     ptr_t stack_ptr;            /* Valid only when stopped.             */
10 #ifdef NACL
11 /* Grab NACL_GC_REG_STORAGE_SIZE pointers off the stack when going into */
12 /* a syscall.  20 is more than we need, but it's an overestimate in case*/
13 /* the instrumented function uses any callee saved registers, they may  */
14 /* be pushed to the stack much earlier.  Also, on amd64 'push' puts 8   */
15 /* bytes on the stack even though our pointers are 4 bytes.             */
16 #ifdef __arm__
17 /* For ARM we save r4-r8, r10-r12, r14 */
18 #define NACL_GC_REG_STORAGE_SIZE 9
19 #else
20 #define NACL_GC_REG_STORAGE_SIZE 20
21 #endif
22     ptr_t reg_storage[NACL_GC_REG_STORAGE_SIZE];
23 #endif
24 };
25     
26 #endif