traps.c (f615136c06a791364f5afa8b8ba965315a6440f1) traps.c (49b424fedaf88d0fa9913082b8c1ccd012a8a972)
1/*
2 * arch/xtensa/kernel/traps.c
3 *
4 * Exception handling.
5 *
6 * Derived from code with the following copyrights:
7 * Copyright (C) 1994 - 1999 by Ralf Baechle
8 * Modified for R3000 by Paul M. Antoine, 1995, 1996

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

327{
328 void *previous = (void *)per_cpu(exc_table, 0)[
329 EXC_TABLE_DEFAULT / 4 + cause];
330 set_handler(EXC_TABLE_DEFAULT / 4 + cause, handler);
331 return previous;
332}
333
334
1/*
2 * arch/xtensa/kernel/traps.c
3 *
4 * Exception handling.
5 *
6 * Derived from code with the following copyrights:
7 * Copyright (C) 1994 - 1999 by Ralf Baechle
8 * Modified for R3000 by Paul M. Antoine, 1995, 1996

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

327{
328 void *previous = (void *)per_cpu(exc_table, 0)[
329 EXC_TABLE_DEFAULT / 4 + cause];
330 set_handler(EXC_TABLE_DEFAULT / 4 + cause, handler);
331 return previous;
332}
333
334
335static void __init trap_init_excsave(void)
335static void trap_init_excsave(void)
336{
337 unsigned long excsave1 = (unsigned long)this_cpu_ptr(exc_table);
338 __asm__ __volatile__("wsr %0, excsave1\n" : : "a" (excsave1));
339}
340
341/*
342 * Initialize dispatch tables.
343 *

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

379 set_handler (EXC_TABLE_FAST_KERNEL/4 + cause, handler);
380 }
381
382 /* Initialize EXCSAVE_1 to hold the address of the exception table. */
383 trap_init_excsave();
384}
385
386#ifdef CONFIG_SMP
336{
337 unsigned long excsave1 = (unsigned long)this_cpu_ptr(exc_table);
338 __asm__ __volatile__("wsr %0, excsave1\n" : : "a" (excsave1));
339}
340
341/*
342 * Initialize dispatch tables.
343 *

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

379 set_handler (EXC_TABLE_FAST_KERNEL/4 + cause, handler);
380 }
381
382 /* Initialize EXCSAVE_1 to hold the address of the exception table. */
383 trap_init_excsave();
384}
385
386#ifdef CONFIG_SMP
387void __init secondary_trap_init(void)
387void secondary_trap_init(void)
388{
389 trap_init_excsave();
390}
391#endif
392
393/*
394 * This function dumps the current valid window frame and other base registers.
395 */

--- 125 unchanged lines hidden ---
388{
389 trap_init_excsave();
390}
391#endif
392
393/*
394 * This function dumps the current valid window frame and other base registers.
395 */

--- 125 unchanged lines hidden ---