~ubuntu-branches/ubuntu/utopic/eglibc/utopic

« back to all changes in this revision

Viewing changes to nptl/sysdeps/unix/sysv/linux/sh/sem_timedwait.S

  • Committer: Package Import Robot
  • Author(s): Adam Conrad
  • Date: 2012-10-26 05:14:58 UTC
  • mfrom: (1.5.1) (4.4.22 experimental)
  • Revision ID: package-import@ubuntu.com-20121026051458-oryotr4i03ob5pab
Tags: 2.16-0ubuntu1
* Merge with unreleased 2.16 in Debian experimental, remaining changes:
  - Drop the Breaks line from libc6, which refers to a Debian transition
  - Remove the libc6 recommends on libc6-i686, which we don't build
  - Enable libc6{,-dev}-armel on armhf and libc6{-dev}-armhf on armel
  - Ship update-locale and validlocale in /usr/sbin in libc-bin
  - Don't build locales or locales-all in Ubuntu, we rely on langpacks
  - Heavily mangle the way we do service restarting on major upgrades
  - Use different MIN_KERNEL_SUPPORTED versions than Debian, due to
    buildd needs.  This should be universally bumped to 3.2.0 once all
    our buildds (including the PPA guests) are running precise kernels
  - Build i386 variants as -march=i686, build amd64 with -O3, and build
    ppc64 variants (both 64-bit and 32-bit) with -O3 -fno-tree-vectorize
  - Re-enable unsubmitted-ldconfig-cache-abi.diff and rebuild the cache
    on upgrades from previous versions that used a different constant
  - debian/patches/any/local-CVE-2012-3406.diff: switch to malloc when
    array grows too large to handle via alloca extension (CVE-2012-3406)
  - Build generic i386/i686 flavour with -mno-tls-direct-seg-refs
* Changes added/dropped with this merge while reducing our delta:
  - Stop building glibc docs from the eglibc source, and instead make
    the glibc-docs stub have a hard dependency on glibc-doc-reference
  - Remove outdated conflicts against ancient versions of ia32-libs
  - Drop the tzdata dependency from libc6, it's in required and minimal
  - Use gcc-4.7/g++-4.7 by default on all our supported architectures
  - Save our historical changelog as changelog.ubuntu in the source
  - Drop nscd's libaudit build-dep for now, as libaudit is in universe
  - Drop the unnecessary Breaks from libc6 to locales and locales-all
  - Ship xen's ld.so.conf.d snippet as /etc/ld.so.conf.d/libc6-xen.conf
* Disable hard failures on the test suite for the first upload to raring

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* Copyright (C) 2003, 2004, 2007, 2011 Free Software Foundation, Inc.
 
1
/* Copyright (C) 2003-2012 Free Software Foundation, Inc.
2
2
   This file is part of the GNU C Library.
3
3
 
4
4
   The GNU C Library is free software; you can redistribute it and/or
12
12
   Lesser General Public License for more details.
13
13
 
14
14
   You should have received a copy of the GNU Lesser General Public
15
 
   License along with the GNU C Library; if not, write to the Free
16
 
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
17
 
   02111-1307 USA.  */
 
15
   License along with the GNU C Library; if not, see
 
16
   <http://www.gnu.org/licenses/>.  */
18
17
 
19
18
#include <sysdep.h>
20
19
#include <shlib-compat.h>
34
33
        .globl  sem_timedwait
35
34
        .type   sem_timedwait,@function
36
35
        .align  5
 
36
        cfi_startproc
37
37
sem_timedwait:
38
38
.LSTARTCODE:
 
39
#ifdef SHARED
 
40
        cfi_personality(DW_EH_PE_pcrel | DW_EH_PE_sdata4 | DW_EH_PE_indirect,
 
41
                        DW.ref.__gcc_personality_v0)
 
42
        cfi_lsda(DW_EH_PE_pcrel | DW_EH_PE_sdata4, .LexceptSTART)
 
43
#else
 
44
        cfi_personality(DW_EH_PE_absptr, __gcc_personality_v0)
 
45
        cfi_lsda(DW_EH_PE_absptr, .LexceptSTART)
 
46
#endif
39
47
        mov.l   @r4, r0
40
48
2:
41
49
        tst     r0, r0
52
60
1:
53
61
        /* Check whether the timeout value is valid.  */
54
62
        mov.l   r8, @-r15
55
 
.Lpush_r8:
 
63
        cfi_adjust_cfa_offset (4)
 
64
        cfi_rel_offset (r8, 0)
56
65
        mov.l   r9, @-r15
57
 
