Patches to make libobjc build.

* config/ia64/ia64.md (restore_stack_nonlocal): New.
	* config/ia64/lib1funcs.asm (__ia64_nonlocal_goto): Delete padding nop.
	(__ia64_restore_stack_nonlocal): New.
	* config/ia64/t-ia64 (LIB1ASMFUNCS): Add __restore_stack_nonlocal.

From-SVN: r32564
This commit is contained in:
Jim Wilson 2000-03-15 19:35:26 +00:00 committed by Jim Wilson
parent 1690826f33
commit 9525c69003
4 changed files with 66 additions and 6 deletions

View File

@ -1,3 +1,10 @@
Wed Mar 15 11:34:27 2000 Jim Wilson <wilson@cygnus.com>
* config/ia64/ia64.md (restore_stack_nonlocal): New.
* config/ia64/lib1funcs.asm (__ia64_nonlocal_goto): Delete padding nop.
(__ia64_restore_stack_nonlocal): New.
* config/ia64/t-ia64 (LIB1ASMFUNCS): Add __restore_stack_nonlocal.
2000-03-15 Alexandre Oliva <oliva@lsd.ic.unicamp.br>
* cpphash.c (collect_formal_parameters): Do not complain about

View File

@ -3173,6 +3173,24 @@
""
"fc %0\;;;\;adds %0=31,%0\;;;\;fc %0\;;;\;sync.i\;srlz.i"
[(set_attr "type" "unknown")])
;; Builtin apply support.
(define_expand "restore_stack_nonlocal"
[(use (match_operand:DI 0 "register_operand" ""))
(use (match_operand:OI 1 "memory_operand" ""))]
""
"
{
emit_library_call (gen_rtx_SYMBOL_REF (Pmode,
\"__ia64_restore_stack_nonlocal\"),
0, VOIDmode, 1,
copy_to_reg (XEXP (operands[1], 0)), Pmode);
DONE;
}")
;;; Intrinsics support.
(define_insn "ccv_restore_si"
[(unspec [(const_int 0)] 11)

View File

@ -602,11 +602,6 @@ __ia64_nonlocal_goto:
adds r2=8,in2
ld8 r12=[in2],16
mov.ret.sptk.few.dc.dc rp = r33, .L0
// ??? flushrs must be first instruction of a group. Gas is unfortunately
// putting the stop bit before the padding nop instead of after it, making
// flushrs the first instruction of its bundle, but the second instruction
// of its group. We explicitly add the nop to avoid this problem.
nop.i 0
;;
flushrs
ld8 r16=[r2],16
@ -633,3 +628,43 @@ __ia64_nonlocal_goto:
;;
.endp __ia64_nonlocal_goto
#endif
#ifdef L__restore_stack_nonlocal
// This is mostly the same as nonlocal_goto above.
// ??? This has not been tested yet.
// void __ia64_restore_stack_nonlocal(void *save_area)
.text
.align 16
.global __ia64_restore_stack_nonlocal
.proc __ia64_restore_stack_nonlocal
__ia64_restore_stack_nonlocal:
alloc r20=ar.pfs,4,0,0,0
mov r19=ar.rsc
adds r2=8,in0
ld8 r12=[in0],16
;;
flushrs
ld8 r16=[r2],16
and r19=0x1c,r19
ld8 r17=[in0]
;;
ld8 r18=[r2]
mov ar.rsc=r19
;;
mov ar.bspstore=r16
;;
mov ar.rnat=r17
mov ar.pfs=r18
or r19=0x3,r19
;;
loadrs
invala
.L0: {
mov ar.rsc=r19
br.ret.sptk.few rp
}
;;
.endp __ia64_restore_stack_nonlocal
#endif

View File

@ -11,7 +11,7 @@ LIB1ASMSRC = ia64/lib1funcs.asm
LIB1ASMFUNCS = __divdf3 __divsf3 \
__divdi3 __moddi3 __udivdi3 __umoddi3 \
__divsi3 __modsi3 __udivsi3 __umodsi3 __save_stack_nonlocal \
__nonlocal_goto
__nonlocal_goto __restore_stack_nonlocal
# ??? Hack to get -P option used when compiling lib1funcs.asm, because Intel
# assembler does not accept # line number as a comment.