about summary refs log tree commit diff
path: root/src/thread/mips/syscall_cp.s
Commit message (Collapse)AuthorAgeFilesLines
* remove workaround for broken mips assemblersRich Felker2016-02-081-5/+1
| | | | | | | | | | | | | | | | | | | | the workaround was for a bug that botched .gpword references to local labels, applying a nonsensical random offset of -0x4000 to them. this reverses commit 5e396fb996a80b035d0f6ecf7fed50f68aa3ebb7 and a removes a similar hack that was added to syscall_cp.s in the later commit 756c8af8589265e99e454fe3adcda1d0bc5e1963. it turns out one additional instance of the same idiom, the GETFUNCSYM macro in arch/mips/reloc.h, was still affected by the assembler bug and does not admit an easy workaround without making assumptions about how the macro is used. the previous workarounds made static linking work but left the early-stage dynamic linker broken and thus had limited usefulness. instead, affected users (using binutils versions older than 2.20) will need to fix the bug on the binutils side; the trivial patch is commit 453f5985b13e35161984bf1bf657bbab11515aa4 in the binutils-gdb repository.
* in mips cancellable syscall asm, don't assume gp register is validRich Felker2016-02-041-2/+13
| | | | | | | | | | the old __cp_cancel code path loaded the address of __cancel from the GOT using the $gp register, which happened to be set to point to the correct GOT by the calling C function, but there is no ABI requirement that this happen. instead, go the roundabout way and compute the address of __cancel via pc-relative and gp-relative addressing starting with a fake return address generated by a bal instruction, which is the same trick crt1 uses to bootstrap.
* mark mips cancellable syscall code as codeRich Felker2015-05-251-0/+3
| | | | otherwise disassemblers treat it as data.
* consistently use hidden visibility for cancellable syscall internalsRich Felker2015-04-141-3/+8
| | | | | | | | | | in a few places, non-hidden symbols were referenced from asm in ways that assumed ld-time binding. while these is no semantic reason these symbols need to be hidden, fixing the references without making them hidden was going to be ugly, and hidden reduces some bloat anyway. in the asm files, .global/.hidden directives have been moved to the top to unclutter the actual code.
* prepare cancellation syscall asm for possibility of __cancel returningRich Felker2015-02-201-8/+12
|
* update mips cancellation-point syscall asm with 7-arg and r25 fixesRich Felker2012-09-151-2/+5
| | | | | these fixes were already made to the normal syscall asm but not the cancellation point version.
* fix mips syscall_cp_asm code (saved register usage)Rich Felker2012-09-091-2/+2
|
* first attempt at making threads work on mipsRich Felker2012-07-111-0/+31