summaryrefslogtreecommitdiff
path: root/includes/rts/storage/Liveness.h
blob: 66c82f3134d33f4a52c1fe967771d4b69fea19b3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/* -----------------------------------------------------------------------------
 *
 * (c) The University of Glasgow 2004
 *
 * Building liveness masks for RET_DYN stack frames.
 * A few macros that are used in both .cmm and .c sources.
 *
 * A liveness mask is constructed like so:
 *
 *    R1_PTR & R2_PTR & R3_PTR
 *
 * -------------------------------------------------------------------------- */

#ifndef RTS_STORAGE_LIVENESS_H
#define RTS_STORAGE_LIVENESS_H

#define NO_PTRS   0xff
#define R1_PTR	  (NO_PTRS ^ (1<<0))
#define R2_PTR	  (NO_PTRS ^ (1<<1))
#define R3_PTR	  (NO_PTRS ^ (1<<2))
#define R4_PTR	  (NO_PTRS ^ (1<<3))
#define R5_PTR	  (NO_PTRS ^ (1<<4))
#define R6_PTR	  (NO_PTRS ^ (1<<5))
#define R7_PTR	  (NO_PTRS ^ (1<<6))
#define R8_PTR	  (NO_PTRS ^ (1<<7))

#define N_NONPTRS(n)  ((n)<<16)
#define N_PTRS(n)     ((n)<<24)

#define RET_DYN_NONPTRS(l) ((l)>>16 & 0xff)
#define RET_DYN_PTRS(l)    ((l)>>24 & 0xff)
#define RET_DYN_LIVENESS(l) ((l) & 0xffff)

#endif /* RTS_STORAGE_LIVENESS_H */