traps.c (f82796214a95b1ec00c2f121c1080d10f2b099a1) traps.c (ce48b2100785e5ca629fb3aa8e3b50aca808f692)
1/*
2 * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org)
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version
7 * 2 of the License, or (at your option) any later version.
8 *

--- 953 unchanged lines hidden (view full) ---

962 return;
963 }
964
965 printk(KERN_EMERG "Unrecoverable VMX/Altivec Unavailable Exception "
966 "%lx at %lx\n", regs->trap, regs->nip);
967 die("Unrecoverable VMX/Altivec Unavailable Exception", regs, SIGABRT);
968}
969
1/*
2 * Copyright (C) 1995-1996 Gary Thomas (gdt@linuxppc.org)
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version
7 * 2 of the License, or (at your option) any later version.
8 *

--- 953 unchanged lines hidden (view full) ---

962 return;
963 }
964
965 printk(KERN_EMERG "Unrecoverable VMX/Altivec Unavailable Exception "
966 "%lx at %lx\n", regs->trap, regs->nip);
967 die("Unrecoverable VMX/Altivec Unavailable Exception", regs, SIGABRT);
968}
969
970void vsx_unavailable_exception(struct pt_regs *regs)
971{
972 if (user_mode(regs)) {
973 /* A user program has executed an vsx instruction,
974 but this kernel doesn't support vsx. */
975 _exception(SIGILL, regs, ILL_ILLOPC, regs->nip);
976 return;
977 }
978
979 printk(KERN_EMERG "Unrecoverable VSX Unavailable Exception "
980 "%lx at %lx\n", regs->trap, regs->nip);
981 die("Unrecoverable VSX Unavailable Exception", regs, SIGABRT);
982}
983
970void performance_monitor_exception(struct pt_regs *regs)
971{
972 perf_irq(regs);
973}
974
975#ifdef CONFIG_8xx
976void SoftwareEmulation(struct pt_regs *regs)
977{

--- 116 unchanged lines hidden (view full) ---

1094 if (printk_ratelimit())
1095 printk(KERN_ERR "Unrecognized altivec instruction "
1096 "in %s at %lx\n", current->comm, regs->nip);
1097 current->thread.vscr.u[3] |= 0x10000;
1098 }
1099}
1100#endif /* CONFIG_ALTIVEC */
1101
984void performance_monitor_exception(struct pt_regs *regs)
985{
986 perf_irq(regs);
987}
988
989#ifdef CONFIG_8xx
990void SoftwareEmulation(struct pt_regs *regs)
991{

--- 116 unchanged lines hidden (view full) ---

1108 if (printk_ratelimit())
1109 printk(KERN_ERR "Unrecognized altivec instruction "
1110 "in %s at %lx\n", current->comm, regs->nip);
1111 current->thread.vscr.u[3] |= 0x10000;
1112 }
1113}
1114#endif /* CONFIG_ALTIVEC */
1115
1116#ifdef CONFIG_VSX
1117void vsx_assist_exception(struct pt_regs *regs)
1118{
1119 if (!user_mode(regs)) {
1120 printk(KERN_EMERG "VSX assist exception in kernel mode"
1121 " at %lx\n", regs->nip);
1122 die("Kernel VSX assist exception", regs, SIGILL);
1123 }
1124
1125 flush_vsx_to_thread(current);
1126 printk(KERN_INFO "VSX assist not supported at %lx\n", regs->nip);
1127 _exception(SIGILL, regs, ILL_ILLOPC, regs->nip);
1128}
1129#endif /* CONFIG_VSX */
1130
1102#ifdef CONFIG_FSL_BOOKE
1103void CacheLockingException(struct pt_regs *regs, unsigned long address,
1104 unsigned long error_code)
1105{
1106 /* We treat cache locking instructions from the user
1107 * as priv ops, in the future we could try to do
1108 * something smarter
1109 */

--- 88 unchanged lines hidden ---
1131#ifdef CONFIG_FSL_BOOKE
1132void CacheLockingException(struct pt_regs *regs, unsigned long address,
1133 unsigned long error_code)
1134{
1135 /* We treat cache locking instructions from the user
1136 * as priv ops, in the future we could try to do
1137 * something smarter
1138 */

--- 88 unchanged lines hidden ---