English Amiga Board


Go Back   English Amiga Board > Coders > Coders. System

 
 
Thread Tools
Old 07 January 2024, 17:59   #21
SpeedGeek
Moderator
 
SpeedGeek's Avatar
 
Join Date: Dec 2010
Location: Wisconsin USA
Age: 60
Posts: 841
** 8TH NEWS UPDATE **

CMQ&B040_SAFER2.3 released!

First safer version
- Added code to test for equal source and destination addresses
and avoid using Move16 for this specific case.
- Added code to test specified destination addresses and avoid
using Move16 for those cases.
SpeedGeek is offline  
Old 07 January 2024, 18:48   #22
PeterK
Registered User
 
Join Date: Apr 2005
Location: digital hell, Germany, after 1984, but worse
Posts: 3,366
Quote:
Originally Posted by SpeedGeek View Post
CMQ&B040_SAFER2.3 released!
- Added code to test for equal source and destination addresses
and avoid using Move16 for this specific case.
Strange! Are you going back to 2.1 now?
Quote:
v2.2 minor change
- Removed "Move16 Bug" detection code. This was a blunder due to
Ax = Ay meaning the same registers rather than the same addresses.
From the Autodocs for CopyMem() and CopyMemQuick():
Quote:
Arbitrary overlapping copies are not supported.
... and the address registers are always A0 and A1, never the same.

So, what is your specific case with Move16 now?

Last edited by PeterK; 07 January 2024 at 19:50.
PeterK is offline  
Old 07 January 2024, 22:21   #23
SpeedGeek
Moderator
 
SpeedGeek's Avatar
 
Join Date: Dec 2010
Location: Wisconsin USA
Age: 60
Posts: 841
Quote:
Originally Posted by PeterK View Post
Strange! Are you going back to 2.1 now?


From the Autodocs for CopyMem() and CopyMemQuick():

... and the address registers are always A0 and A1, never the same.

So, what is your specific case with Move16 now?
Yes, partially going back to 2.1 now for this specific case:

4.) If a MOVE16 instruction has both source & destination addresses
hitting in the same copyback mode cache line (effectively a cache line
push), the source is dirty in the cache line, and the access is write-
protected, then the dirty cached data may be lost.

I already explained that this is a "User Program Bug". The problem is that with Move16 there can be a loss of data which will not occur with Move.l or Movem when this bug occurs.
SpeedGeek is offline  
Old 08 January 2024, 00:06   #24
PeterK
Registered User
 
Join Date: Apr 2005
Location: digital hell, Germany, after 1984, but worse
Posts: 3,366
Quote:
Originally Posted by SpeedGeek View Post
4.)If a MOVE16 instruction has both source & destination addresses
hitting in the same copyback mode cache line (effectively a cache line
push), the source is dirty in the cache line, and the access is write-
protected, then the dirty cached data may be lost.

I already explained that this is a "User Program Bug".
Yes indeed, that must be a bug in the CopyMemQuick() calling program, I guess. If it tries to copy the complete cache line over itself, then this would violate the rules for CopyMemQuick() as explained in the Autodocs, because it's an unsupported overlapping copy.

But if the calling program would just try to copy a small portion of the same cache line without using overlapping source and destination addresses then you will probably never use Move16 for that purpose, but just Move.l instructions. Right?
PeterK is offline  
 


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools

Similar Threads
Thread Thread Starter Forum Replies Last Post
CopyMem Quick & Small released! SpeedGeek Coders. System 12 04 July 2020 14:49
Out of this Little Big World - Little Big Planet s2325 Retrogaming General Discussion 3 05 April 2015 05:09
Quick question zerohour1974 project.WHDLoad 2 18 March 2015 22:14
Big Big Boxes BinoX Hardware pics 6 27 July 2006 02:35
BIG BIG BIG WINUAE CRASH (with .dmp file included) The Rom Alien support.WinUAE 4 31 August 2004 20:26

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +2. The time now is 22:50.

Top

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
Page generated in 0.06900 seconds with 14 queries