na builderze Th dzieja sie dziwne rzeczy. processor    : 0 cpu       : 7450 clock      : 700MHz revision    Â: 2.1 (pvr 8000 0201) bogomips    Â: 696.32 machine     : PowerMac4,4 motherboard   : PowerMac4,4 MacRISC2 MacRISC Power Macintosh detected as   : 80 (eMac) pmac flags   Â: 00000001 L2 cache    Â: 256K unified memory     Â: 384MB pmac-generation : NewWorld
Linux anduril 2.6.8 #1 Tue Oct 19 18:04:24 UTC 2004 ppc           PowerMac4,4 unknown PLD Linux ten procek ma na pewno altivec-a, a program testujacy sypie sie na instrukcji `vand` z SIGSEGV. no naprawde cudownie. Dump of assembler code for function arch_accel: 0x10000520 <arch_accel+0>:   Âmflr  Âr0 0x10000524 <arch_accel+4>:   Âlis   r4,4096 0x10000528 <arch_accel+8>:   Âstwu  Âr1,-16(r1) 0x1000052c <arch_accel+12>:   addi  Âr4,r4,1228 0x10000530 <arch_accel+16>:   li   Âr3,4 0x10000534 <arch_accel+20>:   stw   r0,20(r1) 0x10000538 <arch_accel+24>:   bl   Â0x10010a48 <signal> 0x1000053c <arch_accel+28>:   lis   r3,4097 0x10000540 <arch_accel+32>:   li   Âr4,1 0x10000544 <arch_accel+36>:   addi  Âr3,r3,2704 0x10000548 <arch_accel+40>:   bl   Â0x10010a40 <__sigsetjmp> 0x1000054c <arch_accel+44>:   cmpwi  cr7,r3,0 0x10000550 <arch_accel+48>:   li   Âr4,0 0x10000554 <arch_accel+52>:   li   Âr3,4 0x10000558 <arch_accel+56>:   li   Âr11,-1 0x1000055c <arch_accel+60>:   beq-  Âcr7,0x10000578 <arch_accel+88> 0x10000560 <arch_accel+64>:   bl   Â0x10010a48 <signal> 0x10000564 <arch_accel+68>:   lwz   r0,20(r1) 0x10000568 <arch_accel+72>:   li   Âr3,0 0x1000056c <arch_accel+76>:   addi  Âr1,r1,16 0x10000570 <arch_accel+80>:   mtlr  Âr0 0x10000574 <arch_accel+84>:   blr 0x10000578 <arch_accel+88>:   li   Âr0,1 0x1000057c <arch_accel+92>:   lis   r9,4097 0x10000580 <arch_accel+96>:   stw   r0,2540(r9) 0x10000584 <arch_accel+100>:  Âmtvrsave r11 0x10000588 <arch_accel+104>:  Âvand  Âv0,v0,v0   <= segmentation fault 0x1000058c <arch_accel+108>:  Âli   Âr3,4 0x10000590 <arch_accel+112>:  Âli   Âr4,0 0x10000594 <arch_accel+116>:  Âbl   Â0x10010a48 <signal> 0x10000598 <arch_accel+120>:  Âlwz   r0,20(r1) 0x1000059c <arch_accel+124>:  Âli   Âr3,1 0x100005a0 <arch_accel+128>:  Âaddi  Âr1,r1,16 0x100005a4 <arch_accel+132>:  Âmtlr  Âr0 0x100005a8 <arch_accel+136>:  Âblr -- The only thing necessary for the triumph of evil is for good men to do nothing. - Edmund Burke
#include <setjmp.h> #include <signal.h> static sigjmp_buf jmpbuf; static volatile sig_atomic_t canjump = 0; void sigill_handler(int sig) { if (!canjump) { signal(sig, SIG_DFL); raise(sig); } canjump = 0; siglongjmp(jmpbuf, 1); } int arch_accel() { signal(SIGILL, sigill_handler); if (sigsetjmp(jmpbuf, 1)) { signal(SIGILL, SIG_DFL); return 0; } canjump = 1; asm volatile ( "mtspr 256, %0 \n\t" "vand %%v0, %%v0, %%v0 \n\t" : : "r" (-1) ); signal(SIGILL, SIG_DFL); return 1; } int main(int argc, char** argv) { return arch_accel(); }
_______________________________________________ pld-devel-pl mailing list pld-devel-pl@pld-linux.org http://lists.pld-linux.org/mailman/listinfo/pld-devel-pl