3 #include <l4/sys/l4int.h>
4 #include <l4/sys/vcpu.h>
6 #include <l4/cxx/bitfield>
15 explicit Hsr(l4_uint32_t ec) : _raw(ec) {}
18 l4_uint32_t raw() const { return _raw; }
20 CXX_BITFIELD_MEMBER(26, 31, ec, _raw);
21 CXX_BITFIELD_MEMBER(25, 25, il, _raw);
22 CXX_BITFIELD_MEMBER(24, 24, cv, _raw);
23 CXX_BITFIELD_MEMBER(20, 23, cond, _raw);
25 /** \pre ec == 0x01 */
26 CXX_BITFIELD_MEMBER( 0, 0, wfe_trapped, _raw);
28 CXX_BITFIELD_MEMBER(17, 19, mcr_opc2, _raw);
29 CXX_BITFIELD_MEMBER(16, 19, mcrr_opc1, _raw);
30 CXX_BITFIELD_MEMBER(14, 16, mcr_opc1, _raw);
31 CXX_BITFIELD_MEMBER(10, 13, mcr_crn, _raw);
32 CXX_BITFIELD_MEMBER(10, 13, mcrr_rt2, _raw);
33 CXX_BITFIELD_MEMBER( 5, 8, mcr_rt, _raw);
34 CXX_BITFIELD_MEMBER( 1, 4, mcr_crm, _raw);
35 CXX_BITFIELD_MEMBER( 0, 0, mcr_read, _raw);
37 CXX_BITFIELD_MEMBER(12, 19, ldc_imm, _raw);
38 CXX_BITFIELD_MEMBER( 5, 8, ldc_rn, _raw);
39 CXX_BITFIELD_MEMBER( 4, 4, ldc_offset_form, _raw);
40 CXX_BITFIELD_MEMBER( 1, 3, ldc_addressing_mode, _raw);
42 CXX_BITFIELD_MEMBER( 5, 5, cpt_simd, _raw);
43 CXX_BITFIELD_MEMBER( 0, 3, cpt_cpnr, _raw);
45 CXX_BITFIELD_MEMBER( 0, 3, bxj_rm, _raw);
47 CXX_BITFIELD_MEMBER( 0, 15, svc_imm, _raw);
49 CXX_BITFIELD_MEMBER(24, 24, pf_isv, _raw);
50 CXX_BITFIELD_MEMBER(22, 23, pf_sas, _raw);
51 CXX_BITFIELD_MEMBER(21, 21, pf_sse, _raw);
52 CXX_BITFIELD_MEMBER(16, 19, pf_srt, _raw);
53 CXX_BITFIELD_MEMBER( 9, 9, pf_ea, _raw);
54 CXX_BITFIELD_MEMBER( 8, 8, pf_cache_maint, _raw);
55 CXX_BITFIELD_MEMBER( 7, 7, pf_s1ptw, _raw);
56 CXX_BITFIELD_MEMBER( 6, 6, pf_write, _raw);
57 CXX_BITFIELD_MEMBER( 0, 5, pf_fsc, _raw);
66 explicit Hcr(l4_uint32_t v) : raw(v) {}
67 CXX_BITFIELD_MEMBER( 0, 0, en, raw);
68 CXX_BITFIELD_MEMBER( 1, 1, uie, raw);
69 CXX_BITFIELD_MEMBER( 2, 2, lr_en_pie, raw);
70 CXX_BITFIELD_MEMBER( 3, 3, n_pie, raw);
71 CXX_BITFIELD_MEMBER( 4, 4, vgrp0_eie, raw);
72 CXX_BITFIELD_MEMBER( 5, 5, vgrp0_die, raw);
73 CXX_BITFIELD_MEMBER( 6, 6, vgrp1_eie, raw);
74 CXX_BITFIELD_MEMBER( 7, 7, vgrp1_die, raw);
75 CXX_BITFIELD_MEMBER( 27, 31, eoi_cnt, raw);
82 explicit Vtr(l4_uint32_t v) : raw(v) {}
83 CXX_BITFIELD_MEMBER( 0, 5, list_regs, raw);
84 CXX_BITFIELD_MEMBER( 26, 28, pre_bits, raw);
85 CXX_BITFIELD_MEMBER( 29, 31, pri_bits, raw);
92 explicit Vmcr(l4_uint32_t v) : raw(v) {}
93 CXX_BITFIELD_MEMBER( 0, 0, grp0_en, raw);
94 CXX_BITFIELD_MEMBER( 1, 1, grp1_en, raw);
95 CXX_BITFIELD_MEMBER( 2, 2, ack_ctl, raw);
96 CXX_BITFIELD_MEMBER( 3, 3, fiq_en, raw);
97 CXX_BITFIELD_MEMBER( 4, 4, cbpr, raw);
98 CXX_BITFIELD_MEMBER( 9, 9, vem, raw);
99 CXX_BITFIELD_MEMBER( 18, 20, abp, raw);
100 CXX_BITFIELD_MEMBER( 21, 23, bp, raw);
101 CXX_BITFIELD_MEMBER( 27, 31, pri_mask, raw);
108 explicit Misr(l4_uint32_t v) : raw(v) {}
109 CXX_BITFIELD_MEMBER( 0, 0, eoi, raw);
110 CXX_BITFIELD_MEMBER( 1, 1, u, raw);
111 CXX_BITFIELD_MEMBER( 2, 2, lrenp, raw);
112 CXX_BITFIELD_MEMBER( 3, 3, np, raw);
113 CXX_BITFIELD_MEMBER( 4, 4, grp0_e, raw);
114 CXX_BITFIELD_MEMBER( 5, 5, grp0_d, raw);
115 CXX_BITFIELD_MEMBER( 6, 6, grp1_e, raw);
116 CXX_BITFIELD_MEMBER( 7, 7, grp1_d, raw);
126 Active_and_pending = 3
131 explicit Lr(l4_uint32_t v) : raw(v) {}
132 CXX_BITFIELD_MEMBER( 0, 9, vid, raw);
133 CXX_BITFIELD_MEMBER( 10, 19, pid, raw);
134 CXX_BITFIELD_MEMBER( 10, 12, cpuid, raw);
135 CXX_BITFIELD_MEMBER( 19, 19, eoi, raw);
136 CXX_BITFIELD_MEMBER( 23, 27, prio, raw);
137 CXX_BITFIELD_MEMBER( 28, 29, state, raw);
138 CXX_BITFIELD_MEMBER( 28, 28, pending, raw);
139 CXX_BITFIELD_MEMBER( 29, 29, active, raw);
140 CXX_BITFIELD_MEMBER( 30, 30, grp1, raw);
141 CXX_BITFIELD_MEMBER( 31, 31, hw, raw);
164 l4_uint32_t contextidr;
169 template< unsigned LREGS >
182 typedef Gic_t<4> Gic;
190 l4_uint64_t cntv_cval;
192 l4_uint32_t cntv_ctl;
196 vm_state(l4_vcpu_state_t *vcpu)
198 return reinterpret_cast<State *>(reinterpret_cast<char *>(vcpu) + 0x400);