Icaros 64 PRE-ALPHA WIP

paolone · 9590

wawa

  • Senior Member
  • ****
    • Posts: 265
    • Karma: +55/-0
Reply #30 on: October 20, 2019, 01:56:38 PM
actually i just compiled lunapaint for x86_64 and it works. i think ill try to see if i can get ppc build up and tested, i havent used quemu in a while and then make pull request for the main repo to enable it for all platforms even if m68k doesnt properly work yet.



wawa

  • Senior Member
  • ****
    • Posts: 265
    • Karma: +55/-0
Reply #31 on: October 20, 2019, 02:05:48 PM
just verified that linapaint opens all right on m68k. just i cant actually paint anything yet..



lm

  • Guest
Reply #32 on: October 21, 2019, 03:00:56 AM
actually i just compiled lunapaint for x86_64 and it works.
...


If so, it should be in x86_64 contrib; that compilation flag for x86_64 should be enabled by default.



wawa

  • Senior Member
  • ****
    • Posts: 265
    • Karma: +55/-0
Reply #33 on: October 21, 2019, 03:49:06 AM
there is no separate contrib source, the contribs usually compile to extras. but probably you know this. ill probably simply enable all targets and pr it to the main repo soon, because it compiles for everything i have thrown it on.



wawa

  • Senior Member
  • ****
    • Posts: 265
    • Karma: +55/-0
Reply #34 on: October 22, 2019, 02:41:06 PM
still waiting to have changes approved..



magorium

  • Legendary Member
  • *****
    • Posts: 632
    • Karma: +62/-0
  • Convicted non contributor
Reply #35 on: October 30, 2019, 11:09:18 PM
o1i already provided an excellent reply to this
I C you should replace ULONG with uint32 or uint64 as defined in /usr/include/x86_64-linux-gnu/bits/types.h and recommended in the AmigaOS SDK documentation in https://wiki.amigaos.net/wiki/Migration_Guide#Type_Consistency .
... but wanted to add by writing that by differentiating between these two types it would just makes matters worse. The whole point of the issues when porting is tht the 32-bit software uses a 32 bit specific type in order to f.e. use pointermath and which does not hold up when compiled for 64-bit.

One could argue this is a oversight from the (original) programmer (but to be fair at that point in time there probably wasn't any 64-bit future) and simply takes a lot of time to go over the source-code and detect these pitfalls (and which then need to be addressed).

Would you stick to differentiating between 32/64 bit types then you would have to either use a macro (that eventually leads to) or make use of conditional compilation in order to solve that.

Using an APTR or IPTR right from the start will make sure the actual type size will change automatically according to the bitness it was compiled for. That way no (other) source-related changes are needed. If there was to be a 128-bit AROS target then such fixed source-code would also work for this new bitness (provided no other pitfalls comes provided by using a new 128-bit target, alignment comes to mind).