Ignore:
Timestamp:
Jun 10, 2010, 4:15:49 AM (9 years ago)
Author:
gb
Message:

D'oh: jump_nfn(), call_nfn(): jump to/call the entrypoint, not the
code vector.
New slots in catch_frames.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/arm/lisp-kernel/arm-macros.s

    r13784 r13800  
    279279/* "jump" to the code-vector of the function in nfn. */
    280280define(`jump_nfn',`
    281         __(ldr pc,[nfn,#_function.codevector])
     281        __(ldr pc,[nfn,#_function.entrypoint])
    282282')
    283283
    284284/* "call the code-vector of the function in nfn. */
    285285define(`call_nfn',`
    286         __(ldr lr,[nfn,#_function.codevector])
     286        __(ldr lr,[nfn,#_function.entrypoint])
    287287        __(blx lr)
    288288')
     
    314314
    315315define(`mkcatch',`
     316        new_macro_labels()
    316317        __(build_lisp_frame(imm0))
    317318        __(movc16(imm0,make_header(catch_frame.element_count,subtag_u32_vector)))
     319        __(movs temp2,fn)
     320        __(ldrne temp2,[temp2,_function.codevector])
     321        __(ldr temp1,[rcontext,#tcr.last_lisp_frame])
    318322        __(ldr imm1,[rcontext,#tcr.catch_top])
    319323        /* imm2 is mvflag */
     
    321325        __(ldr arg_x,[rcontext,#tcr.db_link])
    322326        __(ldr temp0,[rcontext,#tcr.xframe])
    323         __(stmdb sp!,{imm0,imm1,imm2,arg_z,arg_x,temp0})
     327        __(stmdb sp!,{imm0,imm1,imm2,arg_z,arg_x,temp0,temp1,temp2})
    324328        __(add imm0,sp,#fulltag_misc)
    325329        __(str imm0,[rcontext,#tcr.catch_top])
Note: See TracChangeset for help on using the changeset viewer.