[PATCH] Replace magic constants for IDE port address |
[ Thread Index |
Date Index
| More lists.tuxfamily.org/hatari-devel Archives
]
- Subject: [PATCH] Replace magic constants for IDE port address
- From: Uwe Seimet <Uwe.Seimet@xxxxxxxxx>
- Date: Tue, 8 Jul 2025 13:17:36 +0200
---
src/ide.c | 19 +++++++++++++------
src/includes/ide.h | 1 +
2 files changed, 14 insertions(+), 6 deletions(-)
diff --git a/src/ide.c b/src/ide.c
index 3400c1b6..8564a1ad 100644
--- a/src/ide.c
+++ b/src/ide.c
@@ -25,6 +25,8 @@
#include "stMemory.h"
#include "sysdeps.h"
+uaecptr ide_addr = 0xf00000;
+
int nIDEPartitions = 0;
struct IDEState;
@@ -111,6 +113,11 @@ bool Ide_IsAvailable(void)
(Config_IsMachineFalcon() && !ConfigureParams.System.bFastBoot);
}
+bool Ide_IsValid(uaecptr address)
+{
+ return Ide_IsAvailable() && address >= ide_addr && address < ide_addr + 0x40;
+}
+
/**
* Convert Falcon IDE registers to "normal" IDE register numbers.
* (taken from Aranym - cheers!)
@@ -156,7 +163,7 @@ uae_u32 REGPARAM3 Ide_Mem_bget(uaecptr addr)
addr &= 0x00ffffff; /* Use a 24 bit address */
- if (addr >= 0xf00040 || !Ide_IsAvailable())
+ if (!Ide_IsValid(addr))
{
/* invalid memory addressing --> bus error */
M68000_BusError(addr_in, BUS_ERROR_READ, BUS_ERROR_SIZE_BYTE, BUS_ERROR_ACCESS_DATA, 0);
@@ -193,7 +200,7 @@ uae_u32 REGPARAM3 Ide_Mem_wget(uaecptr addr)
addr &= 0x00ffffff; /* Use a 24 bit address */
- if (addr >= 0xf00040 || !Ide_IsAvailable())
+ if (!Ide_IsValid(addr))
{
/* invalid memory addressing --> bus error */
M68000_BusError(addr_in, BUS_ERROR_READ, BUS_ERROR_SIZE_WORD, BUS_ERROR_ACCESS_DATA, 0);
@@ -224,7 +231,7 @@ uae_u32 REGPARAM3 Ide_Mem_lget(uaecptr addr)
addr &= 0x00ffffff; /* Use a 24 bit address */
- if (addr >= 0xf00040 || !Ide_IsAvailable())
+ if (!Ide_IsValid(addr))
{
/* invalid memory addressing --> bus error */
M68000_BusError(addr_in, BUS_ERROR_READ, BUS_ERROR_SIZE_LONG, BUS_ERROR_ACCESS_DATA, 0);
@@ -263,7 +270,7 @@ void REGPARAM3 Ide_Mem_bput(uaecptr addr, uae_u32 val)
LOG_TRACE(TRACE_IDE, "IDE: bput($%x, $%x)\n", addr, val);
- if (addr >= 0xf00040 || !Ide_IsAvailable())
+ if (!Ide_IsValid(addr))
{
/* invalid memory addressing --> bus error */
M68000_BusError(addr_in, BUS_ERROR_WRITE, BUS_ERROR_SIZE_BYTE, BUS_ERROR_ACCESS_DATA, val);
@@ -295,7 +302,7 @@ void REGPARAM3 Ide_Mem_wput(uaecptr addr, uae_u32 val)
LOG_TRACE(TRACE_IDE, "IDE: wput($%x, $%x)\n", addr, val);
- if (addr >= 0xf00040 || !Ide_IsAvailable())
+ if (!Ide_IsValid(addr))
{
/* invalid memory addressing --> bus error */
M68000_BusError(addr_in, BUS_ERROR_WRITE, BUS_ERROR_SIZE_WORD, BUS_ERROR_ACCESS_DATA, val);
@@ -320,7 +327,7 @@ void REGPARAM3 Ide_Mem_lput(uaecptr addr, uae_u32 val)
LOG_TRACE(TRACE_IDE, "IDE: lput($%x, $%x)\n", addr, val);
- if (addr >= 0xf00040 || !Ide_IsAvailable())
+ if (!Ide_IsValid(addr))
{
/* invalid memory addressing --> bus error */
M68000_BusError(addr_in, BUS_ERROR_WRITE, BUS_ERROR_SIZE_LONG, BUS_ERROR_ACCESS_DATA, val);
diff --git a/src/includes/ide.h b/src/includes/ide.h
index d7a012e9..0363edc0 100644
--- a/src/includes/ide.h
+++ b/src/includes/ide.h
@@ -15,6 +15,7 @@ extern int nIDEPartitions;
extern void Ide_Init(void);
extern void Ide_UnInit(void);
extern bool Ide_IsAvailable(void);
+extern bool Ide_IsValid(uaecptr addr);
extern uae_u32 REGPARAM3 Ide_Mem_bget(uaecptr addr);
extern uae_u32 REGPARAM3 Ide_Mem_wget(uaecptr addr);
extern uae_u32 REGPARAM3 Ide_Mem_lget(uaecptr addr);
--
2.49.0
--G5aGR/naYdGbnWQk--