Significant progress to getting pl1$pl1 to compile something, implemented many necess...
[multics_sim.git] / pointer.h
1 #ifndef _POINTER_H
2 #define _POINTER_H
3
4 #include <stdint.h>
5
6 struct pointer {
7   uint64_t modifier : 6;
8   uint64_t tally : 12;
9   uint64_t offset : 18;
10   uint64_t dummy0 : 28;
11 };
12
13 struct itp_pointer {
14   uint64_t modifier : 6;
15   uint64_t tally : 12;
16   int64_t offset : 15;
17   uint64_t pair : 3;
18   uint64_t dummy0 : 28;
19 };
20
21 struct its_pointer {
22   uint64_t modifier0 : 6;
23   uint64_t tally0 : 12;
24   uint64_t segment : 18;
25   uint64_t dummy0 : 28;
26   uint64_t modifier1 : 6;
27   uint64_t tally1 : 12;
28   uint64_t offset : 18;
29   uint64_t dummy1 : 28;
30 };
31
32 struct packed_pointer {
33   uint64_t offset : 18;
34   uint64_t segment : 18;
35   uint64_t dummy0 : 28;
36 };
37
38 struct pointer pointer(int offset);
39 struct itp_pointer itp_pointer(int pair, int offset);
40 struct its_pointer its_pointer(int segment, int offset);
41 struct packed_pointer packed_pointer(int segment, int offset);
42
43 #endif