s390/sigp: use sigp order code defines in assembly code

Use sigp order code defines in assembly code as well.
With this change all places that use sigp constants should
have been converted to use self describing defines instead
of directly using constants.

Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
This commit is contained in:
Heiko Carstens 2012-06-04 15:05:43 +02:00 committed by Martin Schwidefsky
parent a095a8a9d5
commit eb546195a7
10 changed files with 33 additions and 21 deletions

View File

@ -9,6 +9,7 @@
#include <linux/linkage.h> #include <linux/linkage.h>
#include <asm/asm-offsets.h> #include <asm/asm-offsets.h>
#include <asm/ptrace.h> #include <asm/ptrace.h>
#include <asm/sigp.h>
#ifdef CONFIG_64BIT #ifdef CONFIG_64BIT
@ -100,7 +101,7 @@ ENTRY(diag308_reset)
.Lrestart_part2: .Lrestart_part2:
lhi %r0,0 # Load r0 with zero lhi %r0,0 # Load r0 with zero
lhi %r1,2 # Use mode 2 = ESAME (dump) lhi %r1,2 # Use mode 2 = ESAME (dump)
sigp %r1,%r0,0x12 # Switch to ESAME mode sigp %r1,%r0,SIGP_SET_ARCHITECTURE # Switch to ESAME mode
sam64 # Switch to 64 bit addressing mode sam64 # Switch to 64 bit addressing mode
larl %r4,.Lctlregs # Restore control registers larl %r4,.Lctlregs # Restore control registers
lctlg %c0,%c15,0(%r4) lctlg %c0,%c15,0(%r4)

View File

@ -18,6 +18,7 @@
#include <asm/asm-offsets.h> #include <asm/asm-offsets.h>
#include <asm/unistd.h> #include <asm/unistd.h>
#include <asm/page.h> #include <asm/page.h>
#include <asm/sigp.h>
__PT_R0 = __PT_GPRS __PT_R0 = __PT_GPRS
__PT_R1 = __PT_GPRS + 4 __PT_R1 = __PT_GPRS + 4
@ -726,12 +727,12 @@ ENTRY(restart_int_handler)
lm %r1,%r3,__LC_RESTART_FN # load fn, parm & source cpu lm %r1,%r3,__LC_RESTART_FN # load fn, parm & source cpu
ltr %r3,%r3 # test source cpu address ltr %r3,%r3 # test source cpu address
jm 1f # negative -> skip source stop jm 1f # negative -> skip source stop
0: sigp %r4,%r3,1 # sigp sense to source cpu 0: sigp %r4,%r3,SIGP_SENSE # sigp sense to source cpu
brc 10,0b # wait for status stored brc 10,0b # wait for status stored
1: basr %r14,%r1 # call function 1: basr %r14,%r1 # call function
stap __SF_EMPTY(%r15) # store cpu address stap __SF_EMPTY(%r15) # store cpu address
lh %r3,__SF_EMPTY(%r15) lh %r3,__SF_EMPTY(%r15)
2: sigp %r4,%r3,5 # sigp stop to current cpu 2: sigp %r4,%r3,SIGP_STOP # sigp stop to current cpu
brc 2,2b brc 2,2b
3: j 3b 3: j 3b

View File

