1/* Save current context and install the given one. 2 Copyright (C) 2004-2022 Free Software Foundation, Inc. 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 16 License along with the GNU C Library. If not, see 17 <https://www.gnu.org/licenses/>. */ 18 19#include <sysdep.h> 20#include <ucontext-offsets.h> 21 22ENTRY(__swapcontext) 23 24#ifdef PROF 25 ldgp $29, 0($27) 26 .set noat 27 lda AT, _mcount 28 jsr AT, (AT), _mcount 29 .set at 30 .prologue 1 31#elif defined PIC 32 .prologue 0 33#else 34 ldgp $29, 0($27) 35 .prologue 1 36#endif 37 38#ifdef PIC 39 unop 40 bsr $0, __getcontext_x !samegp 41 mov $17, $16 42 br $31, __setcontext !samegp 43#else 44 jsr $0, __getcontext_x 45 mov $17, $16 46 jmp $31, __setcontext 47#endif 48 49END(__swapcontext) 50weak_alias (__swapcontext, swapcontext) 51