reset.S 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. /*
  2. * arch/s390/kernel/reset.S
  3. *
  4. * Copyright (C) IBM Corp. 2006
  5. * Author(s): Heiko Carstens <heiko.carstens@de.ibm.com>
  6. * Michael Holzheu <holzheu@de.ibm.com>
  7. */
  8. #include <asm/ptrace.h>
  9. #include <asm/lowcore.h>
  10. #ifdef CONFIG_64BIT
  11. .globl reset_mcck_handler
  12. reset_mcck_handler:
  13. basr %r13,0
  14. 0: lg %r15,__LC_PANIC_STACK # load panic stack
  15. aghi %r15,-STACK_FRAME_OVERHEAD
  16. lg %r1,s390_reset_mcck_handler-0b(%r13)
  17. ltgr %r1,%r1
  18. jz 1f
  19. basr %r14,%r1
  20. 1: la %r1,4095
  21. lmg %r0,%r15,__LC_GPREGS_SAVE_AREA-4095(%r1)
  22. lpswe __LC_MCK_OLD_PSW
  23. .globl s390_reset_mcck_handler
  24. s390_reset_mcck_handler:
  25. .quad 0
  26. .globl reset_pgm_handler
  27. reset_pgm_handler:
  28. stmg %r0,%r15,__LC_SAVE_AREA
  29. basr %r13,0
  30. 0: lg %r15,__LC_PANIC_STACK # load panic stack
  31. aghi %r15,-STACK_FRAME_OVERHEAD
  32. lg %r1,s390_reset_pgm_handler-0b(%r13)
  33. ltgr %r1,%r1
  34. jz 1f
  35. basr %r14,%r1
  36. lmg %r0,%r15,__LC_SAVE_AREA
  37. lpswe __LC_PGM_OLD_PSW
  38. 1: lpswe disabled_wait_psw-0b(%r13)
  39. .globl s390_reset_pgm_handler
  40. s390_reset_pgm_handler:
  41. .quad 0
  42. .align 8
  43. disabled_wait_psw:
  44. .quad 0x0002000180000000,0x0000000000000000 + reset_pgm_handler
  45. #else /* CONFIG_64BIT */
  46. .globl reset_mcck_handler
  47. reset_mcck_handler:
  48. basr %r13,0
  49. 0: l %r15,__LC_PANIC_STACK # load panic stack
  50. ahi %r15,-STACK_FRAME_OVERHEAD
  51. l %r1,s390_reset_mcck_handler-0b(%r13)
  52. ltr %r1,%r1
  53. jz 1f
  54. basr %r14,%r1
  55. 1: lm %r0,%r15,__LC_GPREGS_SAVE_AREA
  56. lpsw __LC_MCK_OLD_PSW
  57. .globl s390_reset_mcck_handler
  58. s390_reset_mcck_handler:
  59. .long 0
  60. .globl reset_pgm_handler
  61. reset_pgm_handler:
  62. stm %r0,%r15,__LC_SAVE_AREA
  63. basr %r13,0
  64. 0: l %r15,__LC_PANIC_STACK # load panic stack
  65. ahi %r15,-STACK_FRAME_OVERHEAD
  66. l %r1,s390_reset_pgm_handler-0b(%r13)
  67. ltr %r1,%r1
  68. jz 1f
  69. basr %r14,%r1
  70. lm %r0,%r15,__LC_SAVE_AREA
  71. lpsw __LC_PGM_OLD_PSW
  72. 1: lpsw disabled_wait_psw-0b(%r13)
  73. .globl s390_reset_pgm_handler
  74. s390_reset_pgm_handler:
  75. .long 0
  76. disabled_wait_psw:
  77. .align 8
  78. .long 0x000a0000,0x00000000 + reset_pgm_handler
  79. #endif /* CONFIG_64BIT */