@ -18,6 +18,7 @@
#include <asm/asm-offsets.h> #include <asm/asm-offsets.h>
#include <asm/unistd.h> #include <asm/unistd.h>
#include <asm/page.h> #include <asm/page.h>
#include <asm/sigp.h>
__PT_R0 = __PT_GPRS __PT_R0 = __PT_GPRS
__PT_R1 = __PT_GPRS + 8 __PT_R1 = __PT_GPRS + 8
@ -753,12 +754,12 @@ ENTRY(restart_int_handler)
lmg %r1,%r3,__LC_RESTART_FN # load fn, parm & source cpu lmg %r1,%r3,__LC_RESTART_FN # load fn, parm & source cpu
ltgr %r3,%r3 # test source cpu address ltgr %r3,%r3 # test source cpu address
jm 1f # negative -> skip source stop jm 1f # negative -> skip source stop
0: sigp %r4,%r3,1 # sigp sense to source cpu 0: sigp %r4,%r3,SIGP_SENSE # sigp sense to source cpu
brc 10,0b # wait for status stored brc 10,0b # wait for status stored
1: basr %r14,%r1 # call function 1: basr %r14,%r1 # call function
stap __SF_EMPTY(%r15) # store cpu address stap __SF_EMPTY(%r15) # store cpu address
llgh %r3,__SF_EMPTY(%r15) llgh %r3,__SF_EMPTY(%r15)
2: sigp %r4,%r3,5 # sigp stop to current cpu 2: sigp %r4,%r3,SIGP_STOP # sigp stop to current cpu
brc 2,2b brc 2,2b
3: j 3b 3: j 3b

View File

@ -5,6 +5,8 @@
* Author(s): Michael Holzheu <holzheu@linux.vnet.ibm.com> * Author(s): Michael Holzheu <holzheu@linux.vnet.ibm.com>
*/ */
#include <asm/sigp.h>
#define DATAMOVER_ADDR 0x4000 #define DATAMOVER_ADDR 0x4000
#define COPY_PAGE_ADDR 0x6000 #define COPY_PAGE_ADDR 0x6000
@ -19,7 +21,7 @@
.align 2 .align 2
.Lep_startup_kdump: .Lep_startup_kdump:
lhi %r1,2 # mode 2 = esame (dump) lhi %r1,2 # mode 2 = esame (dump)
sigp %r1,%r0,0x12 # Switch to esame mode sigp %r1,%r0,SIGP_SET_ARCHITECTURE # Switch to esame mode
sam64 # Switch to 64 bit addressing sam64 # Switch to 64 bit addressing
basr %r13,0 basr %r13,0
.Lbase: .Lbase:
@ -88,7 +90,7 @@ startup_kdump_relocated:
sam31 # Switch to 31 bit addr mode sam31 # Switch to 31 bit addr mode
sr %r1,%r1 # Erase register r1 sr %r1,%r1 # Erase register r1
sr %r2,%r2 # Erase register r2 sr %r2,%r2 # Erase register r2
sigp %r1,%r2,0x12 # Switch to 31 bit arch mode sigp %r1,%r2,SIGP_SET_ARCHITECTURE # Switch to 31 bit arch mode
lpsw 0 # Start new kernel... lpsw 0 # Start new kernel...
.align 8 .align 8
.Lrestart_psw: .Lrestart_psw:

View File

@ -8,6 +8,7 @@
#include <linux/linkage.h> #include <linux/linkage.h>
#include <asm/asm-offsets.h> #include <asm/asm-offsets.h>
#include <asm/sigp.h>
# #
# store_status: Empty implementation until kdump is supported on 31 bit # store_status: Empty implementation until kdump is supported on 31 bit
@ -60,7 +61,7 @@ ENTRY(do_reipl_asm)
bas %r14,.Ldisab-.Lpg0(%r13) bas %r14,.Ldisab-.Lpg0(%r13)
.L003: st %r1,__LC_SUBCHANNEL_ID .L003: st %r1,__LC_SUBCHANNEL_ID
lpsw 0 lpsw 0
sigp 0,0,0(6) sigp 0,0,SIGP_RESTART
.Ldisab: st %r14,.Ldispsw+4-.Lpg0(%r13) .Ldisab: st %r14,.Ldispsw+4-.Lpg0(%r13)
lpsw .Ldispsw-.Lpg0(%r13) lpsw .Ldispsw-.Lpg0(%r13)
.align 8 .align 8

View File

