From d2d7b7fdbff788a44df78f3886cbdb149d8f2d74 Mon Sep 17 00:00:00 2001 From: Pavel <68122101+red-prig@users.noreply.github.com> Date: Thu, 24 Oct 2024 22:11:46 +0300 Subject: [PATCH] + --- fpPS4.lpi | 3 +++ src/audio/ps4_libsceaudioout.pas | 2 +- sys/jit/kern_jit.pas | 22 ++++++++++++++++++++++ sys/kern/kern_mtx.pas | 6 ++++-- 4 files changed, 30 insertions(+), 3 deletions(-) diff --git a/fpPS4.lpi b/fpPS4.lpi index 87920e18..556bb7e0 100644 --- a/fpPS4.lpi +++ b/fpPS4.lpi @@ -1530,6 +1530,9 @@ + + + diff --git a/src/audio/ps4_libsceaudioout.pas b/src/audio/ps4_libsceaudioout.pas index 7480f17e..6a056e8a 100644 --- a/src/audio/ps4_libsceaudioout.pas +++ b/src/audio/ps4_libsceaudioout.pas @@ -1082,7 +1082,7 @@ begin if (g_port_table[port_id]<>nil) then begin Result:=g_port_table[port_id].Output(ptr); - if (Result<0) then Exit(SCE_AUDIO_OUT_ERROR_BUSY); + if (Result<0) then Result:=SCE_AUDIO_OUT_ERROR_BUSY; end else begin Result:=SCE_AUDIO_OUT_ERROR_NOT_OPENED; diff --git a/sys/jit/kern_jit.pas b/sys/jit/kern_jit.pas index b55e8757..e95faa3f 100644 --- a/sys/jit/kern_jit.pas +++ b/sys/jit/kern_jit.pas @@ -1365,6 +1365,25 @@ begin vm_map_unlock(map); end; +procedure op_debug_info_addr(var ctx:t_jit_context2;addr:Pointer); +var + link_jmp:t_jit_i_link; +begin + //debug + if debug_info then + begin + link_jmp:=ctx.builder.jmp(nil_link,os8); + // + ctx.builder.cli; + op_set_r14_imm(ctx,Int64(addr)); + ctx.builder.sti; + // + link_jmp._label:=ctx.builder.get_curr_label.after; + end; + //debug +end; + + procedure pick_locked_internal(var ctx:t_jit_context2); var node:t_jit_context2.p_export_point; @@ -1398,6 +1417,9 @@ begin // op_jit2native(ctx,true); ctx.builder.call_far(node^.native); + + op_debug_info_addr(ctx,node^.native); + op_native2jit(ctx,true); // op_pop_rip_part0(ctx,0); //out:r14 diff --git a/sys/kern/kern_mtx.pas b/sys/kern/kern_mtx.pas index 955ea75f..197262ec 100644 --- a/sys/kern/kern_mtx.pas +++ b/sys/kern/kern_mtx.pas @@ -83,11 +83,13 @@ var {$ENDIF} begin {$IFDEF DEBUG_MTX} - curkthread^.td_debug_mtx:=@m; + if curkthread<>nil then + curkthread^.td_debug_mtx:=@m; {$ENDIF} EnterCriticalSection(m.c); {$IFDEF DEBUG_MTX} - curkthread^.td_debug_mtx:=nil; + if curkthread<>nil then + curkthread^.td_debug_mtx:=nil; rbp:=nil; asm movq %rbp,rbp