There's not much an operating system like SMSQ/E can do in order to facilitate the use of self-modifying code (which everyone seems to suspect QLiberator does - I don't know).Derek_Stewart wrote: Mon Jan 13, 2025 12:40 pm ... well producing the Q60 from a perfect hardware design in 2002, I had to use a bugged and bearly functional operating system.
In retrospect QDOS Classic by Mark Swift mag of been better. But I preferred to use SMSQ/E.
The MOVEP isxue has nothing to do with the 68040, 68060 Cache problem, that was not another bodge done by the SMQ/E programmi g team. Which I was keep out of the group and had no input, till recent times.
The problem looks to me lack of understanding of the Cache intructions, but the use and definition is clearly outlined in the SMSQ/E Reference Manual. Quite strange.
I will do an analysis of the setup of the Q60 caching in the SMSQ/E source code.
The CPU needs to be told that what might just have been written to the data cache needs to land in main memory immediately, (so, write-through) and the instruction cache might need a re-load of that memory if the change would affect its current contents. Otherwise, the CPU might always risk to execute "old" code. Doing this in general in the OS effectively disables the caches completely and slows down all programs (significantly), even those that wouldn't need it because they are properly programmed.
This can only be solved properly when the actual application (that "knows" program code has just been modified) flushes the data cache and re-loads the instruction cache if needed. That would mean QLiberator runtimes needs to be explored and fixed with cache flush and re-load instructions depending on the CPU we're running on. Modifying the OS to "fix" the problem is the wrong place. You can make SMSQ/E execute QLiberated programs, but at the cost of slowing down everything.
In theory, you could hit the same problem even with the 68020 and upwards - but the '020 cache is so small that it is unlikely.