@ -6,6 +6,7 @@
#include <linux/linkage.h> #include <linux/linkage.h>
#include <asm/asm-offsets.h> #include <asm/asm-offsets.h>
#include <asm/sigp.h>
# #
# store_status # store_status
@ -106,7 +107,7 @@ ENTRY(do_reipl_asm)
.L003: st %r1,__LC_SUBCHANNEL_ID .L003: st %r1,__LC_SUBCHANNEL_ID
lhi %r1,0 # mode 0 = esa lhi %r1,0 # mode 0 = esa
slr %r0,%r0 # set cpuid to zero slr %r0,%r0 # set cpuid to zero
sigp %r1,%r0,0x12 # switch to esa mode sigp %r1,%r0,SIGP_SET_ARCHITECTURE # switch to esa mode
lpsw 0 lpsw 0
.Ldisab: sll %r14,1 .Ldisab: sll %r14,1
srl %r14,1 # need to kill hi bit to avoid specification exceptions. srl %r14,1 # need to kill hi bit to avoid specification exceptions.

View File

@ -9,6 +9,7 @@
*/ */
#include <linux/linkage.h> #include <linux/linkage.h>
#include <asm/sigp.h>
/* /*
* moves the new kernel to its destination... * moves the new kernel to its destination...
@ -93,7 +94,7 @@ ENTRY(relocate_kernel)
.no_diag308: .no_diag308:
sr %r1,%r1 # clear %r1 sr %r1,%r1 # clear %r1
sr %r2,%r2 # clear %r2 sr %r2,%r2 # clear %r2
sigp %r1,%r2,0x12 # set cpuid to zero sigp %r1,%r2,SIGP_SET_ARCHITECTURE # set cpuid to zero
lpsw 0 # hopefully start new kernel... lpsw 0 # hopefully start new kernel...
.align 8 .align 8

View File

@ -9,6 +9,7 @@
*/ */
#include <linux/linkage.h> #include <linux/linkage.h>
#include <asm/sigp.h>
/* /*
* moves the new kernel to its destination... * moves the new kernel to its destination...
@ -45,7 +46,7 @@ ENTRY(relocate_kernel)
diag %r0,%r0,0x308 diag %r0,%r0,0x308
.back: .back:
lhi %r1,1 # mode 1 = esame lhi %r1,1 # mode 1 = esame
sigp %r1,%r0,0x12 # switch to esame mode sigp %r1,%r0,SIGP_SET_ARCHITECTURE # switch to esame mode
sam64 # switch to 64 bit addressing mode sam64 # switch to 64 bit addressing mode
basr %r13,0 basr %r13,0
.back_base: .back_base:
@ -96,7 +97,7 @@ ENTRY(relocate_kernel)
sam31 # 31 bit mode sam31 # 31 bit mode
sr %r1,%r1 # erase register r1 sr %r1,%r1 # erase register r1
sr %r2,%r2 # erase register r2 sr %r2,%r2 # erase register r2
sigp %r1,%r2,0x12 # set cpuid to zero sigp %r1,%r2,SIGP_SET_ARCHITECTURE # set cpuid to zero
lpsw 0 # hopefully start new kernel... lpsw 0 # hopefully start new kernel...
.align 8 .align 8

View File

@ -288,11 +288,13 @@ static void pcpu_delegate(struct pcpu *pcpu, void (*func)(void *),
/* Restart func on the target cpu and stop the current cpu. */ /* Restart func on the target cpu and stop the current cpu. */
memcpy_absolute(&lc->restart_stack, &restart, sizeof(restart)); memcpy_absolute(&lc->restart_stack, &restart, sizeof(restart));
asm volatile( asm volatile(
"0: sigp 0,%0,6 # sigp restart to target cpu\n" "0: sigp 0,%0,%2 # sigp restart to target cpu\n"
" brc 2,0b # busy, try again\n" " brc 2,0b # busy, try again\n"
"1: sigp 0,%1,5 # sigp stop to current cpu\n" "1: sigp 0,%1,%3 # sigp stop to current cpu\n"
" brc 2,1b # busy, try again\n" " brc 2,1b # busy, try again\n"
: : "d" (pcpu->address), "d" (restart.source) : "0", "1", "cc"); : : "d" (pcpu->address), "d" (restart.source),
"K" (SIGP_RESTART), "K" (SIGP_STOP)
: "0", "1", "cc");
for (;;) ; for (;;) ;
} }

