Put dereferencing patch byte pointer in P24

This commit is contained in:
Zane Kaminski 2021-04-02 01:09:07 -04:00
parent 2cefcb0657
commit a6a136e5cd
3 changed files with 6 additions and 6 deletions

Binary file not shown.

Binary file not shown.

12
rdisk.c
View File

@ -53,12 +53,12 @@ void C24(Ptr sourcePtr, Ptr destPtr, unsigned long byteCount) {
}
// Switch to 32-bit mode and patch
typedef void (*RDiskPatch_t)(Ptr, char);
#pragma parameter P24(__A0, __D0)
void __attribute__ ((noinline)) P24(Ptr ptr, char patch) {
typedef void (*RDiskPatch_t)(Ptr, char*);
#pragma parameter P24(__A0, __A1)
void __attribute__ ((noinline)) P24(Ptr ptr, char *patch) {
signed char mode = true32b;
SwapMMUMode(&mode);
*ptr = patch; // Patch byte
*ptr = *patch; // Patch byte
SwapMMUMode(&mode);
}
@ -166,8 +166,8 @@ static void RDInit(IOParamPtr p, DCtlPtr d, RDiskStorage_t *c) {
// Patch debug and CD-ROM enable bytes
if (c->ramdisk) {
RDiskPatch_t fun = P24;
if (!dbgEN /*&& *RDiskDBGDisPos >= 0*/) { fun(c->ramdisk + 0x00000031UL, *RDiskDBGDisByte); }
if (!cdrEN /*&& *RDiskCDRDisPos >= 0*/) { fun(c->ramdisk + 0x00012CAFUL, *RDiskCDRDisByte); }
if (!dbgEN /*&& *RDiskDBGDisPos >= 0*/) { fun(c->ramdisk + 0x00000031UL, RDiskDBGDisByte); }
if (!cdrEN /*&& *RDiskCDRDisPos >= 0*/) { fun(c->ramdisk + 0x00012CAFUL, RDiskCDRDisByte); }
}
// Unmount if not booting from ROM disk