• Floating point emulation for MIPS - ISR help needed!

    From VAXHeadroom (LCROSS FSW Lead)@21:1/5 to Jeff Daly on Mon Jan 28 14:11:33 2019
    On Tuesday, August 4, 1998 at 3:00:00 AM UTC-4, Jeff Daly wrote:
    pls excuse this if it in a funny font, i had to change over to
    communicator.

    Emory R. Stagmer wrote:

    In trying to provide a floating point emulation package for a MIPS R3000(like) processor,
    I need to return back to the NEXT instruction past the Error Program Counter (EPC).

    It seems the wrapper function for de-muxing the interrupt is mucking
    with the stack pointer
    (sp) and saving/restoring registers for me. I need to know:
    1) What registers do I REALLY need to save?
    2) Can/Should I handle the return from exception myself?
    3) Where is the stack really? Interrupt Stack? Task Stack?


    yes, the stack pointer gets set to vxIntStackBase - ESTKSIZE.all general purpose registers are saved for you. MUL_HI and MUL_LO are
    not, nor are any FP regs. i suggest not doing the return yourself.
    caveat to the first statement... unless you are a nested interrupt, you
    get stack offset from the first by ESTKSIZE. of course, be careful
    using k0/k1 registers...

    I'm connecting my routine via intVecSet(). My routine is assembler, not
    C (otherwise
    I know I'd need to use intConnect() ).

    ANY help/comments/ideas are appreciated.
    --
    Emory R. Stagmer

    If anyone ever should need this information, we did eventually solve this problem - it took quite a bit for the full emulation, but as this was done on a NASA contract I can provide both source code and a 9 page white paper on the solution.
    -- Emory @VAXHeadroom

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)