.Lpush_r9:
 
66
        cfi_adjust_cfa_offset (4)
 
67
        cfi_rel_offset (r9, 0)
58
68
        mov.l   r10, @-r15
59
 
.Lpush_r10:
 
69
        cfi_adjust_cfa_offset (4)
 
70
        cfi_rel_offset (r10, 0)
60
71
        mov.l   r12, @-r15
61
 
.Lpush_r12:
 
72
        cfi_adjust_cfa_offset (4)
 
73
        cfi_rel_offset (r12, 0)
62
74
        sts.l   pr, @-r15
63
 
.Lpush_pr:
 
75
        cfi_adjust_cfa_offset (4)
 
76
        cfi_rel_offset (pr, 0)
64
77
        add     #-8, r15
65
 
.Lalloc:
 
78
        cfi_adjust_cfa_offset (8)
 
79
 
66
80
        mov     r4, r8
67
81
        mov     r5, r9
68
82
 
70
84
        mov.l   @(4,r9), r0
71
85
        mov.l   .L1g, r1
72
86
        cmp/hs  r1, r0
73
 
        bt/s    6f
74
 
         mov    #EINVAL, r0
 
87
        bt/s    .Lerrno_exit
 
88
         mov    #EINVAL, r10
75
89
        INC (@(NWAITERS,r8),r2)
76
90
 
77
91
7:
156
170
        mov     #0, r0
157
171
 
158
172
10:
 
173
        cfi_remember_state
159
174
        add     #8, r15
 
175
        cfi_adjust_cfa_offset (-8)
160
176
        lds.l   @r15+, pr
 
177
        cfi_adjust_cfa_offset (-4)
 
178
        cfi_restore (pr)
161
179
        mov.l   @r15+, r12
 
180
        cfi_adjust_cfa_offset (-4)
 
181
        cfi_restore (r12)
162
182
        mov.l   @r15+, r10
 
183
        cfi_adjust_cfa_offset (-4)
 
184
        cfi_restore (r10)
163
185
        mov.l   @r15+, r9
 
186
        cfi_adjust_cfa_offset (-4)
 
187
        cfi_restore (r9)
164
188
        mov.l   @r15+, r8
 
189
        cfi_adjust_cfa_offset (-4)
 
190
        cfi_restore (r8)
165
191
        rts
166
192
         nop
 
193
        cfi_restore_state
167
194
 
168
195
3:
169
196
        neg     r0, r0
170
197
6:
171
198
        mov     r0, r10
 
199
        DEC (@(NWAITERS,r8), r2)
 
200
.Lerrno_exit:
172
201
        mova    .Lgot2, r0
173
202
        mov.l   .Lgot2, r12
174
203
        add     r0, r12
183
212
        .long   errno@GOTTPOFF
184
213
.Lexit:
185
214
        mov.l   r10, @r0
186
 
        DEC (@(NWAITERS,r8), r2)
187
215
        bra     10b
188
216
         mov    #-1, r0
189
217
 
220
248
        .long   _Unwind_Resume
221
249
#endif
222
250
.LENDCODE:
 
251
        cfi_endproc
223
252
        .size   sem_wait_cleanup,.-sem_wait_cleanup
224
253
 
225
254
 
226
255
        .section .gcc_except_table,"a",@progbits
227
256
.LexceptSTART:
228
 
        .byte   0xff                            ! @LPStart format (omit)
229
 
        .byte   0xff                            ! @TType format (omit)
230
 
        .byte   0x01                            ! call-site format
231
 
                                                ! DW_EH_PE_uleb128
 
257
        .byte   DW_EH_PE_omit                   ! @LPStart format (omit)
 
258
        .byte   DW_EH_PE_omit                   ! @TType format (omit)
 
259
        .byte   DW_EH_PE_uleb128                ! call-site format
232
260
        .uleb128 .Lcstend-.Lcstbegin
233
261
.Lcstbegin:
234
262
        .uleb128 .LcleanupSTART-.LSTARTCODE
241
269
        .uleb128  0
242
270
.Lcstend:
243
271
 
244
 
 
245
 
        .section .eh_frame,"a",@progbits
246
 
.LSTARTFRAME:
247
 
        .ualong .LENDCIE-.LSTARTCIE             ! Length of the CIE.
248
 
.LSTARTCIE:
249
 
        .ualong 0                               ! CIE ID.
250
 
        .byte   1                               ! Version number.
251
 
#ifdef SHARED
252
 
        .string "zPLR"                          ! NUL-terminated augmentation
253
 
                                                ! string.
254
 
#else
255
 
        .string "zPL"                           ! NUL-terminated augmentation
