1/*
2 *  arch/s390x/lib/uaccess.S
3 *    fixup routines for copy_{from|to}_user functions.
4 *
5 *  S390
6 *    Copyright (C) 2000 IBM Deutschland Entwicklung GmbH, IBM Corporation
7 *    Authors(s): Martin Schwidefsky (schwidefsky@de.ibm.com)
8 *
9 *  These functions have standard call interface
10 */
11
12#include <asm/lowcore.h>
13
14        .text
15        .align 4
16        .globl __copy_from_user_asm
17__copy_from_user_asm:
18	lgr	%r5,%r3
19	sacf	512
200:	mvcle	%r2,%r4,0
21	jo	0b
22	sacf	0
23	lgr	%r2,%r5
24	br	%r14
251:	lg	%r1,__LC_PGM_OLD_PSW+8
262:	lghi	%r3,-4096
27        ng	%r3,__LC_TRANS_EXC_ADDR
28        sgr	%r3,%r4
29        bm	4(%r1)
303:      mvcle	%r2,%r4,0
31        b	4(%r1)
32        .section __ex_table,"a"
33        .align	8
34	.quad	0b,1b
35	.quad	3b,2b
36        .previous
37
38        .align 4
39        .text
40        .globl __copy_to_user_asm
41__copy_to_user_asm:
42	lgr	%r5,%r3
43	sacf	512
440:	mvcle	%r4,%r2,0
45	jo	0b
46	sacf	0
47	lgr	%r2,%r3
48	br	%r14
491:	lg	%r1,__LC_PGM_OLD_PSW+8
502:      lghi	%r5,-4096
51        ng	%r5,__LC_TRANS_EXC_ADDR
52        sgr	%r5,%r4
53        bm	4(%r1)
543:      mvcle	%r4,%r2,0
55        b	4(%r1)
56        .section __ex_table,"a"
57        .align	8
58        .quad	0b,1b
59        .quad	3b,2b
60        .previous
61
62        .align 4
63        .text
64        .globl __clear_user_asm
65__clear_user_asm:
66	lgr	%r4,%r2
67	lgr	%r5,%r3
68	sgr	%r2,%r2
69	sgr	%r3,%r3
70	sacf	512
710:	mvcle	%r4,%r2,0
72	jo	0b
73	sacf	0
74	lgr	%r2,%r5
75	br	%r14
761:	lg	%r1,__LC_PGM_OLD_PSW+8
772:      lghi	%r5,-4096
78        ng	%r5,__LC_TRANS_EXC_ADDR
79        sgr	%r5,%r4
80        bm	4(%r1)
813:      mvcle	%r4,%r2,0
82        b	4(%r1)
83        .section __ex_table,"a"
84        .align	8
85        .quad	0b,1b
86        .quad	3b,2b
87        .previous
88