]> rtime.felk.cvut.cz Git - l4.git/blob - kernel/fiasco/src/kern/ppc32/sys_call_page-ppc32.cpp
update
[l4.git] / kernel / fiasco / src / kern / ppc32 / sys_call_page-ppc32.cpp
1 INTERFACE:
2
3 #include "types.h"
4
5 //------------------------------------------------------------------------------
6 IMPLEMENTATION:
7
8 #include "mem_layout.h"
9 #include "kernel_task.h"
10 #include "mem_space.h"
11 #include "vmem_alloc.h"
12
13 IMPLEMENT static
14 void
15 Sys_call_page::init()
16 {
17 #if 0
18   Mword *sys_calls = (Mword *)Mem_layout::Syscalls_phys;
19   for(unsigned i = 0; i < Config::PAGE_SIZE; i += sizeof(Mword))
20     *(sys_calls++) = 0x44000002; //sc
21
22   //insert in cache
23   Kernel_task::kernel_task()->mem_space()->v_insert(
24         Mem_space::Phys_addr(Mem_layout::Syscalls_phys),
25         Mem_space::Addr(Mem_layout::Syscalls),
26         Mem_space::Size(Config::PAGE_SIZE),
27         Mem_space::Page_cacheable | Mem_space::Page_user_accessible
28   );
29
30   //insert in htab
31   Kernel_task::kernel_task()->mem_space()->try_htab_fault(Mem_layout::Syscalls);
32 #endif
33
34
35   Mword *sys_calls = (Mword*)Mem_layout::Syscalls;
36   if (!Vmem_alloc::page_alloc(sys_calls,
37                               Vmem_alloc::NO_ZERO_FILL, Vmem_alloc::User))
38     panic("FIASCO: can't allocate system-call page.\n");
39   for (unsigned i = 0; i < Config::PAGE_SIZE; i += sizeof(Mword))
40     *(sys_calls++) = 0x44000002; //sc
41
42   Kernel_task::kernel_task()
43     ->set_attributes(Virt_addr(Mem_layout::Syscalls),
44                      Page::Attr(Page::Rights::URX(), Page::Type::Normal(),
45                                 Page::Kern::Global()));
46
47   //Mem_unit::flush_cache();
48 }