]> git.ipfire.org Git - thirdparty/glibc.git/blame - sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S
Remove __ASSUME_SWAPCONTEXT_SYSCALL.
[thirdparty/glibc.git] / sysdeps / unix / sysv / linux / powerpc / powerpc32 / getcontext.S
CommitLineData
aebcf54c 1/* Save current context.
d1f741e9 2 Copyright (C) 2002, 2004, 2005, 2012 Free Software Foundation, Inc.
aebcf54c
UD
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
59ba27a6
PE
16 License along with the GNU C Library; if not, see
17 <http://www.gnu.org/licenses/>. */
aebcf54c
UD
18
19#include <sysdep.h>
5ef6ae4b 20#include <rtld-global-offsets.h>
54ee14b3 21#include <shlib-compat.h>
c50ce9a4 22#include <kernel-features.h>
aebcf54c
UD
23
24#define __ASSEMBLY__
25#include <asm/ptrace.h>
26#include "ucontext_i.h"
27
c50ce9a4
UD
28#define __CONTEXT_FUNC_NAME __getcontext
29#define __CONTEXT_ENABLE_FPRS 1
30#define __CONTEXT_ENABLE_VRS 1
73f7c32c 31
c50ce9a4
UD
32/* Size of ucontext in GLIBC_2.3.4 and later. */
33#define _UC_SIZE_2_3_4 1184
5ef6ae4b 34
c50ce9a4
UD
35 .section ".text";
36ENTRY (__getcontext)
5ef6ae4b 37 li r4,0
c50ce9a4
UD
38 li r5,_UC_SIZE_2_3_4;
39 DO_CALL (SYS_ify (swapcontext));
40 bso- cr0,1f
41/* the kernel does not set the return code for the success case */
42 li r3,0
5ef6ae4b 43 blr
c50ce9a4
UD
441:
45 b __syscall_error@local
d3a4a571 46END(__getcontext)
5ef6ae4b
UD
47
48versioned_symbol (libc, __getcontext, getcontext, GLIBC_2_3_4)
49
50#if SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)
d3a4a571 51 compat_text_section
d1f741e9
WS
52
53# undef __CONTEXT_FUNC_NAME
c50ce9a4
UD
54# define __CONTEXT_FUNC_NAME __novec_getcontext
55# undef __CONTEXT_ENABLE_VRS
a334319f 56
d1f741e9 57# include "getcontext-common.S"
a334319f 58
d3a4a571 59 .previous
5ef6ae4b
UD
60
61compat_symbol (libc, __novec_getcontext, getcontext, GLIBC_2_3_3)
aebcf54c 62
5ef6ae4b 63#endif
54ee14b3
UD
64
65#if SHLIB_COMPAT (libc, GLIBC_2_1, GLIBC_2_3_3)
66
c50ce9a4
UD
67# define _ERRNO_H 1
68# include <bits/errno.h>
54ee14b3 69
d3a4a571 70 compat_text_section
54ee14b3
UD
71ENTRY (__getcontext_stub)
72 li r3,ENOSYS
b0e196a4 73 b __syscall_error@local
d3a4a571
UD
74END (__getcontext_stub)
75 .previous
54ee14b3
UD
76
77compat_symbol (libc, __getcontext_stub, getcontext, GLIBC_2_1)
78
79#endif