reipl.S
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:3k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  *  arch/s390/kernel/reipl.S
  3.  *
  4.  *  S390 version
  5.  *    Copyright (C) 2000 IBM Deutschland Entwicklung GmbH, IBM Corporation
  6.  *    Author(s): Holger Smolinski (Holger.Smolinski@de.ibm.com)
  7.          Denis Joseph Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com)
  8.  */
  9. #include <asm/lowcore.h>
  10. .globl do_reipl
  11. do_reipl: basr %r13,0
  12. .Lpg0: lpswe   .Lnewpsw-.Lpg0(%r13)
  13. .Lpg1: lctlg %c6,%c6,.Lall-.Lpg0(%r13)
  14.                 stctg   %c0,%c0,.Lctlsave-.Lpg0(%r13)
  15.                 ni      .Lctlsave+4-.Lpg0(%r13),0xef
  16.                 lctlg   %c0,%c0,.Lctlsave-.Lpg0(%r13)
  17.                 lgr     %r1,%r2
  18.          mvc     __LC_PGM_NEW_PSW(16),.Lpcnew-.Lpg0(%r13)
  19.                 stsch   .Lschib-.Lpg0(%r13)                                    
  20.         oi      .Lschib+5-.Lpg0(%r13),0x84 
  21. .Lecs:   xi      .Lschib+27-.Lpg0(%r13),0x01 
  22.          msch    .Lschib-.Lpg0(%r13) 
  23. ssch .Liplorb-.Lpg0(%r13)           
  24. jz .L001   
  25. bas %r14,.Ldisab-.Lpg0(%r13)
  26. .L001: mvc __LC_IO_NEW_PSW(16),.Lionew-.Lpg0(%r13)
  27. .Ltpi: lpswe .Lwaitpsw-.Lpg0(%r13)          
  28. .Lcont: c %r1,__LC_SUBCHANNEL_ID
  29. jnz .Ltpi
  30. clc __LC_IO_INT_PARM(4),.Liplorb-.Lpg0(%r13)
  31. jnz .Ltpi
  32. tsch .Liplirb-.Lpg0(%r13)           
  33. tm .Liplirb+9-.Lpg0(%r13),0xbf
  34.                 jz      .L002
  35.                 bas     %r14,.Ldisab-.Lpg0(%r13)    
  36. .L002: tm .Liplirb+8-.Lpg0(%r13),0xf3    
  37.                 jz      .L003
  38.                 bas     %r14,.Ldisab-.Lpg0(%r13)
  39. .L003: spx .Lnull-.Lpg0(%r13)
  40. st  %r1,__LC_SUBCHANNEL_ID
  41.                 lhi     %r1,0            # mode 0 = esa
  42.                 slr     %r0,%r0          # set cpuid to zero
  43.                 sigp    %r1,%r0,0x12     # switch to esa mode
  44.                 lpsw  0
  45. .Ldisab: sll    %r14,1
  46. srl    %r14,1            # need to kill hi bit to avoid specification exceptions.
  47. st     %r14,.Ldispsw+12-.Lpg0(%r13)
  48. lpswe .Ldispsw-.Lpg0(%r13)
  49.                 .align  8
  50. .Lall: .quad 0x00000000ff000000
  51. .Lctlsave:      .quad   0x0000000000000000
  52. .Lnull: .long   0x0000000000000000
  53.                 .align  16
  54. /*
  55.  * These addresses have to be 31 bit otherwise
  56.  * the sigp will throw a specifcation exception
  57.  * when switching to ESA mode as bit 31 be set
  58.  * in the ESA psw.
  59.  * Bit 31 of the addresses has to be 0 for the
  60.  * 31bit lpswe instruction a fact they appear to have
  61.  * ommited from the pop.
  62.  */
  63. .Lnewpsw: .quad   0x0000000080000000
  64. .quad   .Lpg1
  65. .Lpcnew: .quad   0x0000000080000000
  66.    .quad   .Lecs
  67. .Lionew: .quad   0x0000000080000000
  68. .quad   .Lcont
  69. .Lwaitpsw: .quad 0x0202000080000000
  70. .quad   .Ltpi
  71. .Ldispsw: .quad   0x0002000080000000
  72. .quad   0x0000000000000000
  73. .Liplccws: .long   0x02000000,0x60000018
  74. .long   0x08000008,0x20000001
  75. .Liplorb: .long 0x0049504c,0x0040ff80
  76. .long 0x00000000+.Liplccws
  77. .Lschib:        .long   0x00000000,0x00000000
  78. .long   0x00000000,0x00000000
  79. .long   0x00000000,0x00000000
  80. .long   0x00000000,0x00000000
  81. .long   0x00000000,0x00000000
  82. .long   0x00000000,0x00000000
  83. .Liplirb: .long 0x00000000,0x00000000
  84. .long 0x00000000,0x00000000
  85. .long 0x00000000,0x00000000
  86. .long 0x00000000,0x00000000
  87. .long 0x00000000,0x00000000
  88. .long 0x00000000,0x00000000
  89. .long 0x00000000,0x00000000
  90. .long 0x00000000,0x00000000