configure: error: Sorry, extended segfault handler not supported on your platform
--
You received this message because you are subscribed to the Google Groups "ARAnyM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to aranym+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/aranym/376d5358-f085-4500-93e3-7b2d87e2bc4fn%40googlegroups.com.
On Montag, 10. Oktober 2022 22:39:14 CEST Chris Jenkins wrote:
>I imagine there is some work to figure out whether arm 64 actually supports >an extended segfault handler (not sure what that is yet tbh) and what command >line flags are needed in order to use it.
A bit simplified:
When generating "normal" code, every access to atari is checked for accesses to I/O memory (like in https://github.com/aranym/aranym/blob/master/src/uae_cpu/memory-uae.h#L197 ) When JIT code is generated, that check is ommitted, and it relies on such accesses to generate a segfault. The segfault handler will then check whether that was actually a real segfault by accessing invalid memory, or I/O space. In the latter case, it calls the HW_get*/HW_put* functions, and then actually has to perform emulation of the generated (ARM) instructions. This has to take into account not only instructions generated by the JIT compiler, but also instructions generated by the C compiler, since before JIT code is generated, the normal emulation routines are used.
So the handler has know how to emulate the ARM instructions, and how to access the registers. This is system dependant.
But i expect that to actually not being so difficult, code for 32bit and 64bit x86 is also very similar in this area.
Much more work has to be put IMHO in the code generation. This is rather tricky, and simplified a lot on x86 due to the fact that you can restrict every single instruction to use 32bit addresses only, even on x86_64. This is absolutely necessary, since there are a lot places which assume that processor registers can be used for m68k register. If they must use real 64 bit addresses, this is not true anymore (they are written sometimes to the regs struct, which only has room for the 32bit m68k d0/a0 registers).
It also assumes that you can reach some global variables like the regs struct using 32bit offsets from the JIT generated code. I don't think the aarch64 has similar constructs.
But of course, supporting aarch64 would be a big goal. Every modern ARM device nowadays has such an architecture.
--
You received this message because you are subscribed to the Google Groups "ARAnyM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to aranym+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/aranym/30872995.3XTZUpvD0s%40earendil.
What is it that is 2 times slower than the version from 2014 that is used in BeePi? And how did you measure it (if it isn't obvious)?
Re Aranym-JIT, what happens when you try to build it?
When I run../configure --prefix= --enable-addressing=direct --enable-usbhost --disable-sdl2 --enable-jit-compiler --enable-jit-fpuI get the following error:configure: error: Sorry, extended segfault handler not supported on your platform
Is that what you get?
On Dienstag, 11. Oktober 2022 10:12:46 CEST Philippe Noble wrote:
>Aranym std 1.0.2-7373ac9 : CPU speed vs TT = 690 Aranym std 1.1.0-cur : CPU >speed vs TT = 300
IIRC, there might be some issue due to using a not-so-optimal architecture (eg. arm6 vs arm7). Maybe you can try to specify CFLAGS & CXXFLAGS before invoking configure, or if that does not work, change the configure.ac (and then rebuild configure of course)
>I tried with SDL2 : same result.
I dont' think that SDL2 vs SDL has great impact on the emulation speed.
>make[3]: *** Attente des tâches non terminées....
Google translates that to "Waiting for unfinished tasks....", so there must have some error occured before that.
Absolutely, that ’s one solution. You can also buy another SD card and use the same Pi 4.Aranym standard can be built. The issue is building Aranym-JITI'll get another SD card and install it in my Pi400 (sadly this means I can't run BeePi while I'm working on it but never mind!)I'll try building AranymJIT and then I'll let you know how it goes.Cheers,ChrisAnd if I can do that successfully, what next?Well, we are entering the most interesting part, I guess.Aranym standard runs 50% slower than the version from 2014 I use in Beepi. According to Thorsten, it looks like an optimization issue with the compilation for armv7Aranym-JIT had several compatibility issues since 2015 ! So first step will be to test if they are still there.(Once again, I confess that the only platform I've successfully built Aranym on is Mac, using Xcode, so I have a bit of work to do to figure it out on Linux.)I don't have a lot of time this week but I can put this on my list and try to do it this time!Don’t worry, we have time.Thanks again for your help-On Mon, 7 Nov 2022 at 15:55, Philippe Noble <philipp...@gmail.com> wrote:Hi Chris,Have you had time to look into this?Best regards,Philippe
To view this discussion on the web visit https://groups.google.com/d/msgid/aranym/8C2197A6-E3EE-4929-9FDF-935F289D7BD8%40gmail.com.
commit a030b4cbda1cf4a815def8349815185f034ca290
Author: Jens Heitmann <jh_dr...@users.sourceforge.net>
Date: Sat Nov 1 15:00:56 2014 +0100
Fixed faulty case
diff --git a/ChangeLog b/ChangeLog
index 245fa5f3..1961b430 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+
+2014/11/01 - Jens
+configure.ac - Fixed faulty case
+
2014/11/01 - Jens
configure.ac - Enable ARMv7 to 9 and set -marm to disable thumb instructions, not covered by sigsegv handler
diff --git a/configure.ac b/configure.ac
index 642bb67c..2fa6e3f7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1345,7 +1345,7 @@ elif [[ "x$GCC" = "xyes" -a "x$HAVE_ARM" = "xyes" ]]; then
dnl ARM CPU
if [[ "x$HAVE_GAS" = "xyes" ]]; then
case "$host_cpu" in
- armv[6-9]*)
+ armv6*|armv7*|armv8*|armv9*)
ASM_OPTIMIZATIONS="ARM/V6 architecture w optimized flags"
DEFINES="$DEFINES -DARMV6_ASSEMBLY -DARM_ASSEMBLY -DOPTIMIZED_FLAGS"
CFLAGS="$CFLAGS -march=armv6 -marm"
To view this discussion on the web visit https://groups.google.com/d/msgid/aranym/F7AA1694-FFCE-49CA-8C1C-D59AB6D09F18%40gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/aranym/CALxLGgzv9AYXGKA5%2BeaF4sRrGh%3DtaxcbGb3g5X9erSkf9TFmBA%40mail.gmail.com.
On Freitag, 11. November 2022 08:36:23 CET Miro Kropáček wrote:
>the original version would match any string starting with armv (6-9 can be >
>used also zero times)
No, it doesn't. The shell does not use regular expressions, so the "*" only applies to the following characters, not the bracket expression. You can simply verify it with
$ case armv in armv[6-9]*) echo match;; *) echo no match;; esac
output:
no match
So i agree that imho both cases match the same strings. But there must be some reason for that patch, maybe different behaviour of the shell used on RPi? Is that a ksh maybe?
In any case, i suspect the bad performance to result from the "-march=armv6" switch. Maybe someone can try different settings there?
If that should fix it, it would imho be better to remove that switches from autoconf.ac, and use the compilers defaults instead. If you really need them for whatever reason, you can always pass them to configure by using "CFLAGS=-march=armv6" ./configure etc., But getting rid of such switches is not possible without hacking the configure script.
In any case, i suspect the bad performance to result from the "-march=armv6" switch. Maybe someone can try different settings there?
If that should fix it, it would imho be better to remove that switches from autoconf.ac, and use the compilers defaults instead. If you really need them for whatever reason, you can always pass them to configure by using "CFLAGS=-march=armv6" ./configure etc., But getting rid of such switches is not possible without hacking the configure script.
--
You received this message because you are subscribed to the Google Groups "ARAnyM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to aranym+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/aranym/3376811.H8p5Gg1CAb%40earendil.
On Samstag, 12. November 2022 08:50:26 CET Paul Wratt wrote:
> for modern rpi, to get the right arch build values, check the output
> of your OS's GCC, it should be something like -march=armv7l-neon and
> --mfloat-abi=hard or similar for 32-bit, and -march=armv8-neon for
> 64-bit (Armv8/9 dont need "float" setting)
Thats why i suggested to remove the flags from configure.ac. I vaguely remember that Jens added it some years ago, also for perfomance reasons. That might be only valid for older RPi models at that time.
Removing those settings from configure.ac would allow it to override the flags at configure time. Bad things about this: we might need two different builds, tweaked for different processors, to get acceptable performance in both cases.
And of course we also have to check what influence that ARMV6_ASSEMBLY setting has on newer processors. Maybe it it should only be activated when really using armv6, but not when when using armv7 or better. Ultimatively, someone would have to check whether it makes a noticable difference on armv6.
> adding -march=armv6 -marm
this now is wrong, but it was fine for original RPi's A & B
CFLAGS="$CFLAGS -marm"
CXXFLAGS="$CXXFLAGS -marm"
verify the output (--cflags and --libs) of sdl2-config or sdl-config
if you --disable-sdl2 (this should be what .configure sets up), it
should be in the Makefile after you run .configure
$ sdl-config --cflags
-I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT
$ sdl-config --libs
-L/usr/lib/arm-linux-gnueabihf -lSDL
If you want to know what defines get set with the above output, look
thru the output of:
echo | gcc -dM -E - -march=native
gcc -march=native -E -v - </dev/null 2>&1 | grep cc1
/usr/lib/gcc/arm-linux-gnueabihf/10/cc1 -E -quiet -v -imultilib . -imultiarch arm-linux-gnueabihf - -mfloat-abi=hard -mfpu=vfp -mtls-dialect=gnu -marm -march=armv8-a+crc+simd
If you build on RPi 32bit OS _without_ setting any GCC specific
ARM/Float settings, it will run on 99% of RPi OS and most ARM Debian
OS too
To view this discussion on the web visit https://groups.google.com/d/msgid/aranym/CA%2BzYZ3_yQ_SSL05sxCLC29bhG2R%3DXWgGWfsC-cXC5NHrNsbO%3DA%40mail.gmail.com.
Thats why i suggested to remove the flags from configure.ac. I vaguely remember that Jens added it some years ago, also for perfomance reasons. That might be only valid for older RPi models at that time.
And of course we also have to check what influence that ARMV6_ASSEMBLY setting has on newer processors. Maybe it it should only be activated when really using armv6, but not when when using armv7 or better. Ultimatively, someone would have to check whether it makes a noticable difference on armv6.
--
You received this message because you are subscribed to the Google Groups "ARAnyM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to aranym+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/aranym/2315480.aRykJAZPpe%40earendil.
On Samstag, 12. November 2022 11:47:46 CET Chris Jenkins wrote:
>Do you have any other suggestions?
No sorry, not really. I'm not very experienced in ARM assembly either, and have to read the manual every time when i try to understand the code ;)
On Samstag, 12. November 2022 11:47:46 CET Chris Jenkins wrote:
>TBH I think it would be reasonable at this point to say "Aranym only supports >ARMv7 onwards and if you've got an older ARM processor then proceed at your >own risk."
I think it would be safe to leave the define, when just building for armv6. Especially when it does not break the build completely, in the worst case you should get poorer perfomance (could be considered a regression of course, but better get good performance on *current* processors than an ancient ones).
I think it would be safe to leave the define, when just building for armv6. Especially when it does not break the build completely, in the worst case you should get poorer perfomance (could be considered a regression of course, but better get good performance on *current* processors than an ancient ones).
--
You received this message because you are subscribed to the Google Groups "ARAnyM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to aranym+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/aranym/10324932.DrmEJsJWr9%40earendil.
Le 12 nov. 2022 à 13:17, Chris Jenkins <cdpje...@gmail.com> a écrit :
To view this discussion on the web visit https://groups.google.com/d/msgid/aranym/CAP1x9TkkF8ZDMLQSPx6R8PrEvVbaFE%3D-0QCa%2Bn_p3aANZ9vj8Q%40mail.gmail.com.
I have slower results on the pi400 than you ( Kronos cpu@580) but that’s a nice improvement :-)
The main issue with this version is that it freezes with TOS 4.04, whereas it works well with emutos. I don’t know if it is related or if it’s another issue.
To view this discussion on the web visit https://groups.google.com/d/msgid/aranym/CAP1x9TkkF8ZDMLQSPx6R8PrEvVbaFE%3D-0QCa%2Bn_p3aANZ9vj8Q%40mail.gmail.com.
Hi Jens,
glad to hear from you again ;)
>ARMV6_ASSEMBLY enables the use of instructions that are not available Before Arm v6.
By grepping through the source, i found that (except for sysdeps.h where it is also used for generic memory accesses), it is only used in the JIT compiler. Would it maybe be possible to replace it there with a runtime-flag instead of a compile-time define? I think similar things are already done in the x86 version where it detects availability of cmovs instructions etc.
I also wonder why instructions that where just introduced on armv6 (rev & revsh vs a series of several other instructions in the case of memory accesses) should cause such performance loss on armv7 and better.
I have slower results on the pi400 than you ( Kronos cpu@580) but that’s a nice improvement :-)That's good news. (Though I wonder why yours is a little slower...)
The main issue with this version is that it freezes with TOS 4.04, whereas it works well with emutos. I don’t know if it is related or if it’s another issue.I haven't used Atari TOS with Aranym. Is there anything special that I need to do in order to test it? I'm happy to try on my Pi when I have time.
Am 12.11.2022 um 18:41 schrieb Thorsten Otto <ad...@tho-otto.de>:Hi Jens,
glad to hear from you again ;)>ARMV6_ASSEMBLY enables the use of instructions that are not available Before Arm v6.
By grepping through the source, i found that (except for sysdeps.h where it is also used for generic memory accesses), it is only used in the JIT compiler. Would it maybe be possible to replace it there with a runtime-flag instead of a compile-time define? I think similar things are already done in the x86 version where it detects availability of cmovs instructions etc.
I also wonder why instructions that where just introduced on armv6 (rev & revsh vs a series of several other instructions in the case of memory accesses) should cause such performance loss on armv7 and better.
--
You received this message because you are subscribed to the Google Groups "ARAnyM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to aranym+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/aranym/5606590.iXLMdO7Lgm%40earendil.
--
You received this message because you are subscribed to the Google Groups "ARAnyM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to aranym+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/aranym/2753022.slQEcnrBa3%40earendil.
Quite strange indeed. I have tried different setups but the results are the same.With Beepi aranym version I get 690, so it is 15% below, but I don’t know the margin of error of Kronos.Have you configured something special ? My build was done with the default autogen.
NO_CONFIGURE=1 ./autogen.sh
../configure $common_opts
To test the freeze, you just need to boot aranym with Tos 4.04. Aranym freezes just after loading TOS 4.04 and doesn’t even boot.
Otherwise, you can use the TOS setup of Beepi. The config file and hd image are stored in /h/.system/aranym-tos/If you run it on the console use config.pi3
--
You received this message because you are subscribed to the Google Groups "ARAnyM" group.
To unsubscribe from this group and stop receiving emails from it, send an email to aranym+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/aranym/FCD116EF-2AB3-4A67-BB34-72BEA2039A53%40gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/aranym/F3433C91-6C83-421B-AA2E-347F782CBD7E%40gmail.com.
What does —enable-addressing=direct do ? I had never used this flag before.
It boots ok, but I have seen some strange behavior (tests done with BeePi)- Effectively Kronos freezes- Works : graphical bugs and elevators of the wrong size- Zview: error jpg.ldg has a bad format- Procalc : give weird results 45+10=54.999999998- Litchi, Cresus, KKcommander suffer of the same wrong number format as ProCalc- PhGmap can’t find codec …
To view this discussion on the web visit https://groups.google.com/d/msgid/aranym/A4ADBEA7-B028-40CE-8D50-E74588BED4DE%40gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/aranym/b2e44b8d-6b96-4efc-8986-e0bff5321b25n%40googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/aranym/b5a6c169-d88e-4a2a-887c-fdbceb143c13n%40googlegroups.com.