2 * Fiasco Kernel-Entry Frame-Layout Code for ARM
8 EXTENSION class Syscall_frame
16 EXTENSION class Return_frame
27 //---------------------------------------------------------------------------
33 void Syscall_frame::dump()
35 printf(" R0: %08lx R1: %08lx R2: %08lx R3: %08lx\n",
36 r[0], r[1], r[2], r[3]);
37 printf(" R4: %08lx R5: %08lx R6: %08lx R7: %08lx\n",
38 r[4], r[5], r[6], r[7]);
39 printf(" R8: %08lx R9: %08lx R10: %08lx R11: %08lx\n",
40 r[8], r[9], r[10], r[11]);
41 printf("R12: %08lx\n", r[12]);
46 Return_frame::ip() const
47 { return Return_frame::pc; }
51 Return_frame::ip_syscall_page_user() const
52 { return Return_frame::pc; }
56 Return_frame::ip(Mword _pc)
57 { Return_frame::pc = _pc; }
61 Return_frame::sp() const
62 { return Return_frame::usp; }
66 Return_frame::sp(Mword sp)
67 { Return_frame::usp = sp; }
69 //---------------------------------------------------------------------------
71 Mword Syscall_frame::next_period() const
75 void Syscall_frame::from(Mword id)
79 Mword Syscall_frame::from_spec() const
84 L4_obj_ref Syscall_frame::ref() const
85 { return L4_obj_ref::from_raw(r[2]); }
88 void Syscall_frame::ref(L4_obj_ref const &ref)
92 L4_timeout_pair Syscall_frame::timeout() const
93 { return L4_timeout_pair(r[3]); }
96 void Syscall_frame::timeout(L4_timeout_pair const &to)
99 IMPLEMENT inline Utcb *Syscall_frame::utcb() const
100 { return reinterpret_cast<Utcb*>(r[1]); }
102 IMPLEMENT inline L4_msg_tag Syscall_frame::tag() const
103 { return L4_msg_tag(r[0]); }
106 void Syscall_frame::tag(L4_msg_tag const &tag)
107 { r[0] = tag.raw(); }