]> git.unchartedbackwaters.co.uk Git - francis/winuae.git/commitdiff
Fallback to indirect mode if HDF read/write address is not plain memory (but some...
authorToni Wilen <twilen@winuae.net>
Fri, 17 Aug 2018 20:14:00 +0000 (23:14 +0300)
committerToni Wilen <twilen@winuae.net>
Fri, 17 Aug 2018 20:14:00 +0000 (23:14 +0300)
hardfile.cpp

index 26b38cf783e145f465ebbd9b624ad8a563f8c5d4..3720bd40ec71fc12fc51d1c7ec46ab6994a2e1ec 100644 (file)
@@ -1282,10 +1282,12 @@ static uae_u64 cmd_read(TrapContext *ctx, struct hardfiledata *hfd, uaecptr data
                return 0;
        if (!ctx && real_address_allowed()) {
                addrbank *bank_data = &get_mem_bank (dataptr);
-               if (!bank_data || !bank_data->check (dataptr, len))
+               if (!bank_data)
                        return 0;
-               uae_u8 *buffer = bank_data->xlateaddr(dataptr);
-               return cmd_readx(hfd, buffer, offset, len);
+               if (bank_data->check(dataptr, len)) {
+                       uae_u8 *buffer = bank_data->xlateaddr(dataptr);
+                       return cmd_readx(hfd, buffer, offset, len);
+               }
        }
        int total = 0;
        while (len > 0) {
@@ -1315,10 +1317,12 @@ static uae_u64 cmd_write(TrapContext *ctx, struct hardfiledata *hfd, uaecptr dat
                return 0;
        if (!ctx && real_address_allowed()) {
                addrbank *bank_data = &get_mem_bank (dataptr);
-               if (!bank_data || !bank_data->check (dataptr, len))
+               if (!bank_data)
                        return 0;
-               uae_u8 *buffer = bank_data->xlateaddr(dataptr);
-               return cmd_writex(hfd, buffer, offset, len);
+               if (bank_data->check(dataptr, len)) {
+                       uae_u8 *buffer = bank_data->xlateaddr(dataptr);
+                       return cmd_writex(hfd, buffer, offset, len);
+               }
        }
        int total = 0;
        while (len > 0) {