1
2
3
4
5
6
7
8#define DATAMOVER_ADDR 0x4000
9#define COPY_PAGE_ADDR 0x6000
10
11#ifdef CONFIG_CRASH_DUMP
12
13
14
15
16
17
18
19.align 2
20.Lep_startup_kdump:
21 lhi %r1,2
22 sigp %r1,%r0,0x12
23 sam64
24 basr %r13,0
25.Lbase:
26 larl %r2,.Lbase_addr
27 lg %r2,0(%r2)
28 clgr %r2,%r13
29 jne .Lrelocate
30 lghi %r2,0
31 brasl %r14,startup_kdump_relocated
32
33.Lrelocate:
34 larl %r4,startup
35 lg %r2,0x418(%r4)
36 lg %r3,0x420(%r4)
37
38 larl %r10,.Lcopy_start
39 lghi %r8,DATAMOVER_ADDR
40 mvc 0(256,%r8),0(%r10)
41
42 agr %r8,%r2
43 mvc 0(256,%r8),0(%r10)
44
45 lghi %r14,DATAMOVER_ADDR
46 basr %r14,%r14
47.Lbase_addr:
48 .quad .Lbase
49
50
51
52
53
54
55
56.Lcopy_start:
57 basr %r13,0
580:
59 lgr %r11,%r2
60 lgr %r12,%r2
61 agr %r12,%r3
62
63 lghi %r5,0
64 lghi %r10,COPY_PAGE_ADDR
651:
66 mvc 0(256,%r10),0(%r5)
67 mvc 0(256,%r5),0(%r11)
68 mvc 0(256,%r11),0(%r10)
69 aghi %r11,256
70 aghi %r5,256
71 clgr %r11,%r12
72 jl 1b
73
74 lg %r14,.Lstartup_kdump-0b(%r13)
75 basr %r14,%r14
76.Lstartup_kdump:
77 .long 0x00000000,0x00000000 + startup_kdump_relocated
78.Lcopy_end:
79
80
81
82
83.align 2
84startup_kdump_relocated:
85 basr %r13,0
860:
87 mvc 0(8,%r0),.Lrestart_psw-0b(%r13)
88 sam31
89 sr %r1,%r1
90 sr %r2,%r2
91 sigp %r1,%r2,0x12
92 lpsw 0
93.align 8
94.Lrestart_psw:
95 .long 0x00080000,0x80000000 + startup
96#else
97.align 2
98.Lep_startup_kdump:
99#ifdef CONFIG_64BIT
100 larl %r13,startup_kdump_crash
101 lpswe 0(%r13)
102.align 8
103startup_kdump_crash:
104 .quad 0x0002000080000000,0x0000000000000000 + startup_kdump_crash
105#else
106 basr %r13,0
1070: lpsw startup_kdump_crash-0b(%r13)
108.align 8
109startup_kdump_crash:
110 .long 0x000a0000,0x00000000 + startup_kdump_crash
111#endif
112#endif
113