You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/app-emulation/softgun/files/softgun-0.22-fix-declaratio...

149 lines
4.3 KiB

Subject: [PATCH] fix declarations with type mismatches
Type mismatches between declarations prevent the compile from using LTO
Bug: https://bugs.gentoo.org/854534
Upstream: https://sourceforge.net/p/softgun/patches/5/
# Pascal Jäger <pascal.jaeger@leimstift.de> (2023-09-21)
--- a/m16c/idecode_m16c.c
+++ b/m16c/idecode_m16c.c
@@ -9,7 +9,7 @@
#include "sglib.h"
M16C_InstructionProc **iProcTab;
-M16C_Instruction **iTab;
+M16C_Instruction **iTabM16C;
static M16C_Instruction instrlist[] = {
{0xfef0,0x76f0,"abs.size_dst",2 ,m16c_abs_size_dst},
@@ -308,7 +308,7 @@ M16C_IDecoderNew()
int i,j;
int onecount1,onecount2;
iProcTab=(M16C_InstructionProc**)sg_calloc(0x10000*sizeof(M16C_InstructionProc*));
- iTab=sg_calloc(0x10000*sizeof(M16C_Instruction*));
+ iTabM16C=sg_calloc(0x10000*sizeof(M16C_Instruction*));
fprintf(stderr,"Allocated M16C Instruction decoder table\n");
for(j=0;instrlist[j].proc;j++) {
M16C_Instruction *instr = &instrlist[j];
@@ -327,8 +327,8 @@ M16C_IDecoderNew()
}
#endif
if((i & instr->mask) == instr->icode) {
- if(iTab[i]) {
- M16C_Instruction *instr2 = iTab[i];
+ if(iTabM16C[i]) {
+ M16C_Instruction *instr2 = iTabM16C[i];
specmask1 = instr->mask;
specmask2 = instr2->mask;
onecount1 = SGLib_OnecountU32(instr->mask);
@@ -336,18 +336,18 @@ M16C_IDecoderNew()
fprintf(stderr,"Collission %s, %s\n",instr->name,instr2->name);
#if 0
if(instr->len > instr2->len) {
- iTab[i] = instr;
+ iTabM16C[i] = instr;
iProcTab[i] = instr->proc;
} else if(instr2->len > instr->len) {
- iTab[i] = instr2;
+ iTabM16C[i] = instr2;
iProcTab[i] = instr2->proc;
} else
#endif
if(onecount1 > onecount2) {
- iTab[i] = instr;
+ iTabM16C[i] = instr;
iProcTab[i] = instr->proc;
} else if(onecount2 > onecount1) {
- iTab[i] = instr2;
+ iTabM16C[i] = instr2;
iProcTab[i] = instr2->proc;
} else {
fprintf(stderr,"Can not decide %s, %s\n",instr->name,instr2->name);
@@ -360,10 +360,10 @@ M16C_IDecoderNew()
specmask2 |= 0xff00;
}
if((specmask2 & specmask1) == specmask1) {
- iTab[i] = instr2;
+ iTabM16C[i] = instr2;
iProcTab[i] = instr2->proc;
} else if((specmask2 & specmask1) == specmask2) {
- iTab[i] = instr;
+ iTabM16C[i] = instr;
iProcTab[i] = instr->proc;
} else {
fprintf(stdout,"%04x: no instruction is more specific %s %s %04x %04x %d %d\n",i,instr->name,instr2->name,instr->icode,instr2->icode,instr->len,instr2->len);
@@ -371,13 +371,13 @@ M16C_IDecoderNew()
}
#endif
} else {
- iTab[i] = instr;
+ iTabM16C[i] = instr;
iProcTab[i] = instr->proc;
}
}
}
- if(iTab[i] == NULL) {
- iTab[i] = &undefined_instr;
+ if(iTabM16C[i] == NULL) {
+ iTabM16C[i] = &undefined_instr;
iProcTab[i] = (&undefined_instr)->proc;
}
}
--- a/m16c/idecode_m16c.h
+++ b/m16c/idecode_m16c.h
@@ -11,14 +11,14 @@ typedef struct M16C_Instruction {
} M16C_Instruction;
extern M16C_InstructionProc **iProcTab;
-extern M16C_Instruction **iTab;
+extern M16C_Instruction **iTabM16C;
void M16C_IDecoderNew(void);
static inline M16C_Instruction *
M16C_InstructionFind(uint16_t icode)
{
- return iTab[icode];
+ return iTabM16C[icode];
}
static inline M16C_InstructionProc *
M16C_InstructionProcFind(uint16_t icode)
--- a/m16c/instructions_m16c.h
+++ b/m16c/instructions_m16c.h
@@ -160,7 +160,7 @@ void m16c_smovb_size(void);
void m16c_smovf_size(void);
void m16c_sstr_size(void);
void m16c_stc_srcdst(void);
-void m16c_stc_pcdst(void);
+void m16c_stc_pcdst(uint16_t icode);
void m16c_stctx_abs16abs20(void);
void m16c_ste_size_srcabs20(void);
void m16c_ste_size_srcdsp20(void);
--- a/ppc/mmu_ppc.c
+++ b/ppc/mmu_ppc.c
@@ -587,7 +587,7 @@ PPCMMU_Read8(uint32_t va) {
}
void
-PPCMMU_Write64(uint32_t value,uint32_t va) {
+PPCMMU_Write64(uint64_t value,uint32_t va) {
uint32_t pa=translate_data(va);
Bus_Write64(value,pa);
}
--- a/printer/decompress.c
+++ b/printer/decompress.c
@@ -55,7 +55,7 @@ enum
eeCachedColor = 0x60
};
-inline uint32_t get3pixel (uint8_t* src)
+static inline uint32_t get3pixel (uint8_t* src)
{
return (src[0] << 16) | (src[1] << 8) | (src[2]);
}
--
2.41.0