Hi guys, I've also been looking at this as a side-project. I got as far as getting a no crash run on G4 hardware with a few test failures. It requires a number of functions to be changed to remove usage of fsqrt and fcfid, as well as altering the instruction cache size to 32. The code changes I have are not quite in a form where they are ready to go in to the main branch, but I will try and get them on github in either a separate branch or on my fork of the project.
Regards Mike T On 23 December 2013 12:51, tio00 <[email protected]> wrote: > Great! Thanks for your quick reply. Just one more quick question: > > I've found several calls to fcfid, what would be the accepted way of > adding an exception for the g4 in the code, in general? > > > > On Monday, December 23, 2013 1:42:11 PM UTC+1, Andrew Low wrote: > >> This is the same problem as https://github.com/andrewlow/v8ppc/issues/97 >> >> The G4 processor lacks some of the machine instructions the code uses. If >> you look we've already fixed the G5 that also has a few missing, but not as >> many as the G4. >> >> If you want to help please coordinate via the issue. It might be a bit >> slow as we're in the holiday season. >> On Dec 23, 2013 4:34 AM, "tio00" <[email protected]> wrote: >> >>> Hi all! >>> >>> I'm totally new to this, and first off I would like to thank everyone >>> for the awesome work you are doing! >>> >>> I, too, love using old hardware, which is why I recently took an old >>> Titanium Powerbook G4 and installed Linux Mint PPC on it: >>> >>> cat /etc/issue >>> Linux MintPPC 11 \n \l >>> >>> It works great, and it blew me away when I found that you guys are >>> porting node.js to ppc. I downloaded the release version and it compiled >>> successfully, but I received an "Illegal instruction" imediately when >>> trying to run node and npm. I found this thread and followed your >>> instructions, and below is the info I got (I removed the comments before >>> the PrintF's in is_processor to check that the processor was correctly >>> identified): >>> >>> git clone https://github.com/andrewlow/v8ppc.git >>> >>> LD_SHOW_AUXV=1 /bin/true >>> AT_DCACHEBSIZE: 0x20 >>> AT_ICACHEBSIZE: 0x20 >>> AT_UCACHEBSIZE: 0x0 >>> AT_SYSINFO_EHDR: 0x100000 >>> AT_HWCAP: mmu fpu altivec ppc32 >>> AT_PAGESZ: 4096 >>> AT_CLKTCK: 100 >>> AT_PHDR: 0x10000034 >>> AT_PHENT: 32 >>> AT_PHNUM: 9 >>> AT_BASE: 0x48000000 >>> AT_FLAGS: 0x0 >>> AT_ENTRY: 0x10000c9c >>> AT_UID: 1000 >>> AT_EUID: 1000 >>> AT_GID: 1000 >>> AT_EGID: 1000 >>> AT_SECURE: 0 >>> AT_RANDOM: 0xbf9356e0 >>> AT_EXECFN: /bin/true >>> AT_PLATFORM: ppc7450 >>> AT_BASE_PLATFORM:ppc7450 >>> >>> cat /proc/cpuinfo >>> processor : 0 >>> cpu : 7455, altivec supported >>> clock : 867.000000MHz >>> revision : 3.2 (pvr 8001 0302) >>> bogomips : 86.64 >>> timebase : 33330863 >>> platform : PowerMac >>> model : PowerBook3,5 >>> machine : PowerBook3,5 >>> motherboard : PowerBook3,5 MacRISC2 MacRISC Power Macintosh >>> detected as : 80 (PowerBook Titanium IV) >>> pmac flags : 0000001b >>> L2 cache : 256K unified >>> pmac-generation : NewWorld >>> Memory : 1024 MB >>> >>> gdb out/ppc.debug/d8GNU gdb (GDB) 7.4.1-debian >>> Copyright (C) 2012 Free Software Foundation, Inc. >>> License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl. >>> html> >>> This is free software: you are free to change and redistribute it. >>> There is NO WARRANTY, to the extent permitted by law. Type "show >>> copying" >>> and "show warranty" for details. >>> This GDB was configured as "powerpc-linux-gnu". >>> For bug reporting instructions, please see: >>> <http://www.gnu.org/software/gdb/bugs/>... >>> Reading symbols from /home/toro/Development/v8ppc/ >>> out/ppc.debug/d8...done. >>> (gdb) r --test --stress-opt --always-opt --nobreak-on-abort >>> --nodead-code-elimination --enable-slow-asserts --debug-code --verify-heap >>> /home/toro/Development/v8ppc/test/mjsunit/mjsunit.js >>> /home/toro/Development/v8ppc/test/mjsunit/regress/regress-crbug-3184.js >>> Starting program: /home/toro/Development/v8ppc/out/ppc.debug/d8 --test >>> --stress-opt --always-opt --nobreak-on-abort --nodead-code-elimination >>> --enable-slow-asserts --debug-code --verify-heap >>> /home/toro/Development/v8ppc/test/mjsunit/mjsunit.js >>> /home/toro/Development/v8ppc/test/mjsunit/regress/regress-crbug-3184.js >>> [Thread debugging using libthread_db enabled] >>> Using host libthread_db library "/lib/powerpc-linux-gnu/ >>> libthread_db.so.1". >>> ============ Stress 1/2 ============ >>> cpu_type = ppc7450 >>> cpu_type = ppc7450 >>> [New Thread 0x48938480 (LWP 18960)] >>> >>> Program received signal SIGILL, Illegal instruction. >>> 0x4aa0e98c in ?? () >>> (gdb) bt >>> #0 0x4aa0e98c in ?? () >>> #1 0x4aa47e18 in ?? () >>> Backtrace stopped: previous frame inner to this frame (corrupt stack?) >>> (gdb) x/20i $pc-16 >>> 0x4aa0e97c: stw r0,0(r1) >>> 0x4aa0e980: stw r10,4(r1) >>> 0x4aa0e984: lfd f6,0(r1) >>> 0x4aa0e988: addi r1,r1,8 >>> => 0x4aa0e98c: fcfid f6,f6 >>> 0x4aa0e990: fcmpu cr7,f7,f6 >>> 0x4aa0e994: bso cr7,0x4aa0e9b8 >>> 0x4aa0e998: beq cr7,0x4aa0e9a8 >>> 0x4aa0e99c: blt cr7,0x4aa0e9b0 >>> 0x4aa0e9a0: li r3,1 >>> 0x4aa0e9a4: blr >>> 0x4aa0e9a8: li r3,0 >>> 0x4aa0e9ac: blr >>> 0x4aa0e9b0: li r3,-1 >>> 0x4aa0e9b4: blr >>> 0x4aa0e9b8: li r3,-1 >>> 0x4aa0e9bc: blr >>> 0x4aa0e9c0: lwz r5,-1(r3) >>> 0x4aa0e9c4: lbz r5,7(r5) >>> 0x4aa0e9c8: cmpwi cr7,r5,166 >>> (gdb) >>> >>> Seems like its stopping at a fcfid, which seems to be a 64 bit >>> instruction... >>> >>> I'd like to help, but I'm pretty much a noob. But anything I can do, >>> please let me know. I have everything set up, so I just need a pointer in >>> the right direction. >>> >>> Again, thanks for all your hard work. >>> >>> >>> >>> On Wednesday, October 16, 2013 3:19:28 PM UTC+2, Andrew Low wrote: >>>> >>>> Chasing this is a side-project, I've got plenty of other stuff I'm >>>> working on too :) >>>> >>>> The main reason that this is interesting is that it might help me >>>> resolve: https://github.com/andrewlow/v8ppc/issues/93 -> but only if >>>> I can wrangle up some local hardware. Working over the wire is ok, but very >>>> very slow. These types of problems require a lot of iterations. >>>> >>>> Thanks for the details on your iBook. One of the guys here has an old >>>> G4 we can try out, but we need to install Linux on it. >>>> >>>> The trace is informative as well. It shows that "lots" of code is >>>> running, but you hit something specific causing a problem. This is not >>>> likely an issue with the Node code, but something in V8 (the JS runtime >>>> engine used by Node). >>>> >>>> If you want to tinker - build the V8 code and run it. >>>> >>>> git clone https://github.com/andrewlow/v8ppc.git >>>> cd v8ppc >>>> make dependencies >>>> make ppc >>>> >>>> Then run the resulting d8 shell. >>>> >>>> ./out/ppc.debug/d8 >>>> >>>> If that works, you can try some simple JS code (either type it in to >>>> the shell, or pass a foo.js file in on the command line). >>>> >>>> To run the V8 test suite, try: >>>> >>>> tools/run-tests.py -j 12 --progress=dots --no-presubmit >>>> --arch-and-mode=ppc.debug >>>> >>>> When you have a crash case - running the scenario under gdb and >>>> capturing some info from there will be helpful. >>>> >>>> gdb out/ppc.debug/d8 >>>> >>>> inside gdb: >>>> r <optional command line args> >>>> ... it crashes.. >>>> bt <- generates a back trace, likely corrupted >>>> x/20i $pc-16 <- dump instructions around the crash location >>>> i r <- dump registers >>>> >>>> That data will help isolate the issue. >>>> On Wednesday, October 16, 2013 7:10:37 AM UTC-4, Carlos Arija wrote: >>>>> >>>>> First of all, please do not put much time in this problem. It is just >>>>> a test. >>>>> Any way, here are the iBook G4 specs, if they are of any use to you. >>>>> And if I could be of any help in your project, just tell me. >>>>> >>>>> /etc/issue >>>>> Debian GNU/Linux 7 \n \l >>>>> >>>>> /proc/cpuinfo >>>>> processor : 0 >>>>> cpu : 7447A, altivec supported >>>>> clock : 1199.999000MHz >>>>> revision : 1.2 (pvr 8003 0102) >>>>> bogomips : 73.72 >>>>> timebase : 18432000 >>>>> platform : PowerMac >>>>> model : PowerBook6,5 >>>>> machine : PowerBook6,5 >>>>> motherboard : PowerBook6,5 MacRISC3 Power Macintosh >>>>> detected as : 287 (iBook G4) >>>>> pmac flags : 0000001b >>>>> L2 cache : 512K unified >>>>> pmac-generation : NewWorld >>>>> Memory : 1280 MB >>>>> >>>>> Attachment: result of ./node -trace, until the program crashed with an >>>>> "illegal instruction" >>>>> >>>>> >>>>> El martes, 15 de octubre de 2013 22:15:28 UTC+2, Andrew Low escribió: >>>>>> >>>>>> I've got some good news and some bad news. >>>>>> >>>>>> Bad news - I can't replicate your problem. >>>>>> >>>>>> Good news - I was able to dig up an old PowerMac running Ubuntu. >>>>>> >>>>>> $ cat /etc/issue >>>>>> Ubuntu 10.04.4 LTS \n \l >>>>>> >>>>>> Unfortunately it appears to be a G5, not a G4. >>>>>> >>>>>> $ cat /proc/cpuinfo >>>>>> processor : 0 >>>>>> cpu : PPC970FX, altivec supported >>>>>> clock : 1800.000000MHz >>>>>> revision : 3.0 (pvr 003c 0300) >>>>>> >>>>>> processor : 1 >>>>>> cpu : PPC970FX, altivec supported >>>>>> clock : 1800.000000MHz >>>>>> revision : 3.0 (pvr 003c 0300) >>>>>> >>>>>> timebase : 33333333 >>>>>> platform : PowerMac >>>>>> model : PowerMac7,3 >>>>>> machine : PowerMac7,3 >>>>>> motherboard : PowerMac7,3 MacRISC4 Power Macintosh >>>>>> detected as : 336 (PowerMac G5) >>>>>> pmac flags : 00000000 >>>>>> L2 cache : 512K unified >>>>>> pmac-generation : NewWorld >>>>>> >>>>>> FWIW - v8 seems to bootstrap just fine >>>>>> >>>>>> $ ./out/ppc.debug/d8 >>>>>> V8 version 3.14.5 (candidate) [console: dumb] >>>>>> d8> 3+4 >>>>>> 7 >>>>>> d8> >>>>>> >>>>>> >>>>>> >>>>>> -- >>> -- >>> Job Board: http://jobs.nodejs.org/ >>> Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List- >>> Posting-Guidelines >>> You received this message because you are subscribed to the Google >>> Groups "nodejs" group. >>> To post to this group, send email to [email protected] >>> >>> To unsubscribe from this group, send email to >>> [email protected] >>> >>> For more options, visit this group at >>> http://groups.google.com/group/nodejs?hl=en?hl=en >>> >>> --- >>> You received this message because you are subscribed to a topic in the >>> Google Groups "nodejs" group. >>> To unsubscribe from this topic, visit https://groups.google.com/d/ >>> topic/nodejs/ivGMr-C_m1Y/unsubscribe. >>> To unsubscribe from this group and all its topics, send an email to >>> [email protected]. >>> >>> For more options, visit https://groups.google.com/groups/opt_out. >>> >> -- > -- > Job Board: http://jobs.nodejs.org/ > Posting guidelines: > https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines > You received this message because you are subscribed to the Google > Groups "nodejs" group. > To post to this group, send email to [email protected] > To unsubscribe from this group, send email to > [email protected] > For more options, visit this group at > http://groups.google.com/group/nodejs?hl=en?hl=en > > --- > You received this message because you are subscribed to a topic in the > Google Groups "nodejs" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/nodejs/ivGMr-C_m1Y/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > For more options, visit https://groups.google.com/groups/opt_out. > -- -- Job Board: http://jobs.nodejs.org/ Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines You received this message because you are subscribed to the Google Groups "nodejs" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en --- You received this message because you are subscribed to the Google Groups "nodejs" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/groups/opt_out.
