Lines 49-54
Link Here
|
49 |
ret |
49 |
ret |
50 |
ENDPROC(x86_rdrand_nlong) |
50 |
ENDPROC(x86_rdrand_nlong) |
51 |
|
51 |
|
|
|
52 |
#define INIT_PIC() |
52 |
#define SETPTR(var,ptr) leaq var(%rip),ptr |
53 |
#define SETPTR(var,ptr) leaq var(%rip),ptr |
53 |
#define PTR0 %rdi |
54 |
#define PTR0 %rdi |
54 |
#define PTR1 %rsi |
55 |
#define PTR1 %rsi |
Lines 84-90
Link Here
|
84 |
ret |
85 |
ret |
85 |
ENDPROC(x86_rdrand_nlong) |
86 |
ENDPROC(x86_rdrand_nlong) |
86 |
|
87 |
|
|
|
88 |
#if defined(__PIC__) |
89 |
#undef __i686 /* gcc builtin define gets in our way */ |
90 |
#define INIT_PIC() \ |
91 |
call __i686.get_pc_thunk.bx ; \ |
92 |
addl $_GLOBAL_OFFSET_TABLE_, %ebx |
93 |
#define SETPTR(var,ptr) leal (var)@GOTOFF(%ebx),ptr |
94 |
#else |
95 |
#define INIT_PIC() |
87 |
#define SETPTR(var,ptr) movl $(var),ptr |
96 |
#define SETPTR(var,ptr) movl $(var),ptr |
|
|
97 |
#endif |
88 |
#define PTR0 %eax |
98 |
#define PTR0 %eax |
89 |
#define PTR1 %edx |
99 |
#define PTR1 %edx |
90 |
#define PTR2 %ecx |
100 |
#define PTR2 %ecx |
Lines 101-106
Link Here
|
101 |
movl 8(%ebp), %eax |
111 |
movl 8(%ebp), %eax |
102 |
movl 12(%ebp), %edx |
112 |
movl 12(%ebp), %edx |
103 |
#endif |
113 |
#endif |
|
|
114 |
INIT_PIC() |
104 |
|
115 |
|
105 |
SETPTR(aes_round_keys, PTR2) |
116 |
SETPTR(aes_round_keys, PTR2) |
106 |
|
117 |
|
Lines 166-171
Link Here
|
166 |
#endif |
177 |
#endif |
167 |
ret |
178 |
ret |
168 |
ENDPROC(x86_aes_mangle) |
179 |
ENDPROC(x86_aes_mangle) |
|
|
180 |
|
181 |
#if defined(__i386__) && defined(__PIC__) |
182 |
.section .gnu.linkonce.t.__i686.get_pc_thunk.bx,"ax",@progbits |
183 |
.globl __i686.get_pc_thunk.bx |
184 |
.hidden __i686.get_pc_thunk.bx |
185 |
.type __i686.get_pc_thunk.bx,@function |
186 |
__i686.get_pc_thunk.bx: |
187 |
movl (%esp), %ebx |
188 |
ret |
189 |
#endif |
190 |
|
169 |
/* |
191 |
/* |
170 |
* AES round keys for an arbitrary key: |
192 |
* AES round keys for an arbitrary key: |
171 |
* 00102030405060708090A0B0C0D0E0F0 |
193 |
* 00102030405060708090A0B0C0D0E0F0 |