Menu

#32 Not all AmigaOS4 machines are identified

PPCJITBETA04
closed
4-opt
2014-07-20
2014-03-20
No

SAM440 is identified together with AmigaOne in the support.c (and also in the Picasso96.c) files, but the other AmigaOS4-supported machines are still falling back to the wrong timebase detection. See function machdep_amigaos4_gettimebase() regarding this issue.

The exact reason why only the AmigaOne was detected in this function must be confirmed. It is possible that the legacy AmigaOS4 machines (BPPC and CSPPC) are not compatible with the function.
If this is the case then the detection can be turned around by detecting the legacy machines and read the EClock on all new machines.

The current conclusion is: all PPC Amiga machines must be able to get the time base.

Discussion

  • Almos Rajnai

    Almos Rajnai - 2014-03-22
    • labels: --> generic bug, bug
     
  • Almos Rajnai

    Almos Rajnai - 2014-03-22
    • Priority: --> opt
     
  • Almos Rajnai

    Almos Rajnai - 2014-03-22
    • Priority: opt --> 4-opt
     
  • Almos Rajnai

    Almos Rajnai - 2014-05-17
    • Milestone: PPCJITBETA03 --> PPCJITBETA04
     
  • MickJT

    MickJT - 2014-05-26

    The Sam440ep, Sam460ex (aka X500), Pegasos II and X1000 all work fine with ReadEClock(). The X1000 EClock frequency is 66.66mhz, counter-intuitive, but if someone is wondering about that, they can read this post and know that it's OK, and tests have been done by faking the result to see if higher values worked better. The original AmigaOne systems obviously work too, seeing as Rich was making it detect them.

    SDK 53.24 adds Sam460ex and X1000 to expansion.h, but the newer SDK has also renamed some functions in dos.h. DeleteFile is now Delete, and SetFileDate is now SetDate. MACHINETYPE_SAM440EP is also renamed to MACHINETYPE_SAM440.

    Also, statvfs is now detected when configuring, and causes problems unless it is undefined in src/sysconfig.h

    So, if you don't want to bother with making changes for SDK 53.24, then stick with 53.20.

    The X1000 is machine type 6, and Sam460 is machine type 7. I suggest just making it detect 3 and up (> 2). As for BlizzardPPC and CyberstormPPC, I have no idea if ReadEClock() works properly on those.

    Moreover, the ARGB32 workaround in picasso96.c that Max Tretene (m3x) disabled in his Sam optimized version, is actually needed for my Sam440 system. The colours are wrong unless I remove the block of code that checks for SAM440EP and disables the workaround.

    The JIT on the X1000 is slow unless _ARCH_PWR4 is defined. I don't have an X1000 to test it on, so I don't know what other problems it might have. If -mcpu=970 -mtune=970 is used, an X1000 will run it but the mouse movements will be inverted, so don't do that!

     

    Last edit: MickJT 2014-05-27
    • Tobias Netzel

      Tobias Netzel - 2014-05-28

      Passing "-mcpu=970 -mtune=970" to gcc will make it generate code that uses instructions that are only available on CPUs conforming to PowerISA 2.0 and later. That means it will also generate 64 bit instructions (even on a 32 bit OS). I found that gcc 4.2.1 and older produce incorrect code in doing so, while gcc 4.2.4 (and maybe later versions?), which I'm using extensively, doesn't. You can explicitely disable the 64 bit instructions by adding "-mno-powerpc64" to the gcc command line.

       
    • Almos Rajnai

      Almos Rajnai - 2014-05-31

      Regarding the Picasso96-related changes: these are now rolled back for [#42].

       

      Related

      Tickets: #42

  • Almos Rajnai

    Almos Rajnai - 2014-05-27
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -2,3 +2,5 @@
    
     The exact reason why only the AmigaOne was detected in this function must be confirmed. It is possible that the legacy AmigaOS4 machines (BPPC and CSPPC) are not compatible with the function.
     If this is the case then the detection can be turned around by detecting the legacy machines and read the EClock on all new machines.
    +
    +The current conclusion is: all PPC machines must be able to get the time base.
    
     
  • Almos Rajnai

    Almos Rajnai - 2014-05-27
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -3,4 +3,4 @@
     The exact reason why only the AmigaOne was detected in this function must be confirmed. It is possible that the legacy AmigaOS4 machines (BPPC and CSPPC) are not compatible with the function.
     If this is the case then the detection can be turned around by detecting the legacy machines and read the EClock on all new machines.
    
    -The current conclusion is: all PPC machines must be able to get the time base.
    +The current conclusion is: all PPC Amiga machines must be able to get the time base.
    
     
  • Almos Rajnai

    Almos Rajnai - 2014-07-18
    • status: open --> accepted
    • assigned_to: Almos Rajnai
     
  • Almos Rajnai

    Almos Rajnai - 2014-07-20
    • status: accepted --> pending
     
  • Almos Rajnai

    Almos Rajnai - 2014-07-20
    • Status: pending --> closed
     

Log in to post a comment.

MongoDB Logo MongoDB