Lines Matching refs:hsr

553     const union hsr esr = {  in inject_undef64_exception()
580 union hsr esr = { in inject_abt64_exception()
623 void inject_undef_exception(struct cpu_user_regs *regs, const union hsr hsr) in inject_undef_exception() argument
629 inject_undef64_exception(regs, hsr.len); in inject_undef_exception()
660 const union hsr hsr = { .bits = regs->hsr }; in inject_vabt_exception() local
667 switch ( hsr.ec ) in inject_vabt_exception()
677 regs->pc -= hsr.len ? 4 : 2; in inject_vabt_exception()
971 printk(" ESR_EL2: %08"PRIx32"\n", regs->hsr); in _show_registers()
1336 static void do_trap_brk(struct cpu_user_regs *regs, const union hsr hsr) in do_trap_brk() argument
1343 switch (hsr.brk.comment) in do_trap_brk()
1599 int check_conditional_instr(struct cpu_user_regs *regs, const union hsr hsr) in check_conditional_instr() argument
1617 if ( hsr.ec == HSR_EC_SMC32 && hsr.smc32.ccknownpass == 0 ) in check_conditional_instr()
1621 if ( hsr.ec == HSR_EC_UNKNOWN || in check_conditional_instr()
1622 (hsr.ec >= 0x10 && hsr.ec != HSR_EC_SMC32) ) in check_conditional_instr()
1626 cond = hsr.cond.ccvalid ? hsr.cond.cc : -1; in check_conditional_instr()
1661 void advance_pc(struct cpu_user_regs *regs, const union hsr hsr) in advance_pc() argument
1698 regs->pc += hsr.len ? 4 : 2; in advance_pc()
1705 const union hsr hsr, in handle_raz_wi() argument
1711 return inject_undef_exception(regs, hsr); in handle_raz_wi()
1717 advance_pc(regs, hsr); in handle_raz_wi()
1724 const union hsr hsr, in handle_wo_wi() argument
1730 return inject_undef_exception(regs, hsr); in handle_wo_wi()
1733 return inject_undef_exception(regs, hsr); in handle_wo_wi()
1736 advance_pc(regs, hsr); in handle_wo_wi()
1743 const union hsr hsr, in handle_ro_raz() argument
1749 return inject_undef_exception(regs, hsr); in handle_ro_raz()
1752 return inject_undef_exception(regs, hsr); in handle_ro_raz()
1757 advance_pc(regs, hsr); in handle_ro_raz()
1866 const union hsr hsr) in do_trap_instr_abort_guest() argument
1870 uint8_t fsc = hsr.iabt.ifsc & ~FSC_LL_MASK; in do_trap_instr_abort_guest()
1881 if ( hsr.iabt.eat ) in do_trap_instr_abort_guest()
1885 if ( hpfar_is_valid(hsr.iabt.s1ptw, fsc) ) in do_trap_instr_abort_guest()
1914 .kind = hsr.iabt.s1ptw ? npfec_kind_in_gpt : npfec_kind_with_gla in do_trap_instr_abort_guest()
1935 inject_iabt_exception(regs, gva, hsr.len); in do_trap_instr_abort_guest()
2000 const union hsr hsr) in do_trap_data_abort_guest() argument
2002 const struct hsr_dabt dabt = hsr.dabt; in do_trap_data_abort_guest()
2005 uint8_t fsc = hsr.dabt.dfsc & ~FSC_LL_MASK; in do_trap_data_abort_guest()
2058 advance_pc(regs, hsr); in do_trap_data_abort_guest()
2077 hsr.bits, dabt.dfsc); in do_trap_data_abort_guest()
2081 " gpa=%#"PRIpaddr"\n", hsr.bits, regs->pc, info.gva, info.gpa); in do_trap_data_abort_guest()
2082 inject_dabt_exception(regs, info.gva, hsr.len); in do_trap_data_abort_guest()
2104 const union hsr hsr = { .bits = regs->hsr }; in do_trap_guest_sync() local
2108 switch (hsr.ec) { in do_trap_guest_sync()
2116 if ( !check_conditional_instr(regs, hsr) ) in do_trap_guest_sync()
2118 advance_pc(regs, hsr); in do_trap_guest_sync()
2121 if ( hsr.wfi_wfe.ti ) { in do_trap_guest_sync()
2130 advance_pc(regs, hsr); in do_trap_guest_sync()
2135 do_cp15_32(regs, hsr); in do_trap_guest_sync()
2140 do_cp15_64(regs, hsr); in do_trap_guest_sync()
2145 do_cp14_32(regs, hsr); in do_trap_guest_sync()
2150 do_cp14_64(regs, hsr); in do_trap_guest_sync()
2155 do_cp14_dbg(regs, hsr); in do_trap_guest_sync()
2160 do_cp(regs, hsr); in do_trap_guest_sync()
2171 do_trap_smc(regs, hsr); in do_trap_guest_sync()
2177 if ( (hsr.iss & 0xff00) == 0xff00 ) in do_trap_guest_sync()
2178 return do_debug_trap(regs, hsr.iss & 0x00ff); in do_trap_guest_sync()
2180 if ( hsr.iss == 0 ) in do_trap_guest_sync()
2182 do_trap_hypercall(regs, (register_t *)&regs->r12, hsr.iss); in do_trap_guest_sync()
2189 if ( (hsr.iss & 0xff00) == 0xff00 ) in do_trap_guest_sync()
2190 return do_debug_trap(regs, hsr.iss & 0x00ff); in do_trap_guest_sync()
2192 if ( hsr.iss == 0 ) in do_trap_guest_sync()
2194 do_trap_hypercall(regs, &regs->x16, hsr.iss); in do_trap_guest_sync()
2204 do_trap_smc(regs, hsr); in do_trap_guest_sync()
2209 do_sysreg(regs, hsr); in do_trap_guest_sync()
2215 do_trap_instr_abort_guest(regs, hsr); in do_trap_guest_sync()
2219 do_trap_data_abort_guest(regs, hsr); in do_trap_guest_sync()
2225 hsr.bits, hsr.ec, hsr.len, hsr.iss); in do_trap_guest_sync()
2226 inject_undef_exception(regs, hsr); in do_trap_guest_sync()
2232 const union hsr hsr = { .bits = regs->hsr }; in do_trap_hyp_sync() local
2236 switch ( hsr.ec ) in do_trap_hyp_sync()
2240 do_trap_brk(regs, hsr); in do_trap_hyp_sync()
2246 bool is_data = (hsr.ec == HSR_EC_DATA_ABORT_CURR_EL); in do_trap_hyp_sync()
2249 printk("%s Trap. Syndrome=%#x\n", fault, hsr.iss); in do_trap_hyp_sync()
2254 if ( hsr.xabt.fsc == FSC_SEA && hsr.xabt.fnv ) in do_trap_hyp_sync()
2265 hsr.bits, hsr.ec, hsr.len, hsr.iss); in do_trap_hyp_sync()