]> rtime.felk.cvut.cz Git - l4.git/blob - kernel/fiasco/src/kern/ia32/64/mapping-ia32-64.cpp
Inital import
[l4.git] / kernel / fiasco / src / kern / ia32 / 64 / mapping-ia32-64.cpp
1 INTERFACE [amd64]:
2
3 #include "types.h"
4 class Space;
5 class Treemap;
6
7 class Mapping_entry
8 {
9 public:
10   enum { Alignment = 1 };
11   union 
12   {
13     struct 
14     {
15       unsigned long _space:32;  ///< Address-space number
16 /*      unsigned long _pad:1;*/
17       unsigned long address:36; ///< Virtual address in address space
18       unsigned long tag:11;             ///< Unmap tag
19     } data;
20     Treemap *_submap;
21   };
22   Unsigned8 _depth;
23
24   void set_space(Space *s) { data._space = (unsigned long)s & 0x0ffffffffUL; }
25   Space *space() const
26   { return (Space*)(0xffffffff00000000UL | (unsigned long)data._space); }
27 } __attribute__((packed));
28
29