--- gforth/prim 2005/12/03 15:15:20 1.180 +++ gforth/prim 2005/12/11 20:08:09 1.183 @@ -2444,17 +2444,23 @@ FP=fp; sp=(Cell*)(SYSCALL(Cell*(*)(Cell *, void *))u)(sp, &FP); fp=FP; -w@ ( a_addr -- n ) gforth wfetch -n = *(short*)(a_addr); +w@ ( a_addr -- u ) gforth wfetch +u = *(UWyde*)(a_addr); -w! ( n a_addr -- ) gforth wstore -*(short*)(a_addr) = n; +sw@ ( a_addr -- u ) gforth swfetch +u = *(Wyde*)(a_addr); -t@ ( a_addr -- n ) gforth tfetch -n = *(int*)(a_addr); +w! ( u a_addr -- ) gforth wstore +*(Wyde*)(a_addr) = u; -t! ( n a_addr -- ) gforth tstore -*(int*)(a_addr) = n; +l@ ( a_addr -- u ) gforth lfetch +u = *(UTetrabyte*)(a_addr); + +sl@ ( a_addr -- u ) gforth slfetch +u = *(Tetrabyte*)(a_addr); + +l! ( u a_addr -- ) gforth lstore +*(Tetrabyte*)(a_addr) = u; \+FFCALL @@ -2651,7 +2657,9 @@ ffi-prep-cif ( a_atypes n a_rtype a_cif w = ffi_prep_cif(a_cif, FFI_DEFAULT_ABI, n, a_rtype, a_atypes); ffi-call ( a_avalues a_rvalue a_ip a_cif -- ) gforth ffi_call +SAVE_REGS ffi_call(a_cif, a_ip, a_rvalue, a_avalues); +REST_REGS ffi-prep-closure ( a_ip a_cif a_closure -- w ) gforth ffi_prep_closure w = ffi_prep_closure(a_closure, a_cif, ffi_callback, a_ip);