GNU Linux-libre 4.19.264-gnu1
[releases.git] / arch / arm64 / kernel / reloc_test_syms.S
1 /*
2  * Copyright (C) 2017 Linaro, Ltd. <ard.biesheuvel@linaro.org>
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License version 2 as
6  * published by the Free Software Foundation.
7  *
8  */
9
10 #include <linux/linkage.h>
11
12 ENTRY(absolute_data64)
13         ldr     x0, 0f
14         ret
15 0:      .quad   sym64_abs
16 ENDPROC(absolute_data64)
17
18 ENTRY(absolute_data32)
19         ldr     w0, 0f
20         ret
21 0:      .long   sym32_abs
22 ENDPROC(absolute_data32)
23
24 ENTRY(absolute_data16)
25         adr     x0, 0f
26         ldrh    w0, [x0]
27         ret
28 0:      .short  sym16_abs, 0
29 ENDPROC(absolute_data16)
30
31 ENTRY(signed_movw)
32         movz    x0, #:abs_g2_s:sym64_abs
33         movk    x0, #:abs_g1_nc:sym64_abs
34         movk    x0, #:abs_g0_nc:sym64_abs
35         ret
36 ENDPROC(signed_movw)
37
38 ENTRY(unsigned_movw)
39         movz    x0, #:abs_g3:sym64_abs
40         movk    x0, #:abs_g2_nc:sym64_abs
41         movk    x0, #:abs_g1_nc:sym64_abs
42         movk    x0, #:abs_g0_nc:sym64_abs
43         ret
44 ENDPROC(unsigned_movw)
45
46         .align  12
47         .space  0xff8
48 ENTRY(relative_adrp)
49         adrp    x0, sym64_rel
50         add     x0, x0, #:lo12:sym64_rel
51         ret
52 ENDPROC(relative_adrp)
53
54         .align  12
55         .space  0xffc
56 ENTRY(relative_adrp_far)
57         adrp    x0, memstart_addr
58         add     x0, x0, #:lo12:memstart_addr
59         ret
60 ENDPROC(relative_adrp_far)
61
62 ENTRY(relative_adr)
63         adr     x0, sym64_rel
64         ret
65 ENDPROC(relative_adr)
66
67 ENTRY(relative_data64)
68         adr     x1, 0f
69         ldr     x0, [x1]
70         add     x0, x0, x1
71         ret
72 0:      .quad   sym64_rel - .
73 ENDPROC(relative_data64)
74
75 ENTRY(relative_data32)
76         adr     x1, 0f
77         ldr     w0, [x1]
78         add     x0, x0, x1
79         ret
80 0:      .long   sym64_rel - .
81 ENDPROC(relative_data32)
82
83 ENTRY(relative_data16)
84         adr     x1, 0f
85         ldrsh   w0, [x1]
86         add     x0, x0, x1
87         ret
88 0:      .short  sym64_rel - ., 0
89 ENDPROC(relative_data16)