[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Help needed: Porting IRAF to MIPS



(Ofcourse, I wanted to ask for help porting to MIPS/MIPSEL here instead
of S390)

On 05.05.2014 12:16, Ole Streicher wrote:
> Hi,
> 
> since a while, I am working to bring the IRAF package [1] into Debian
> [2]. I'd like to make the package working on as many Debian platforms as
> possible.
> 
> The major problem here is that IRAF needs a small piece of assembler
> code that provides a (sort of) setjmp() to their Fortran variant.
> 
> A "C" implementation for this looks like:
> 
> #include <setjmp.h>
> 
> int zsvjmp_( long *buf, long *status ) {
>   *status = 0;
>   ((long **)buf)[0] = status;
>   return sigsetjmp ((void *)((long **)buf+1),0);
> }
> 
> however this does not work, since the "sigsetjmp" call needs to be
> replaced by a jump to sigsetjmp instead.
> 
> As example, I show here the assembler for x86-64 (from the IRAF sources):
> 
>         .globl	zsvjmp_	
>         .type zsvjmp_, @function
> zsvjmp_:
>         movq %rsi, (%rdi) # store &status in jmpbuf[0]
>         movl $0, (%rsi)   # zero the value of status
>         addq $8, %rdi     # change point to &jmpbuf[1]
>         movl $0, %esi     # change arg2 to zero
>         jmp __sigsetjmp   # let sigsetjmp do the rest
>        .section        .note.GNU-stack,"",@progbits
> 
> The "zdojmp" counterpart is a portable C function.
> 
> I created a small tar file that contains the assembler I collected so
> far as well as two test programs. The function of the Fortran test
> program is still not so important since IRAF uses its own Fortran
> calling interface.
> 
> Since I have no experience with mips and mipsel machines and no glue at
> all for their assembler and the (C) calling conventions: could someone
> help me here?
> 
> Best regards
> 
> Ole
> 
> [1] http://http://iraf.noao.edu/
> [2] http://bugs.debian.org/690531
> 


Reply to: