[PATCH 05/20] Remove unnecessary cruft from memory.c / memory.h |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/hatari-devel Archives
]
- Subject: [PATCH 05/20] Remove unnecessary cruft from memory.c / memory.h
- From: Thomas Huth <huth@xxxxxxxxxxxxx>
- Date: Sun, 7 Jan 2024 09:38:33 +0100
A lot of the code in memory.c / memory.h is specific to C++ and does
not compile with a plain C compiler. Since it seems like it isn't even
used, let's simply remove it.
---
src/jaguar/memory.c | 235 --------------------------------------------
src/jaguar/memory.h | 63 +-----------
2 files changed, 1 insertion(+), 297 deletions(-)
diff --git a/src/jaguar/memory.c b/src/jaguar/memory.c
index c1b299a5..037a44c6 100644
--- a/src/jaguar/memory.c
+++ b/src/jaguar/memory.c
@@ -10,21 +10,6 @@
// JLH 12/10/2009 Repurposed this file. :-)
//
-/*
-$FFFFFF => 16,777,215
-$A00000 => 10,485,760
-
-Really, just six megabytes short of using the entire address space...
-Why not? We could just allocate the entire space and then use the MMU code to do
-things like call functions and whatnot...
-In other words, read/write would just tuck the value into the host RAM space and
-the I/O function would take care of any weird stuff...
-
-Actually: writes would tuck in the value, but reads would have to be handled
-correctly since some registers do not fall on the same address as far as reading
-goes... Still completely doable though. :-)
-*/
-
#include "memory.h"
uint8 jagMemSpace[0xF20000]; // The entire memory space of the Jaguar...!
@@ -36,229 +21,9 @@ uint8 * gpuRAM = &jagMemSpace[0xF03000];
uint8 * dspRAM = &jagMemSpace[0xF1B000];
uint8 jaguarBootROM[0x040000]; // 68K CPU BIOS ROM--uses only half of this!
-uint8 jaguarCDBootROM[0x040000]; // 68K CPU CD BIOS ROM (256K)
-
-
-#if 0
-union Word
-{
- uint16 word;
- struct {
- // This changes depending on endianness...
-#ifdef __BIG_ENDIAN__
- uint8 hi, lo; // Big endian
-#else
- uint8 lo, hi; // Little endian
-#endif
- };
-};
-#endif
-
-#if 0
-union DWord
-{
- uint32 dword;
- struct
- {
-#ifdef __BIG_ENDIAN__
- uint16 hiw, low;
-#else
- uint16 low, hiw;
-#endif
- };
-};
-#endif
-
-#if 0
-static void test(void)
-{
- Word reg;
- reg.word = 0x1234;
- reg.lo = 0xFF;
- reg.hi = 0xEE;
-
- DWord reg2;
- reg2.hiw = 0xFFFE;
- reg2.low = 0x3322;
- reg2.low.lo = 0x11;
-}
-#endif
-
-// OR, we could do like so:
-#if 0
-#ifdef __BIG_ENDIAN__
-#define DWORD_BYTE_HWORD_H 1
-#define DWORD_BYTE_HWORD_L 2
-#define DWORD_BYTE_LWORD_H 3
-#define DWORD_BYTE_LWORD_L 4
-#else
-#define DWORD_BYTE_HWORD_H 4
-#define DWORD_BYTE_HWORD_L 3
-#define DWORD_BYTE_LWORD_H 2
-#define DWORD_BYTE_LWORD_L 1
-#endif
-// But this starts to get cumbersome after a while... Is union really better?
-
-//More union stuff...
-unsigned long ByteSwap1 (unsigned long nLongNumber)
-{
- union u {unsigned long vi; unsigned char c[sizeof(unsigned long)];};
- union v {unsigned long ni; unsigned char d[sizeof(unsigned long)];};
- union u un;
- union v vn;
- un.vi = nLongNumber;
- vn.d[0]=un.c[3];
- vn.d[1]=un.c[2];
- vn.d[2]=un.c[1];
- vn.d[3]=un.c[0];
- return (vn.ni);
-}
-#endif
-
-//Not sure if this is a good approach yet...
-//should be if we use proper aliasing, and htonl and friends...
-#if 1
-uint32 & butch = *((uint32 *)&jagMemSpace[0xDFFF00]); // base of Butch == interrupt control register, R/W
-uint32 & dscntrl = *((uint32 *)&jagMemSpace[0xDFFF04]); // DSA control register, R/W
-uint16 & ds_data = *((uint16 *)&jagMemSpace[0xDFFF0A]); // DSA TX/RX data, R/W
-uint32 & i2cntrl = *((uint32 *)&jagMemSpace[0xDFFF10]); // i2s bus control register, R/W
-uint32 & sbcntrl = *((uint32 *)&jagMemSpace[0xDFFF14]); // CD subcode control register, R/W
-uint32 & subdata = *((uint32 *)&jagMemSpace[0xDFFF18]); // Subcode data register A
-uint32 & subdatb = *((uint32 *)&jagMemSpace[0xDFFF1C]); // Subcode data register B
-uint32 & sb_time = *((uint32 *)&jagMemSpace[0xDFFF20]); // Subcode time and compare enable (D24)
-uint32 & fifo_data = *((uint32 *)&jagMemSpace[0xDFFF24]); // i2s FIFO data
-uint32 & i2sdat2 = *((uint32 *)&jagMemSpace[0xDFFF28]); // i2s FIFO data (old)
-uint32 & unknown = *((uint32 *)&jagMemSpace[0xDFFF2C]); // Seems to be some sort of I2S interface
-#else
-uint32 butch, dscntrl, ds_data, i2cntrl, sbcntrl, subdata, subdatb, sb_time, fifo_data, i2sdat2, unknown;
-#endif
-
-#warning "Need to separate out this stuff (or do we???)"
-//if we use a contiguous memory space, we don't need this shit...
-//err, maybe we do, let's not be so hasty now... :-)
-
-//#define ENDIANSAFE(x) htonl(x)
-
-// The nice thing about doing it this way is that on big endian machines, htons/l
-// compile to nothing and on Intel machines, it compiles down to a single bswap instruction.
-// So endianness issues go away nicely without a lot of drama. :-D
-
-#define BSWAP16(x) (htons(x))
-#define BSWAP32(x) (htonl(x))
-//this isn't endian safe...
-#define BSWAP64(x) ((htonl(x & 0xFFFFFFFF) << 32) | htonl(x >> 32))
-// Actually, we use ESAFExx() macros instead of this, and we use GCC to check the endianness...
-uint16 & memcon1 = *((uint16 *)&jagMemSpace[0xF00000]);
-uint16 & memcon2 = *((uint16 *)&jagMemSpace[0xF00002]);
-uint16 & hc = *((uint16 *)&jagMemSpace[0xF00004]);
-uint16 & vc = *((uint16 *)&jagMemSpace[0xF00006]);
-uint16 & lph = *((uint16 *)&jagMemSpace[0xF00008]);
-uint16 & lpv = *((uint16 *)&jagMemSpace[0xF0000A]);
-uint64 & obData = *((uint64 *)&jagMemSpace[0xF00010]);
-uint32 & olp = *((uint32 *)&jagMemSpace[0xF00020]);
-uint16 & obf = *((uint16 *)&jagMemSpace[0xF00026]);
-uint16 & vmode = *((uint16 *)&jagMemSpace[0xF00028]);
-uint16 & bord1 = *((uint16 *)&jagMemSpace[0xF0002A]);
-uint16 & bord2 = *((uint16 *)&jagMemSpace[0xF0002C]);
-uint16 & hp = *((uint16 *)&jagMemSpace[0xF0002E]);
-uint16 & hbb = *((uint16 *)&jagMemSpace[0xF00030]);
-uint16 & hbe = *((uint16 *)&jagMemSpace[0xF00032]);
-uint16 & hs = *((uint16 *)&jagMemSpace[0xF00034]);
-uint16 & hvs = *((uint16 *)&jagMemSpace[0xF00036]);
-uint16 & hdb1 = *((uint16 *)&jagMemSpace[0xF00038]);
-uint16 & hdb2 = *((uint16 *)&jagMemSpace[0xF0003A]);
-uint16 & hde = *((uint16 *)&jagMemSpace[0xF0003C]);
-uint16 & vp = *((uint16 *)&jagMemSpace[0xF0003E]);
-uint16 & vbb = *((uint16 *)&jagMemSpace[0xF00040]);
-uint16 & vbe = *((uint16 *)&jagMemSpace[0xF00042]);
-uint16 & vs = *((uint16 *)&jagMemSpace[0xF00044]);
-uint16 & vdb = *((uint16 *)&jagMemSpace[0xF00046]);
-uint16 & vde = *((uint16 *)&jagMemSpace[0xF00048]);
-uint16 & veb = *((uint16 *)&jagMemSpace[0xF0004A]);
-uint16 & vee = *((uint16 *)&jagMemSpace[0xF0004C]);
-uint16 & vi = *((uint16 *)&jagMemSpace[0xF0004E]);
-uint16 & pit0 = *((uint16 *)&jagMemSpace[0xF00050]);
-uint16 & pit1 = *((uint16 *)&jagMemSpace[0xF00052]);
-uint16 & heq = *((uint16 *)&jagMemSpace[0xF00054]);
-uint32 & bg = *((uint32 *)&jagMemSpace[0xF00058]);
-uint16 & int1 = *((uint16 *)&jagMemSpace[0xF000E0]);
-uint16 & int2 = *((uint16 *)&jagMemSpace[0xF000E2]);
-uint8 * clut = (uint8 *) &jagMemSpace[0xF00400];
-uint8 * lbuf = (uint8 *) &jagMemSpace[0xF00800];
-uint32 & g_flags = *((uint32 *)&jagMemSpace[0xF02100]);
-uint32 & g_mtxc = *((uint32 *)&jagMemSpace[0xF02104]);
-uint32 & g_mtxa = *((uint32 *)&jagMemSpace[0xF02108]);
-uint32 & g_end = *((uint32 *)&jagMemSpace[0xF0210C]);
-uint32 & g_pc = *((uint32 *)&jagMemSpace[0xF02110]);
-uint32 & g_ctrl = *((uint32 *)&jagMemSpace[0xF02114]);
-uint32 & g_hidata = *((uint32 *)&jagMemSpace[0xF02118]);
-uint32 & g_divctrl = *((uint32 *)&jagMemSpace[0xF0211C]);
-uint32 g_remain; // Dual register with $F0211C
-uint32 & a1_base = *((uint32 *)&jagMemSpace[0xF02200]);
-uint32 & a1_flags = *((uint32 *)&jagMemSpace[0xF02204]);
-uint32 & a1_clip = *((uint32 *)&jagMemSpace[0xF02208]);
-uint32 & a1_pixel = *((uint32 *)&jagMemSpace[0xF0220C]);
-uint32 & a1_step = *((uint32 *)&jagMemSpace[0xF02210]);
-uint32 & a1_fstep = *((uint32 *)&jagMemSpace[0xF02214]);
-uint32 & a1_fpixel = *((uint32 *)&jagMemSpace[0xF02218]);
-uint32 & a1_inc = *((uint32 *)&jagMemSpace[0xF0221C]);
-uint32 & a1_finc = *((uint32 *)&jagMemSpace[0xF02220]);
-uint32 & a2_base = *((uint32 *)&jagMemSpace[0xF02224]);
-uint32 & a2_flags = *((uint32 *)&jagMemSpace[0xF02228]);
-uint32 & a2_mask = *((uint32 *)&jagMemSpace[0xF0222C]);
-uint32 & a2_pixel = *((uint32 *)&jagMemSpace[0xF02230]);
-uint32 & a2_step = *((uint32 *)&jagMemSpace[0xF02234]);
-uint32 & b_cmd = *((uint32 *)&jagMemSpace[0xF02238]);
-uint32 & b_count = *((uint32 *)&jagMemSpace[0xF0223C]);
-uint64 & b_srcd = *((uint64 *)&jagMemSpace[0xF02240]);
-uint64 & b_dstd = *((uint64 *)&jagMemSpace[0xF02248]);
-uint64 & b_dstz = *((uint64 *)&jagMemSpace[0xF02250]);
-uint64 & b_srcz1 = *((uint64 *)&jagMemSpace[0xF02258]);
-uint64 & b_srcz2 = *((uint64 *)&jagMemSpace[0xF02260]);
-uint64 & b_patd = *((uint64 *)&jagMemSpace[0xF02268]);
-uint32 & b_iinc = *((uint32 *)&jagMemSpace[0xF02270]);
-uint32 & b_zinc = *((uint32 *)&jagMemSpace[0xF02274]);
-uint32 & b_stop = *((uint32 *)&jagMemSpace[0xF02278]);
-uint32 & b_i3 = *((uint32 *)&jagMemSpace[0xF0227C]);
-uint32 & b_i2 = *((uint32 *)&jagMemSpace[0xF02280]);
-uint32 & b_i1 = *((uint32 *)&jagMemSpace[0xF02284]);
-uint32 & b_i0 = *((uint32 *)&jagMemSpace[0xF02288]);
-uint32 & b_z3 = *((uint32 *)&jagMemSpace[0xF0228C]);
-uint32 & b_z2 = *((uint32 *)&jagMemSpace[0xF02290]);
-uint32 & b_z1 = *((uint32 *)&jagMemSpace[0xF02294]);
-uint32 & b_z0 = *((uint32 *)&jagMemSpace[0xF02298]);
-uint16 & jpit1 = *((uint16 *)&jagMemSpace[0xF10000]);
-uint16 & jpit2 = *((uint16 *)&jagMemSpace[0xF10002]);
-uint16 & jpit3 = *((uint16 *)&jagMemSpace[0xF10004]);
-uint16 & jpit4 = *((uint16 *)&jagMemSpace[0xF10006]);
-uint16 & clk1 = *((uint16 *)&jagMemSpace[0xF10010]);
-uint16 & clk2 = *((uint16 *)&jagMemSpace[0xF10012]);
-uint16 & clk3 = *((uint16 *)&jagMemSpace[0xF10014]);
-uint16 & j_int = *((uint16 *)&jagMemSpace[0xF10020]);
-uint16 & asidata = *((uint16 *)&jagMemSpace[0xF10030]);
-uint16 & asictrl = *((uint16 *)&jagMemSpace[0xF10032]);
-uint16 asistat; // Dual register with $F10032
-uint16 & asiclk = *((uint16 *)&jagMemSpace[0xF10034]);
-uint16 & joystick = *((uint16 *)&jagMemSpace[0xF14000]);
-uint16 & joybuts = *((uint16 *)&jagMemSpace[0xF14002]);
-uint32 & d_flags = *((uint32 *)&jagMemSpace[0xF1A100]);
-uint32 & d_mtxc = *((uint32 *)&jagMemSpace[0xF1A104]);
-uint32 & d_mtxa = *((uint32 *)&jagMemSpace[0xF1A108]);
-uint32 & d_end = *((uint32 *)&jagMemSpace[0xF1A10C]);
-uint32 & d_pc = *((uint32 *)&jagMemSpace[0xF1A110]);
-uint32 & d_ctrl = *((uint32 *)&jagMemSpace[0xF1A114]);
-uint32 & d_mod = *((uint32 *)&jagMemSpace[0xF1A118]);
-uint32 & d_divctrl = *((uint32 *)&jagMemSpace[0xF1A11C]);
-uint32 d_remain; // Dual register with $F0211C
-uint32 & d_machi = *((uint32 *)&jagMemSpace[0xF1A120]);
-uint16 & ltxd = *((uint16 *)&jagMemSpace[0xF1A148]);
uint16 lrxd; // Dual register with $F1A148
-uint16 & rtxd = *((uint16 *)&jagMemSpace[0xF1A14C]);
uint16 rrxd; // Dual register with $F1A14C
-uint8 & sclk = *((uint8 *) &jagMemSpace[0xF1A150]);
-uint8 sstat; // Dual register with $F1A150
-uint32 & smode = *((uint32 *)&jagMemSpace[0xF1A154]);
// Memory debugging identifiers
diff --git a/src/jaguar/memory.h b/src/jaguar/memory.h
index e57dc84a..612e0e18 100644
--- a/src/jaguar/memory.h
+++ b/src/jaguar/memory.h
@@ -14,56 +14,11 @@ extern uint8 jagMemSpace[];
extern uint8 * jaguarMainRAM;
extern uint8 * jaguarMainROM;
extern uint8 jaguarBootROM[];
-extern uint8 jaguarCDBootROM[];
extern uint8 * gpuRAM;
extern uint8 * dspRAM;
-#if 1
-extern uint32 & butch, & dscntrl;
-extern uint16 & ds_data;
-extern uint32 & i2cntrl, & sbcntrl, & subdata, & subdatb, & sb_time, & fifo_data, & i2sdat2, & unknown;
-#else
-extern uint32 butch, dscntrl, ds_data, i2cntrl, sbcntrl, subdata, subdatb, sb_time, fifo_data, i2sdat2, unknown;
-#endif
+extern uint16 lrxd, rrxd;
-extern uint16 & memcon1, & memcon2, & hc, & vc, & lph, & lpv;
-extern uint64 & obData;
-extern uint32 & olp;
-extern uint16 & obf, & vmode, & bord1, & bord2, & hp, & hbb, & hbe, & hs,
- & hvs, & hdb1, & hdb2, & hde, & vp, & vbb, & vbe, & vs, & vdb, & vde,
- & veb, & vee, & vi, & pit0, & pit1, & heq;
-extern uint32 & bg;
-extern uint16 & int1, & int2;
-extern uint8 * clut, * lbuf;
-extern uint32 & g_flags, & g_mtxc, & g_mtxa, & g_end, & g_pc, & g_ctrl,
- & g_hidata, & g_divctrl;
-extern uint32 g_remain;
-extern uint32 & a1_base, & a1_flags, & a1_clip, & a1_pixel, & a1_step,
- & a1_fstep, & a1_fpixel, & a1_inc, & a1_finc, & a2_base, & a2_flags,
- & a2_mask, & a2_pixel, & a2_step, & b_cmd, & b_count;
-extern uint64 & b_srcd, & b_dstd, & b_dstz, & b_srcz1, & b_srcz2, & b_patd;
-extern uint32 & b_iinc, & b_zinc, & b_stop, & b_i3, & b_i2, & b_i1, & b_i0, & b_z3,
- & b_z2, & b_z1, & b_z0;
-extern uint16 & jpit1, & jpit2, & jpit3, & jpit4, & clk1, & clk2, & clk3, & j_int,
- & asidata, & asictrl;
-extern uint16 asistat;
-extern uint16 & asiclk, & joystick, & joybuts;
-extern uint32 & d_flags, & d_mtxc, & d_mtxa, & d_end, & d_pc, & d_ctrl,
- & d_mod, & d_divctrl;
-extern uint32 d_remain;
-extern uint32 & d_machi;
-extern uint16 & ltxd, lrxd, & rtxd, rrxd;
-extern uint8 & sclk, sstat;
-extern uint32 & smode;
-/*
-uint16 & ltxd = *((uint16 *)&jagMemSpace[0xF1A148]);
-uint16 lrxd; // Dual register with $F1A148
-uint16 & rtxd = *((uint16 *)&jagMemSpace[0xF1A14C]);
-uint16 rrxd; // Dual register with $F1A14C
-uint8 & sclk = *((uint8 *) &jagMemSpace[0xF1A150]);
-uint8 sstat; // Dual register with $F1A150
-uint32 & smode = *((uint32 *)&jagMemSpace[0xF1A154]);
-*/
// Read/write tracing enumeration
@@ -87,21 +42,5 @@ extern const char * whoName[9];
#define SET16(r, a, v) r[(a)] = ((v) & 0xFF00) >> 8, r[(a)+1] = (v) & 0xFF
#define GET16(r, a) ((r[(a)] << 8) | r[(a)+1])
-// This is GCC specific, but we can fix that if we need to...
-// Big plus of this approach is that these compile down to single instructions on little
-// endian machines while one big endian machines we don't have any overhead. :-)
-
-#include <byteswap.h>
-#include <endian.h>
-
-#if __BYTE_ORDER == __LITTLE_ENDIAN
- #define ESAFE16(x) bswap_16(x)
- #define ESAFE32(x) bswap_32(x)
- #define ESAFE64(x) bswap_64(x)
-#else
- #define ESAFE16(x) (x)
- #define ESAFE32(x) (x)
- #define ESAFE64(x) (x)
-#endif
#endif // __MEMORY_H__
--
2.48.1
--MP_/VkVZp1l8MIESxWVe2vPSxV2
Content-Type: text/x-patch
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename=0006-Add-Jaguar-screen-functions.patch