]> rtime.felk.cvut.cz Git - l4.git/blob - kernel/fiasco/src/kern/sigma0_task.cpp
Update
[l4.git] / kernel / fiasco / src / kern / sigma0_task.cpp
1 INTERFACE:
2
3 #include "task.h"
4
5 class Sigma0_task : public Task
6 {
7 public:
8   explicit Sigma0_task(Ram_quota *q) : Task(q) {}
9   bool is_sigma0() const { return true; }
10   Address virt_to_phys_s0(void *virt) const
11   { return (Address)virt; }
12 };
13
14
15 IMPLEMENTATION:
16
17 PUBLIC
18 bool
19 Sigma0_task::v_fabricate(Mem_space::Vaddr address,
20                          Mem_space::Phys_addr *phys, Mem_space::Page_order *size,
21                          Mem_space::Attr *attribs = 0)
22 {
23   // special-cased because we don't do ptab lookup for sigma0
24   *size = static_cast<Mem_space const &>(*this).largest_page_size();
25   *phys = cxx::mask_lsb(Virt_addr(address), *size);
26
27   if (attribs)
28     *attribs = Mem_space::Attr(L4_fpage::Rights::URWX());
29
30   return true;
31 }
32
33 PUBLIC inline
34 Page_number
35 Sigma0_task::mem_space_map_max_address() const
36 { return Page_number(1UL << (MWORD_BITS - Mem_space::Page_shift)); }
37