Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(164)

Side by Side Diff: fusl/src/ldso/aarch64/tlsdesc.s

Issue 1573973002: Add a "fork" of musl as //fusl. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « fusl/src/ldso/aarch64/dlsym.s ('k') | fusl/src/ldso/arm/dlsym.s » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // size_t __tlsdesc_static(size_t *a)
2 // {
3 // return a[1];
4 // }
5 .global __tlsdesc_static
6 .hidden __tlsdesc_static
7 .type __tlsdesc_static,@function
8 __tlsdesc_static:
9 ldr x0,[x0,#8]
10 ret
11
12 .hidden __tls_get_new
13
14 // size_t __tlsdesc_dynamic(size_t *a)
15 // {
16 // struct {size_t modidx,off;} *p = (void*)a[1];
17 // size_t *dtv = *(size_t**)(tp + 16 - 8);
18 // if (p->modidx <= dtv[0])
19 // return dtv[p->modidx] + p->off - tp;
20 // return __tls_get_new(p) - tp;
21 // }
22 .global __tlsdesc_dynamic
23 .hidden __tlsdesc_dynamic
24 .type __tlsdesc_dynamic,@function
25 __tlsdesc_dynamic:
26 stp x1,x2,[sp,#-32]!
27 stp x3,x4,[sp,#16]
28 mrs x1,tpidr_el0 // tp
29 ldr x0,[x0,#8] // p
30 ldr x2,[x0] // p->modidx
31 add x3,x1,#8
32 ldr x3,[x3] // dtv
33 ldr x4,[x3] // dtv[0]
34 cmp x2,x4
35 b.hi 1f
36 ldr x2,[x3,x2,lsl #3] // dtv[p->modidx]
37 ldr x0,[x0,#8] // p->off
38 add x0,x0,x2
39 2: sub x0,x0,x1
40 ldp x3,x4,[sp,#16]
41 ldp x1,x2,[sp],#32
42 ret
43
44 // save all registers __tls_get_new may clobber
45 // update sp in two steps because offset must be in [-512,509]
46 1: stp x29,x30,[sp,#-160]!
47 stp x5,x6,[sp,#16]
48 stp x7,x8,[sp,#32]
49 stp x9,x10,[sp,#48]
50 stp x11,x12,[sp,#64]
51 stp x13,x14,[sp,#80]
52 stp x15,x16,[sp,#96]
53 stp x17,x18,[sp,#112]
54 stp q0,q1,[sp,#128]
55 stp q2,q3,[sp,#-480]!
56 stp q4,q5,[sp,#32]
57 stp q6,q7,[sp,#64]
58 stp q8,q9,[sp,#96]
59 stp q10,q11,[sp,#128]
60 stp q12,q13,[sp,#160]
61 stp q14,q15,[sp,#192]
62 stp q16,q17,[sp,#224]
63 stp q18,q19,[sp,#256]
64 stp q20,q21,[sp,#288]
65 stp q22,q23,[sp,#320]
66 stp q24,q25,[sp,#352]
67 stp q26,q27,[sp,#384]
68 stp q28,q29,[sp,#416]
69 stp q30,q31,[sp,#448]
70 bl __tls_get_new
71 mrs x1,tpidr_el0
72 ldp q4,q5,[sp,#32]
73 ldp q6,q7,[sp,#64]
74 ldp q8,q9,[sp,#96]
75 ldp q10,q11,[sp,#128]
76 ldp q12,q13,[sp,#160]
77 ldp q14,q15,[sp,#192]
78 ldp q16,q17,[sp,#224]
79 ldp q18,q19,[sp,#256]
80 ldp q20,q21,[sp,#288]
81 ldp q22,q23,[sp,#320]
82 ldp q24,q25,[sp,#352]
83 ldp q26,q27,[sp,#384]
84 ldp q28,q29,[sp,#416]
85 ldp q30,q31,[sp,#448]
86 ldp q2,q3,[sp],#480
87 ldp x5,x6,[sp,#16]
88 ldp x7,x8,[sp,#32]
89 ldp x9,x10,[sp,#48]
90 ldp x11,x12,[sp,#64]
91 ldp x13,x14,[sp,#80]
92 ldp x15,x16,[sp,#96]
93 ldp x17,x18,[sp,#112]
94 ldp q0,q1,[sp,#128]
95 ldp x29,x30,[sp],#160
96 b 2b
OLDNEW
« no previous file with comments | « fusl/src/ldso/aarch64/dlsym.s ('k') | fusl/src/ldso/arm/dlsym.s » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698