157df12f6SPeter Grehan/* 257df12f6SPeter Grehan * Copyright (c) 2004 Suleiman Souhlal 357df12f6SPeter Grehan * All rights reserved. 457df12f6SPeter Grehan * 557df12f6SPeter Grehan * Redistribution and use in source and binary forms, with or without 657df12f6SPeter Grehan * modification, are permitted provided that the following conditions 757df12f6SPeter Grehan * are met: 857df12f6SPeter Grehan * 1. Redistributions of source code must retain the above copyright 957df12f6SPeter Grehan * notice, this list of conditions and the following disclaimer. 1057df12f6SPeter Grehan * 2. Redistributions in binary form must reproduce the above copyright 1157df12f6SPeter Grehan * notice, this list of conditions and the following disclaimer in the 1257df12f6SPeter Grehan * documentation and/or other materials provided with the distribution. 1357df12f6SPeter Grehan * 1457df12f6SPeter Grehan * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 1557df12f6SPeter Grehan * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1657df12f6SPeter Grehan * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1757df12f6SPeter Grehan * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 1857df12f6SPeter Grehan * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1957df12f6SPeter Grehan * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2057df12f6SPeter Grehan * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2157df12f6SPeter Grehan * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2257df12f6SPeter Grehan * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2357df12f6SPeter Grehan * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2457df12f6SPeter Grehan * SUCH DAMAGE. 2557df12f6SPeter Grehan */ 2657df12f6SPeter Grehan 2757df12f6SPeter Grehan #include <machine/asm.h> 2857df12f6SPeter Grehan .globl CNAME(_ctx_done) 2957df12f6SPeter Grehan .globl CNAME(abort) 3057df12f6SPeter Grehan 3157df12f6SPeter Grehan ENTRY(_ctx_start) 3257df12f6SPeter Grehan mtlr %r14 3357df12f6SPeter Grehan blrl /* branch to start function */ 3457df12f6SPeter Grehan mr %r3,%r15 /* pass pointer to ucontext as argument */ 35f62da49bSJustin Hibbits bl CNAME(_ctx_done) /* branch to ctxt completion func */ 36f62da49bSJustin Hibbits 3757df12f6SPeter Grehan /* 3857df12f6SPeter Grehan * we should never return from the 3957df12f6SPeter Grehan * above branch. 4057df12f6SPeter Grehan */ 41f62da49bSJustin Hibbits /* Don't bother saving off %r30, we're already in a bad state. */ 42f62da49bSJustin Hibbits bcl 20,31,1f 43f62da49bSJustin Hibbits1: mflr %r30 44f62da49bSJustin Hibbits mr %r3,%r30 # save for _DYNAMIC 45f62da49bSJustin Hibbits addis %r30,%r30,_GLOBAL_OFFSET_TABLE_-1b@ha 46f62da49bSJustin Hibbits addi %r30,%r30,_GLOBAL_OFFSET_TABLE_-1b@l 4757df12f6SPeter Grehan bl PIC_PLT(CNAME(abort)) /* abort */ 48*0ee420b6SBrandon Bergren END(_ctx_start) 498f861da9SKonstantin Belousov 508f861da9SKonstantin Belousov .section .note.GNU-stack,"",%progbits 51