interrupt.S 887 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. /*
  2. * interrupt.S - trampoline default exceptions/interrupts to C handlers
  3. *
  4. * Copyright (c) 2005-2009 Analog Devices Inc.
  5. * Licensed under the GPL-2 or later.
  6. */
  7. #include <config.h>
  8. #include <asm/blackfin.h>
  9. #include <asm/entry.h>
  10. .text
  11. /* default entry point for exceptions */
  12. ENTRY(_trap)
  13. CONFIG_BFIN_SCRATCH_REG = sp;
  14. sp.l = LO(L1_SRAM_SCRATCH_END - 20);
  15. sp.h = HI(L1_SRAM_SCRATCH_END - 20);
  16. SAVE_ALL_SYS
  17. r0 = sp; /* stack frame pt_regs pointer argument ==> r0 */
  18. sp += -12;
  19. call _trap_c;
  20. sp += 12;
  21. #if ANOMALY_05000257
  22. R7 = LC0;
  23. LC0 = R7;
  24. R7 = LC1;
  25. LC1 = R7;
  26. #endif
  27. RESTORE_ALL_SYS
  28. sp = CONFIG_BFIN_SCRATCH_REG;
  29. rtx;
  30. ENDPROC(_trap)
  31. /* default entry point for interrupts */
  32. ENTRY(_evt_default)
  33. SAVE_ALL_SYS
  34. r0 = sp; /* stack frame pt_regs pointer argument ==> r0 */
  35. sp += -12;
  36. call _bfin_panic;
  37. sp += 12;
  38. RESTORE_ALL_SYS
  39. rti;
  40. ENDPROC(_evt_default)