Date: Tue, 16 Mar 2010 01:52:03 +0000 (UTC) From: Juli Mallett <jmallett@FreeBSD.org> To: src-committers@freebsd.org, svn-src-user@freebsd.org Subject: svn commit: r205202 - user/jmallett/octeon/lib/libc/mips/sys Message-ID: <201003160152.o2G1q3Mh039622@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: jmallett Date: Tue Mar 16 01:52:03 2010 New Revision: 205202 URL: http://svn.freebsd.org/changeset/base/205202 Log: Properly save and restore the GP on the stack in __cerror, rather than using PIC_PROLOGUE which simply saves and restores it to a temporary register, as is sufficient for syscalls but not for function calls. Submitted by: C. Jayachandran (original version) Modified: user/jmallett/octeon/lib/libc/mips/sys/cerror.S Modified: user/jmallett/octeon/lib/libc/mips/sys/cerror.S ============================================================================== --- user/jmallett/octeon/lib/libc/mips/sys/cerror.S Tue Mar 16 01:48:40 2010 (r205201) +++ user/jmallett/octeon/lib/libc/mips/sys/cerror.S Tue Mar 16 01:52:03 2010 (r205202) @@ -47,21 +47,26 @@ __FBSDID("$FreeBSD$"); .globl _C_LABEL(__error) NESTED_NOPROFILE(__cerror, CALLFRAME_SIZ, ra) .mask 0x80000000, (CALLFRAME_RA - CALLFRAME_SIZ) - PIC_PROLOGUE(__cerror) + SETUP_GP PTR_SUBU sp, sp, CALLFRAME_SIZ - PTR_S ra, CALLFRAME_RA(sp) - INT_S v0, CALLFRAME_S0(sp) # save errno value - + SETUP_GP64(CALLFRAME_GP, __cerror) SAVE_GP(CALLFRAME_GP) + PTR_S ra, CALLFRAME_RA(sp) + REG_S v0, CALLFRAME_S0(sp) # save errno value + PTR_LA t9, _C_LABEL(__error) # locate address of errno jalr t9 - INT_L t0, CALLFRAME_S0(sp) + REG_L t0, CALLFRAME_S0(sp) PTR_L ra, CALLFRAME_RA(sp) INT_S t0, 0(v0) # update errno value + + RESTORE_GP64 PTR_ADDU sp, sp, CALLFRAME_SIZ + li v0, -1 li v1, -1 - PIC_RETURN() + + j ra END(__cerror)
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201003160152.o2G1q3Mh039622>