entry-common.c (8bd7f91c03d886f41d35f6108078d20be5a4a1bd) | entry-common.c (8d56e5c5a99ce1d17d39ce5a8260e42c2a2d7682) |
---|---|
1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Exception handling code 4 * 5 * Copyright (C) 2019 ARM Ltd. 6 */ 7 8#include <linux/context_tracking.h> --- 268 unchanged lines hidden (view full) --- 277 278 set_irq_regs(old_regs); 279} 280 281extern void (*handle_arch_irq)(struct pt_regs *); 282extern void (*handle_arch_fiq)(struct pt_regs *); 283 284static void noinstr __panic_unhandled(struct pt_regs *regs, const char *vector, | 1// SPDX-License-Identifier: GPL-2.0 2/* 3 * Exception handling code 4 * 5 * Copyright (C) 2019 ARM Ltd. 6 */ 7 8#include <linux/context_tracking.h> --- 268 unchanged lines hidden (view full) --- 277 278 set_irq_regs(old_regs); 279} 280 281extern void (*handle_arch_irq)(struct pt_regs *); 282extern void (*handle_arch_fiq)(struct pt_regs *); 283 284static void noinstr __panic_unhandled(struct pt_regs *regs, const char *vector, |
285 unsigned int esr) | 285 unsigned long esr) |
286{ 287 arm64_enter_nmi(regs); 288 289 console_verbose(); 290 | 286{ 287 arm64_enter_nmi(regs); 288 289 console_verbose(); 290 |
291 pr_crit("Unhandled %s exception on CPU%d, ESR 0x%08x -- %s\n", | 291 pr_crit("Unhandled %s exception on CPU%d, ESR 0x%016lx -- %s\n", |
292 vector, smp_processor_id(), esr, 293 esr_get_class_string(esr)); 294 295 __show_regs(regs); 296 panic("Unhandled exception"); 297} 298 299#define UNHANDLED(el, regsize, vector) \ --- 232 unchanged lines hidden (view full) --- 532static void noinstr el0_sve_acc(struct pt_regs *regs, unsigned long esr) 533{ 534 enter_from_user_mode(regs); 535 local_daif_restore(DAIF_PROCCTX); 536 do_sve_acc(esr, regs); 537 exit_to_user_mode(regs); 538} 539 | 292 vector, smp_processor_id(), esr, 293 esr_get_class_string(esr)); 294 295 __show_regs(regs); 296 panic("Unhandled exception"); 297} 298 299#define UNHANDLED(el, regsize, vector) \ --- 232 unchanged lines hidden (view full) --- 532static void noinstr el0_sve_acc(struct pt_regs *regs, unsigned long esr) 533{ 534 enter_from_user_mode(regs); 535 local_daif_restore(DAIF_PROCCTX); 536 do_sve_acc(esr, regs); 537 exit_to_user_mode(regs); 538} 539 |
540static void noinstr el0_sme_acc(struct pt_regs *regs, unsigned long esr) 541{ 542 enter_from_user_mode(regs); 543 local_daif_restore(DAIF_PROCCTX); 544 do_sme_acc(esr, regs); 545 exit_to_user_mode(regs); 546} 547 | |
548static void noinstr el0_fpsimd_exc(struct pt_regs *regs, unsigned long esr) 549{ 550 enter_from_user_mode(regs); 551 local_daif_restore(DAIF_PROCCTX); 552 do_fpsimd_exc(esr, regs); 553 exit_to_user_mode(regs); 554} 555 --- 92 unchanged lines hidden (view full) --- 648 el0_ia(regs, esr); 649 break; 650 case ESR_ELx_EC_FP_ASIMD: 651 el0_fpsimd_acc(regs, esr); 652 break; 653 case ESR_ELx_EC_SVE: 654 el0_sve_acc(regs, esr); 655 break; | 540static void noinstr el0_fpsimd_exc(struct pt_regs *regs, unsigned long esr) 541{ 542 enter_from_user_mode(regs); 543 local_daif_restore(DAIF_PROCCTX); 544 do_fpsimd_exc(esr, regs); 545 exit_to_user_mode(regs); 546} 547 --- 92 unchanged lines hidden (view full) --- 640 el0_ia(regs, esr); 641 break; 642 case ESR_ELx_EC_FP_ASIMD: 643 el0_fpsimd_acc(regs, esr); 644 break; 645 case ESR_ELx_EC_SVE: 646 el0_sve_acc(regs, esr); 647 break; |
656 case ESR_ELx_EC_SME: 657 el0_sme_acc(regs, esr); 658 break; | |
659 case ESR_ELx_EC_FP_EXC64: 660 el0_fpsimd_exc(regs, esr); 661 break; 662 case ESR_ELx_EC_SYS64: 663 case ESR_ELx_EC_WFx: 664 el0_sys(regs, esr); 665 break; 666 case ESR_ELx_EC_SP_ALIGN: --- 157 unchanged lines hidden (view full) --- 824UNHANDLED(el0t, 32, irq) 825UNHANDLED(el0t, 32, fiq) 826UNHANDLED(el0t, 32, error) 827#endif /* CONFIG_COMPAT */ 828 829#ifdef CONFIG_VMAP_STACK 830asmlinkage void noinstr handle_bad_stack(struct pt_regs *regs) 831{ | 648 case ESR_ELx_EC_FP_EXC64: 649 el0_fpsimd_exc(regs, esr); 650 break; 651 case ESR_ELx_EC_SYS64: 652 case ESR_ELx_EC_WFx: 653 el0_sys(regs, esr); 654 break; 655 case ESR_ELx_EC_SP_ALIGN: --- 157 unchanged lines hidden (view full) --- 813UNHANDLED(el0t, 32, irq) 814UNHANDLED(el0t, 32, fiq) 815UNHANDLED(el0t, 32, error) 816#endif /* CONFIG_COMPAT */ 817 818#ifdef CONFIG_VMAP_STACK 819asmlinkage void noinstr handle_bad_stack(struct pt_regs *regs) 820{ |
832 unsigned int esr = read_sysreg(esr_el1); | 821 unsigned long esr = read_sysreg(esr_el1); |
833 unsigned long far = read_sysreg(far_el1); 834 835 arm64_enter_nmi(regs); 836 panic_bad_stack(regs, esr, far); 837} 838#endif /* CONFIG_VMAP_STACK */ 839 840#ifdef CONFIG_ARM_SDE_INTERFACE --- 34 unchanged lines hidden --- | 822 unsigned long far = read_sysreg(far_el1); 823 824 arm64_enter_nmi(regs); 825 panic_bad_stack(regs, esr, far); 826} 827#endif /* CONFIG_VMAP_STACK */ 828 829#ifdef CONFIG_ARM_SDE_INTERFACE --- 34 unchanged lines hidden --- |