View File

@ -12,6 +12,7 @@
#include <asm/ptrace.h> #include <asm/ptrace.h>
#include <asm/thread_info.h> #include <asm/thread_info.h>
#include <asm/asm-offsets.h> #include <asm/asm-offsets.h>
#include <asm/sigp.h>
/* /*
* Save register context in absolute 0 lowcore and call swsusp_save() to * Save register context in absolute 0 lowcore and call swsusp_save() to
@ -163,7 +164,7 @@ ENTRY(swsusp_arch_resume)
diag %r0,%r0,0x308 diag %r0,%r0,0x308
restart_entry: restart_entry:
lhi %r1,1 lhi %r1,1
sigp %r1,%r0,0x12 sigp %r1,%r0,SIGP_SET_ARCHITECTURE
sam64 sam64
larl %r1,.Lnew_pgm_check_psw larl %r1,.Lnew_pgm_check_psw
lpswe 0(%r1) lpswe 0(%r1)
@ -179,7 +180,7 @@ pgm_check_entry:
larl %r4,.Lrestart_suspend_psw /* Set new restart PSW */ larl %r4,.Lrestart_suspend_psw /* Set new restart PSW */
mvc __LC_RST_NEW_PSW(16,%r0),0(%r4) mvc __LC_RST_NEW_PSW(16,%r0),0(%r4)
3: 3:
sigp %r9,%r1,11 /* sigp initial cpu reset */ sigp %r9,%r1,SIGP_INITIAL_CPU_RESET /* sigp initial cpu reset */
brc 8,4f /* accepted */ brc 8,4f /* accepted */
brc 2,3b /* busy, try again */ brc 2,3b /* busy, try again */
@ -190,16 +191,16 @@ pgm_check_entry:
larl %r3,_sclp_print_early larl %r3,_sclp_print_early
lghi %r1,0 lghi %r1,0
sam31 sam31
sigp %r1,%r0,0x12 sigp %r1,%r0,SIGP_SET_ARCHITECTURE
basr %r14,%r3 basr %r14,%r3
larl %r3,.Ldisabled_wait_31 larl %r3,.Ldisabled_wait_31
lpsw 0(%r3) lpsw 0(%r3)
4: 4:
/* Switch to suspend CPU */ /* Switch to suspend CPU */
sigp %r9,%r1,6 /* sigp restart to suspend CPU */ sigp %r9,%r1,SIGP_RESTART /* sigp restart to suspend CPU */
brc 2,4b /* busy, try again */ brc 2,4b /* busy, try again */
5: 5:
sigp %r9,%r2,5 /* sigp stop to current resume CPU */ sigp %r9,%r2,SIGP_STOP /* sigp stop to current resume CPU */
brc 2,5b /* busy, try again */ brc 2,5b /* busy, try again */
6: j 6b 6: j 6b
@ -207,7 +208,7 @@ restart_suspend:
larl %r1,.Lresume_cpu larl %r1,.Lresume_cpu
llgh %r2,0(%r1) llgh %r2,0(%r1)
7: 7:
sigp %r9,%r2,1 /* sigp sense, wait for resume CPU */ sigp %r9,%r2,SIGP_SENSE /* sigp sense, wait for resume CPU */
brc 8,7b /* accepted, status 0, still running */ brc 8,7b /* accepted, status 0, still running */
brc 2,7b /* busy, try again */ brc 2,7b /* busy, try again */
tmll %r9,0x40 /* Test if resume CPU is stopped */ tmll %r9,0x40 /* Test if resume CPU is stopped */