256
 
                                                ! string.
257
 
#endif
258
 
        .uleb128 1                              ! Code alignment factor.
259
 
        .sleb128 -4                             ! Data alignment factor.
260
 
        .byte   0x11                            ! Return address register
261
 
                                                ! column.
262
 
#ifdef SHARED
263
 
        .uleb128 7                              ! Augmentation value length.
264
 
        .byte   0x9b                            ! Personality: DW_EH_PE_pcrel
265
 
                                                ! + DW_EH_PE_sdata4
266
 
                                                ! + DW_EH_PE_indirect
267
 
        .ualong DW.ref.__gcc_personality_v0-.
268
 
        .byte   0x1b                            ! LSDA Encoding: DW_EH_PE_pcrel
269
 
                                                ! + DW_EH_PE_sdata4.
270
 
        .byte   0x1b                            ! FDE Encoding: DW_EH_PE_pcrel
271
 
                                                ! + DW_EH_PE_sdata4.
272
 
#else
273
 
        .uleb128 6                              ! Augmentation value length.
274
 
        .byte   0x0                             ! Personality: absolute
275
 
        .ualong __gcc_personality_v0
276
 
        .byte   0x0                             ! LSDA Encoding: absolute
277
 
#endif
278
 
        .byte 0x0c                              ! DW_CFA_def_cfa
279
 
        .uleb128 0xf
280
 
        .uleb128 0
281
 
        .align 4
282
 
.LENDCIE:
283
 
 
284
 
        .ualong .LENDFDE-.LSTARTFDE             ! Length of the FDE.
285
 
.LSTARTFDE:
286
 
        .ualong .LSTARTFDE-.LSTARTFRAME         ! CIE pointer.
287
 
#ifdef SHARED
288
 
        .ualong .LSTARTCODE-.                   ! PC-relative start address
289
 
                                                ! of the code.
290
 
#else
291
 
        .ualong .LSTARTCODE                     ! Start address of the code.
292
 
#endif
293
 
        .ualong .LENDCODE-.LSTARTCODE           ! Length of the code.
294
 
        .uleb128 4                              ! Augmentation size
295
 
#ifdef SHARED
296
 
        .ualong .LexceptSTART-.
297
 
#else
298
 
        .ualong .LexceptSTART
299
 
#endif
300
 
 
301
 
        .byte   4                               ! DW_CFA_advance_loc4
302
 
        .ualong .Lpush_r8-.LSTARTCODE
303
 
        .byte   14                              ! DW_CFA_def_cfa_offset
304
 
        .uleb128 4
305
 
        .byte   0x88                            ! DW_CFA_offset r8
306
 
        .uleb128 1
307
 
        .byte   4                               ! DW_CFA_advance_loc4
308
 
        .ualong .Lpush_r9-.Lpush_r8
309
 
        .byte   14                              ! DW_CFA_def_cfa_offset
310
 
        .uleb128 8
311
 
        .byte   0x89                            ! DW_CFA_offset r9
312
 
        .uleb128 2
313
 
        .byte   4                               ! DW_CFA_advance_loc4
314
 
        .ualong .Lpush_r10-.Lpush_r9
315
 
        .byte   14                              ! DW_CFA_def_cfa_offset
316
 
        .uleb128 12
317
 
        .byte   0x8a                            ! DW_CFA_offset r10
318
 
        .uleb128 3
319
 
        .byte   4                               ! DW_CFA_advance_loc4
320
 
        .ualong .Lpush_r12-.Lpush_r10
321
 
        .byte   14                              ! DW_CFA_def_cfa_offset
322
 
        .uleb128 16
323
 
        .byte   0x8c                            ! DW_CFA_offset r12
324
 
        .uleb128 4
325
 
        .byte   4                               ! DW_CFA_advance_loc4
326
 
        .ualong .Lpush_pr-.Lpush_r12
327
 
        .byte   14                              ! DW_CFA_def_cfa_offset
328
 
        .uleb128 20
329
 
        .byte   0x91                            ! DW_CFA_offset pr
330
 
        .uleb128 5
331
 
        .byte   4                               ! DW_CFA_advance_loc4
332
 
        .ualong .Lalloc-.Lpush_pr
333
 
        .byte   14                              ! DW_CFA_def_cfa_offset
334
 
        .uleb128 28
335
 
        .align  4
336
 
.LENDFDE:
337
 
 
338
 
 
339
272
#ifdef SHARED
340
273
        .hidden DW.ref.__gcc_personality_v0
341
274
        .weak   DW.ref.__gcc_personality_v0