]> rtime.felk.cvut.cz Git - l4.git/blob - kernel/fiasco/src/kern/ppc32/kmem.cpp
Inital import
[l4.git] / kernel / fiasco / src / kern / ppc32 / kmem.cpp
1 INTERFACE [ppc32]:
2
3 #include "paging.h"
4
5 class Page_table;
6
7 class Kmem : public Mem_layout
8 {
9 public:
10   static Pdir *kdir();
11   static Pdir *dir();
12
13   static Mword *kernel_sp();
14   static void kernel_sp(Mword *);
15
16   static Mword is_tcb_page_fault( Mword pfa, Mword error );
17   static Mword is_kmem_page_fault( Mword pfa, Mword error );
18   static Mword is_io_bitmap_page_fault( Mword pfa );
19
20   static Address virt_to_phys(const void *addr);
21 private:
22   static Pdir *_kdir;
23   static Mword *_sp;
24 };
25
26 //---------------------------------------------------------------------------
27 IMPLEMENTATION [ppc32]:
28
29 #include "mem_layout.h"
30 #include "paging.h"
31 #include "panic.h"
32
33 char kernel_page_directory[sizeof(Pdir)];
34 Pdir *Kmem::_kdir = (Pdir *)&kernel_page_directory;
35 Mword *Kmem::_sp = 0;
36
37 IMPLEMENT inline
38 Pdir *Kmem::kdir()
39 { return _kdir; }
40
41 IMPLEMENT inline
42 Pdir *Kmem::dir()
43 { return _kdir; }
44
45 IMPLEMENT inline
46 Mword *Kmem::kernel_sp()
47 { return _sp;}
48
49 IMPLEMENT inline
50 void Kmem::kernel_sp(Mword *sp)
51 { _sp = sp; }
52
53 PUBLIC static inline NEEDS["mem_layout.h", "panic.h"]
54 Address Kmem::ipc_window(unsigned /*win*/)
55 {
56   panic("%s not implemented", __PRETTY_FUNCTION__);
57   return 0;
58 }
59
60 IMPLEMENT inline NEEDS["paging.h"]
61 Address Kmem::virt_to_phys(const void *addr)
62 {
63   Address a = reinterpret_cast<Address>(addr);
64   return kdir()->virt_to_phys(a);
65 }
66
67 //------------------------------------------------------------------------------
68 /*
69  * dummy implementations 
70  */
71
72 IMPLEMENT inline
73 Mword Kmem::is_kmem_page_fault(Mword pfa, Mword /*error*/)
74 {
75   return in_kernel(pfa);
76 }
77
78 IMPLEMENT inline
79 Mword Kmem::is_tcb_page_fault(Mword /*pfa*/, Mword /*error*/ )
80 {
81   return 0;
82 }
83
84 IMPLEMENT inline
85 Mword Kmem::is_io_bitmap_page_fault( Mword /*pfa*/ )
86 {
87   return 0;
88 }