Merge pull request #801 from pcercuei/update-lightrec-20231119
authornotaz <notasas@gmail.com>
Sun, 19 Nov 2023 21:47:01 +0000 (23:47 +0200)
committerGitHub <noreply@github.com>
Sun, 19 Nov 2023 21:47:01 +0000 (23:47 +0200)
Update lightrec 20231119

deps/lightning/.gitrepo
deps/lightning/include/lightning.h.in
deps/lightning/include/lightning/jit_private.h
deps/lightning/lib/jit_disasm.c
deps/lightning/lib/jit_print.c
deps/lightning/lib/lightning.c
deps/lightrec/.gitrepo
deps/lightrec/lightrec.c
deps/lightrec/optimizer.c

index 6e32aaa..55cc9e6 100644 (file)
@@ -6,7 +6,7 @@
 [subrepo]
        remote = https://github.com/pcercuei/gnu_lightning.git
        branch = pcsx_rearmed
-       commit = 4d1ef4c372a2d7cd1cd25c637a18d802af7dfcb4
-       parent = 0f67f144fb172e9eaa7a722a0a853350f77aad15
+       commit = de026794c71386983034461bce2df3c63ccd5827
+       parent = fb67ea334b0f3984a114a6e306806a56347a83ba
        method = merge
        cmdver = 0.4.6
index 6d51235..4ab4a0a 100644 (file)
@@ -23,6 +23,7 @@
 #include <unistd.h>
 #include <stdlib.h>
 @MAYBE_INCLUDE_STDINT_H@
+#include <stdio.h>
 #include <string.h>
 #include <pthread.h>
 
@@ -1220,6 +1221,7 @@ typedef void  (*jit_free_func_ptr)        (void*);
 /*
  * Prototypes
  */
+extern void init_jit_with_debug(const char*,FILE*);
 extern void init_jit(const char*);
 extern void finish_jit(void);
 
index 9f8caf6..a730d73 100644 (file)
@@ -873,8 +873,8 @@ _emit_ldxi_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t);
 extern void
 _emit_stxi_d(jit_state_t*, jit_word_t, jit_int32_t, jit_int32_t);
 
-extern void jit_init_print(void);
-extern void jit_init_debug(const char*);
+extern void jit_init_print(FILE*);
+extern void jit_init_debug(const char*, FILE*);
 extern void jit_finish_debug(void);
 
 extern void jit_init_note(void);
index a6981fa..90d90b0 100644 (file)
@@ -71,9 +71,9 @@ static int fprintf_styled(void * stream, enum disassembler_style style, const ch
  * Implementation
  */
 void
-jit_init_debug(const char *progname)
+jit_init_debug(const char *progname, FILE *stream)
 {
-    jit_init_print();
+    jit_init_print(stream);
 #if DISASSEMBLER
     bfd_init();
 
@@ -89,7 +89,7 @@ jit_init_debug(const char *progname)
     bfd_check_format(disasm_bfd, bfd_object);
     bfd_check_format(disasm_bfd, bfd_archive);
     if (!disasm_stream)
-       disasm_stream = stdout;
+       disasm_stream = stream;
 
 #if BINUTILS_2_38
     INIT_DISASSEMBLE_INFO(disasm_info, disasm_stream, fprintf, fprintf_styled);
index 2244aab..079112b 100644 (file)
@@ -75,10 +75,10 @@ static FILE *print_stream;
  * Implementation
  */
 void
-jit_init_print(void)
+jit_init_print(FILE *stream)
 {
     if (!print_stream)
-       print_stream = stdout;
+       print_stream = stream;
 }
 
 void
index 39c4fc2..646d9db 100644 (file)
@@ -181,13 +181,19 @@ _patch_register(jit_state_t *jit, jit_node_t *node, jit_node_t *link,
  * Implementation
  */
 void
-init_jit(const char *progname)
+init_jit_with_debug(const char *progname, FILE *dbg_out)
 {
     jit_get_cpu();
-    jit_init_debug(progname);
+    jit_init_debug(progname, dbg_out);
     jit_init_size();
 }
 
+void
+init_jit(const char *progname)
+{
+       init_jit_with_debug(progname, stderr);
+}
+
 void
 finish_jit(void)
 {
index 96c4fee..4a24742 100644 (file)
@@ -6,7 +6,7 @@
 [subrepo]
        remote = https://github.com/pcercuei/lightrec.git
        branch = master
-       commit = b9e4089b3b6121f2077dc85a8fe7f934e3ae1c20
-       parent = bbe0dac4b7062d5ead765329d9ddb1e1fe01eee2
+       commit = eb2d1a88ff22a5a71e27efffdbdb423bb9b91b4f
+       parent = ab206b0c7fd5228d09d0b0cf3183405a6960ea55
        method = merge
        cmdver = 0.4.6
index f589ce8..13434b4 100644 (file)
@@ -1941,7 +1941,7 @@ struct lightrec_state * lightrec_init(char *argv0,
        else
                lut_size = CODE_LUT_SIZE * sizeof(void *);
 
-       init_jit(argv0);
+       init_jit_with_debug(argv0, stdout);
 
        state = calloc(1, sizeof(*state) + lut_size);
        if (!state)
index 90b2139..792f35c 100644 (file)
@@ -299,6 +299,9 @@ static bool reg_is_dead(const struct opcode *list, unsigned int offset, u8 reg)
                if (opcode_writes_register(list[i].c, reg))
                        return true;
 
+               if (is_syscall(list[i].c))
+                       return false;
+
                if (has_delay_slot(list[i].c)) {
                        if (op_flag_no_ds(list[i].flags) ||
                            opcode_reads_register(list[i + 1].c, reg))