On 07/24/2013 08:38 AM, Chen Gang wrote: > On 07/23/2013 09:58 PM, Michael Ellerman wrote: >> On Mon, Jul 22, 2013 at 03:02:53PM +0800, Chen Gang wrote: >>> Hello Maintainers: >>> >>> With allmodconfig and EXTRA_CFLAGS=-W", it reports warnings below: >> >>> >>> arch/powerpc/xmon/xmon.c:3027:6: warning: variable ‘i’ might be clobbered >>> by ‘longjmp’ or ‘vfork’ [-Wclobbered] >>> arch/powerpc/xmon/xmon.c:3068:6: warning: variable ‘i’ might be clobbered >>> by ‘longjmp’ or ‘vfork’ [-Wclobbered] >> >> In both these cases we are inside the body of a for loop and we do a >> if (setjmp) / else block. Although looking at the source the value of i >> is not modified by the setjmp, I guess it's possible that the compiler >> might reorder the increment of i inside the setjmp and loose the value >> when we longjmp. >> > > I should continue to confirm the details based on your valuable > information, thanks. > >
For stop_spus() and restart_spus(), at least now, the related warnings are not issue: the variable 'i' is stored in stack "120(r1)". The related warning: arch/powerpc/xmon/xmon.c:3027:6: warning: variable ‘i’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Wclobbered] arch/powerpc/xmon/xmon.c:3068:6: warning: variable ‘i’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Wclobbered] The related source code: 3024 static void stop_spus(void) 3025 { 3026 struct spu *spu; 3027 int i; 3028 u64 tmp; 3029 3030 for (i = 0; i < XMON_NUM_SPUS; i++) { /* XMON_NUM_SPUS == 16 */ 3031 if (!spu_info[i].spu) 3032 continue; 3033 3034 if (setjmp(bus_error_jmp) == 0) { 3035 catch_memory_errors = 1; 3036 sync(); 3037 3038 spu = spu_info[i].spu; 3039 3040 spu_info[i].saved_spu_runcntl_RW = 3041 in_be32(&spu->problem->spu_runcntl_RW); 3042 3043 tmp = spu_mfc_sr1_get(spu); 3044 spu_info[i].saved_mfc_sr1_RW = tmp; 3045 3046 tmp &= ~MFC_STATE1_MASTER_RUN_CONTROL_MASK; 3047 spu_mfc_sr1_set(spu, tmp); 3048 3049 sync(); 3050 __delay(200); 3051 3052 spu_info[i].stopped_ok = 1; 3053 3054 printf("Stopped spu %.2d (was %s)\n", i, 3055 spu_info[i].saved_spu_runcntl_RW ? 3056 "running" : "stopped"); 3057 } else { 3058 catch_memory_errors = 0; 3059 printf("*** Error stopping spu %.2d\n", i); 3060 } 3061 catch_memory_errors = 0; 3062 } 3063 } 3064 The related disassembly code: "make ARCH=powerpc EXTRA_CFLAGS=-W" "powerpc64-linux-gnu-objdump -d vmlinux.o > vmlinux.S" "gcc version 4.7.1 20120606 (Red Hat 4.7.1-0.1.20120606) (GCC)" "GNU objdump version 2.23.51.0.3-1.fc16 20120918" c00000000007cfd0 <.stop_spus>: /* { */ c00000000007cfd0: 7c 08 02 a6 mflr r0 c00000000007cfd4: fb c1 ff f0 std r30,-16(r1) c00000000007cfd8: fb e1 ff f8 std r31,-8(r1) c00000000007cfdc: 3d 22 00 0f addis r9,r2,15 c00000000007cfe0: 39 29 3e 10 addi r9,r9,15888 c00000000007cfe4: 3d 02 ff d4 addis r8,r2,-44 c00000000007cfe8: 39 29 21 50 addi r9,r9,8528 c00000000007cfec: 3d 42 ff d4 addis r10,r2,-44 c00000000007cff0: 39 08 83 f8 addi r8,r8,-31752 c00000000007cff4: 39 4a 83 d8 addi r10,r10,-31784 c00000000007cff8: f8 01 00 10 std r0,16(r1) c00000000007cffc: f8 21 ff 51 stdu r1,-176(r1) c00000000007d000: f9 21 00 70 std r9,112(r1) c00000000007d004: 39 20 00 00 li r9,0 c00000000007d008: f9 21 00 78 std r9,120(r1) ; i = 0; c00000000007d00c: f9 01 00 88 std r8,136(r1) c00000000007d010: f9 41 00 90 std r10,144(r1) c00000000007d014: 48 00 01 28 b c00000000007d13c <.stop_spus+0x16c> c00000000007d018: 60 00 00 00 nop c00000000007d01c: 60 00 00 00 nop /* if (setjmp(bus_error_jmp) == 0) { */ c00000000007d020: 3d 22 00 0f addis r9,r2,15 c00000000007d024: 39 40 00 01 li r10,1 c00000000007d028: 39 29 3e 10 addi r9,r9,15888 c00000000007d02c: 91 49 20 c0 stw r10,8384(r9) c00000000007d030: 7c 00 04 ac sync c00000000007d034: 4c 00 01 2c isync c00000000007d038: e9 01 00 80 ld r8,128(r1) c00000000007d03c: eb e8 00 00 ld r31,0(r8) c00000000007d040: e9 3f 00 20 ld r9,32(r31) c00000000007d044: 7c 00 04 ac sync c00000000007d048: 81 29 40 1c lwz r9,16412(r9) c00000000007d04c: 0c 09 00 00 twi 0,r9,0 c00000000007d050: 4c 00 01 2c isync c00000000007d054: 91 28 00 10 stw r9,16(r8) c00000000007d058: 3d 22 00 0f addis r9,r2,15 c00000000007d05c: 3b c9 f5 e8 addi r30,r9,-2584 c00000000007d060: 7f e3 fb 78 mr r3,r31 c00000000007d064: e9 3e 00 00 ld r9,0(r30) c00000000007d068: e9 29 00 60 ld r9,96(r9) c00000000007d06c: e9 49 00 00 ld r10,0(r9) c00000000007d070: f8 41 00 28 std r2,40(r1) c00000000007d074: 7d 49 03 a6 mtctr r10 c00000000007d078: e8 49 00 08 ld r2,8(r9) c00000000007d07c: 4e 80 04 21 bctrl c00000000007d080: e8 41 00 28 ld r2,40(r1) c00000000007d084: e9 01 00 80 ld r8,128(r1) c00000000007d088: e9 3e 00 00 ld r9,0(r30) c00000000007d08c: f8 68 00 08 std r3,8(r8) c00000000007d090: 7c 64 1b 78 mr r4,r3 c00000000007d094: 78 84 d0 42 rldicl r4,r4,58,1 c00000000007d098: 7f e3 fb 78 mr r3,r31 c00000000007d09c: 78 84 30 00 rotldi r4,r4,6 c00000000007d0a0: e9 29 00 58 ld r9,88(r9) c00000000007d0a4: e9 49 00 00 ld r10,0(r9) c00000000007d0a8: f8 41 00 28 std r2,40(r1) c00000000007d0ac: 7d 49 03 a6 mtctr r10 c00000000007d0b0: e8 49 00 08 ld r2,8(r9) c00000000007d0b4: 4e 80 04 21 bctrl c00000000007d0b8: e8 41 00 28 ld r2,40(r1) c00000000007d0bc: 7c 00 04 ac sync c00000000007d0c0: 4c 00 01 2c isync c00000000007d0c4: 38 60 00 c8 li r3,200 c00000000007d0c8: 4b fa 01 e9 bl c00000000001d2b0 <.__delay> ; __delay(200) c00000000007d0cc: 60 00 00 00 nop c00000000007d0d0: e9 01 00 80 ld r8,128(r1) c00000000007d0d4: 39 40 00 01 li r10,1 c00000000007d0d8: 81 28 00 10 lwz r9,16(r8) c00000000007d0dc: 99 48 00 20 stb r10,32(r8) c00000000007d0e0: 3d 02 ff d4 addis r8,r2,-44 c00000000007d0e4: 38 a8 83 c8 addi r5,r8,-31800 c00000000007d0e8: 2f 89 00 00 cmpwi cr7,r9,0 c00000000007d0ec: 40 9e 00 0c bne- cr7,c00000000007d0f8 <.stop_spus+0x128> c00000000007d0f0: 3d 22 ff d4 addis r9,r2,-44 c00000000007d0f4: 38 a9 83 d0 addi r5,r9,-31792 c00000000007d0f8: e8 61 00 90 ld r3,144(r1) c00000000007d0fc: e8 81 00 78 ld r4,120(r1) ; 120(r1) = i c00000000007d100: 48 00 67 41 bl c000000000083840 <.xmon_printf> c00000000007d104: 60 00 00 00 nop /* catch_memory_errors = 0; */ c00000000007d108: 3d 22 00 0f addis r9,r2,15 c00000000007d10c: 39 40 00 00 li r10,0 c00000000007d110: 39 29 3e 10 addi r9,r9,15888 c00000000007d114: 91 49 20 c0 stw r10,8384(r9) /* for (i = 0; i < XMON_NUM_SPUS; i++) { */ c00000000007d118: e9 01 00 78 ld r8,120(r1) ; 120(r1) = i; c00000000007d11c: 39 28 00 01 addi r9,r8,1 ; i++ c00000000007d120: 2f 89 00 10 cmpwi cr7,r9,16 ; i < XMON_NUM_SPUS c00000000007d124: 7d 29 07 b4 extsw r9,r9 c00000000007d128: f9 21 00 78 std r9,120(r1) ; 120(r1) = i; c00000000007d12c: e9 21 00 70 ld r9,112(r1) ; c00000000007d130: 39 29 00 28 addi r9,r9,40 ; 112(r1) = [i] for spu_info; c00000000007d134: f9 21 00 70 std r9,112(r1) ; c00000000007d138: 41 9e 00 58 beq- cr7,c00000000007d190 <.stop_spus+0x1c0> /* if (!spu_info[i].spu) */ /* continue; */ c00000000007d13c: e9 01 00 70 ld r8,112(r1) c00000000007d140: 3d 42 00 0f addis r10,r2,15 c00000000007d144: 38 6a 5e 18 addi r3,r10,24088 c00000000007d148: e9 28 00 00 ld r9,0(r8) c00000000007d14c: f9 01 00 80 std r8,128(r1) c00000000007d150: 2f a9 00 00 cmpdi cr7,r9,0 c00000000007d154: 41 9e ff c4 beq+ cr7,c00000000007d118 <.stop_spus+0x148> /* if (setjmp(bus_error_jmp) == 0) { */ c00000000007d158: 4b fa 44 99 bl c0000000000215f0 <.setjmp> c00000000007d15c: 60 00 00 00 nop c00000000007d160: 2f a3 00 00 cmpdi cr7,r3,0 c00000000007d164: e8 81 00 78 ld r4,120(r1) ; 120(r1) = i for 2nd param of printf in exception processing after setjmp. c00000000007d168: e8 61 00 88 ld r3,136(r1) c00000000007d16c: 41 9e fe b4 beq+ cr7,c00000000007d020 <.stop_spus+0x50> /* } else { */ c00000000007d170: 3d 42 00 0f addis r10,r2,15 c00000000007d174: 39 00 00 00 li r8,0 c00000000007d178: 39 4a 3e 10 addi r10,r10,15888 c00000000007d17c: 91 0a 20 c0 stw r8,8384(r10) /* catch_memory_errors = 0; */ c00000000007d180: 48 00 66 c1 bl c000000000083840 <.xmon_printf> /* called with correct i */ c00000000007d184: 60 00 00 00 nop c00000000007d188: 4b ff ff 80 b c00000000007d108 <.stop_spus+0x138> c00000000007d18c: 60 00 00 00 nop /* } */ c00000000007d190: 38 21 00 b0 addi r1,r1,176 c00000000007d194: e8 01 00 10 ld r0,16(r1) c00000000007d198: eb c1 ff f0 ld r30,-16(r1) c00000000007d19c: eb e1 ff f8 ld r31,-8(r1) c00000000007d1a0: 7c 08 03 a6 mtlr r0 c00000000007d1a4: 4e 80 00 20 blr c00000000007d1a8: 60 00 00 00 nop c00000000007d1ac: 60 00 00 00 nop /* } */ The related assembly code (they really save and restore 'r1'): _GLOBAL(setjmp) mflr r0 PPC_STL r0,0(r3) PPC_STL r1,SZL(r3) PPC_STL r2,2*SZL(r3) mfcr r0 PPC_STL r0,3*SZL(r3) PPC_STL r13,4*SZL(r3) PPC_STL r14,5*SZL(r3) PPC_STL r15,6*SZL(r3) PPC_STL r16,7*SZL(r3) PPC_STL r17,8*SZL(r3) PPC_STL r18,9*SZL(r3) PPC_STL r19,10*SZL(r3) PPC_STL r20,11*SZL(r3) PPC_STL r21,12*SZL(r3) PPC_STL r22,13*SZL(r3) PPC_STL r23,14*SZL(r3) PPC_STL r24,15*SZL(r3) PPC_STL r25,16*SZL(r3) PPC_STL r26,17*SZL(r3) PPC_STL r27,18*SZL(r3) PPC_STL r28,19*SZL(r3) PPC_STL r29,20*SZL(r3) PPC_STL r30,21*SZL(r3) PPC_STL r31,22*SZL(r3) li r3,0 blr _GLOBAL(longjmp) PPC_LCMPI r4,0 bne 1f li r4,1 1: PPC_LL r13,4*SZL(r3) PPC_LL r14,5*SZL(r3) PPC_LL r15,6*SZL(r3) PPC_LL r16,7*SZL(r3) PPC_LL r17,8*SZL(r3) PPC_LL r18,9*SZL(r3) PPC_LL r19,10*SZL(r3) PPC_LL r20,11*SZL(r3) PPC_LL r21,12*SZL(r3) PPC_LL r22,13*SZL(r3) PPC_LL r23,14*SZL(r3) PPC_LL r24,15*SZL(r3) PPC_LL r25,16*SZL(r3) PPC_LL r26,17*SZL(r3) PPC_LL r27,18*SZL(r3) PPC_LL r28,19*SZL(r3) PPC_LL r29,20*SZL(r3) PPC_LL r30,21*SZL(r3) PPC_LL r31,22*SZL(r3) PPC_LL r0,3*SZL(r3) mtcrf 0x38,r0 PPC_LL r0,0(r3) PPC_LL r1,SZL(r3) PPC_LL r2,2*SZL(r3) mtlr r0 mr r3,r4 blr The same to resetart_spus() 3065 static void restart_spus(void) 3066 { 3067 struct spu *spu; 3068 int i; 3069 3070 for (i = 0; i < XMON_NUM_SPUS; i++) { 3071 if (!spu_info[i].spu) 3072 continue; 3073 3074 if (!spu_info[i].stopped_ok) { 3075 printf("*** Error, spu %d was not successfully stopped" 3076 ", not restarting\n", i); 3077 continue; 3078 } 3079 3080 if (setjmp(bus_error_jmp) == 0) { 3081 catch_memory_errors = 1; 3082 sync(); 3083 3084 spu = spu_info[i].spu; 3085 spu_mfc_sr1_set(spu, spu_info[i].saved_mfc_sr1_RW); 3086 out_be32(&spu->problem->spu_runcntl_RW, 3087 spu_info[i].saved_spu_runcntl_RW); 3088 3089 sync(); 3090 __delay(200); 3091 3092 printf("Restarted spu %.2d\n", i); 3093 } else { 3094 catch_memory_errors = 0; 3095 printf("*** Error restarting spu %.2d\n", i); 3096 } 3097 catch_memory_errors = 0; 3098 } 3099 } 3100 c00000000007d1b0 <.restart_spus>: /* { */ c00000000007d1b0: 7c 08 02 a6 mflr r0 c00000000007d1b4: fb e1 ff f8 std r31,-8(r1) c00000000007d1b8: 3d 22 00 0f addis r9,r2,15 c00000000007d1bc: 3c e2 ff d4 addis r7,r2,-44 c00000000007d1c0: 39 29 3e 10 addi r9,r9,15888 c00000000007d1c4: 3d 02 ff d4 addis r8,r2,-44 c00000000007d1c8: 39 29 21 50 addi r9,r9,8528 c00000000007d1cc: 3d 42 ff d4 addis r10,r2,-44 c00000000007d1d0: 38 e7 84 70 addi r7,r7,-31632 c00000000007d1d4: 39 08 84 58 addi r8,r8,-31656 c00000000007d1d8: f8 01 00 10 std r0,16(r1) c00000000007d1dc: 39 4a 84 18 addi r10,r10,-31720 c00000000007d1e0: f8 21 ff 51 stdu r1,-176(r1) c00000000007d1e4: f9 21 00 70 std r9,112(r1) c00000000007d1e8: 39 20 00 00 li r9,0 c00000000007d1ec: f9 21 00 78 std r9,120(r1) ; i = 0; c00000000007d1f0: f8 e1 00 88 std r7,136(r1) c00000000007d1f4: f9 01 00 98 std r8,152(r1) c00000000007d1f8: f9 41 00 90 std r10,144(r1) c00000000007d1fc: 48 00 00 34 b c00000000007d230 <.restart_spus+0x80> /* if (!spu_info[i].stopped_ok) { */ /* printf(....); */ /* continue; */ c00000000007d200: e8 61 00 90 ld r3,144(r1) c00000000007d204: 48 00 66 3d bl c000000000083840 <.xmon_printf> c00000000007d208: 60 00 00 00 nop /* for (i = 0; i < XMON_NUM_SPUS; i++) { */ c00000000007d20c: e9 01 00 78 ld r8,120(r1) c00000000007d210: 39 28 00 01 addi r9,r8,1 ; i++ c00000000007d214: 2f 89 00 10 cmpwi cr7,r9,16 ; i < XMON_NUM_SPUS c00000000007d218: 7d 29 07 b4 extsw r9,r9 c00000000007d21c: f9 21 00 78 std r9,120(r1) c00000000007d220: e9 21 00 70 ld r9,112(r1) c00000000007d224: 39 29 00 28 addi r9,r9,40 c00000000007d228: f9 21 00 70 std r9,112(r1) c00000000007d22c: 41 9e 01 0c beq- cr7,c00000000007d338 <.restart_spus+0x188> /* if (!spu_info[i].spu) */ /* continue; */ c00000000007d230: e9 01 00 70 ld r8,112(r1) c00000000007d234: 3d 42 00 0f addis r10,r2,15 c00000000007d238: e8 81 00 78 ld r4,120(r1) ; i as 2nd parameter for xmon_printf(). c00000000007d23c: 38 6a 5e 18 addi r3,r10,24088 c00000000007d240: e9 28 00 00 ld r9,0(r8) c00000000007d244: f9 01 00 80 std r8,128(r1) c00000000007d248: 2f a9 00 00 cmpdi cr7,r9,0 c00000000007d24c: 41 9e ff c0 beq+ cr7,c00000000007d20c <.restart_spus+0x5c> /* if (!spu_info[i].stopped_ok) { */ c00000000007d250: 89 28 00 20 lbz r9,32(r8) c00000000007d254: 2f 89 00 00 cmpwi cr7,r9,0 c00000000007d258: 41 9e ff a8 beq+ cr7,c00000000007d200 <.restart_spus+0x50> /* } */ /* if (setjmp(bus_error_jmp) == 0) { */ c00000000007d25c: 4b fa 43 95 bl c0000000000215f0 <.setjmp> c00000000007d260: 60 00 00 00 nop c00000000007d264: 2f a3 00 00 cmpdi cr7,r3,0 c00000000007d268: e8 81 00 78 ld r4,120(r1) ; i as 2nd parameter for xmon_printf() after setjmp(). c00000000007d26c: e8 61 00 88 ld r3,136(r1) c00000000007d270: 40 9e 00 e0 bne- cr7,c00000000007d350 <.restart_spus+0x1a0> c00000000007d274: 3d 22 00 0f addis r9,r2,15 c00000000007d278: 39 40 00 01 li r10,1 c00000000007d27c: 39 29 3e 10 addi r9,r9,15888 c00000000007d280: 91 49 20 c0 stw r10,8384(r9) c00000000007d284: 7c 00 04 ac sync c00000000007d288: 4c 00 01 2c isync c00000000007d28c: 3d 02 00 0f addis r8,r2,15 c00000000007d290: e9 41 00 80 ld r10,128(r1) c00000000007d294: 39 28 f5 e8 addi r9,r8,-2584 c00000000007d298: eb ea 00 00 ld r31,0(r10) c00000000007d29c: e8 8a 00 08 ld r4,8(r10) c00000000007d2a0: e9 29 00 00 ld r9,0(r9) c00000000007d2a4: 7f e3 fb 78 mr r3,r31 c00000000007d2a8: e9 29 00 58 ld r9,88(r9) c00000000007d2ac: e9 49 00 00 ld r10,0(r9) c00000000007d2b0: f8 41 00 28 std r2,40(r1) c00000000007d2b4: 7d 49 03 a6 mtctr r10 c00000000007d2b8: e8 49 00 08 ld r2,8(r9) c00000000007d2bc: 4e 80 04 21 bctrl c00000000007d2c0: e8 41 00 28 ld r2,40(r1) c00000000007d2c4: e9 01 00 80 ld r8,128(r1) c00000000007d2c8: e9 3f 00 20 ld r9,32(r31) c00000000007d2cc: 81 48 00 10 lwz r10,16(r8) c00000000007d2d0: 7c 00 04 ac sync c00000000007d2d4: 91 49 40 1c stw r10,16412(r9) c00000000007d2d8: 39 20 00 01 li r9,1 c00000000007d2dc: 99 2d 02 74 stb r9,628(r13) c00000000007d2e0: 7c 00 04 ac sync c00000000007d2e4: 4c 00 01 2c isync c00000000007d2e8: 38 60 00 c8 li r3,200 c00000000007d2ec: 4b f9 ff c5 bl c00000000001d2b0 <.__delay> c00000000007d2f0: 60 00 00 00 nop c00000000007d2f4: e8 61 00 98 ld r3,152(r1) c00000000007d2f8: e8 81 00 78 ld r4,120(r1) c00000000007d2fc: 48 00 65 45 bl c000000000083840 <.xmon_printf> c00000000007d300: 60 00 00 00 nop /* } */ /* for (i = 0; i < XMON_NUM_SPUS; i++) { */ c00000000007d304: e9 01 00 78 ld r8,120(r1) c00000000007d308: 3d 22 00 0f addis r9,r2,15 c00000000007d30c: 39 40 00 00 li r10,0 c00000000007d310: 39 29 3e 10 addi r9,r9,15888 c00000000007d314: 91 49 20 c0 stw r10,8384(r9) ; catch_memory_errors = 0; c00000000007d318: 39 28 00 01 addi r9,r8,1 c00000000007d31c: 2f 89 00 10 cmpwi cr7,r9,16 ; i < XMON_NUM_SPUS c00000000007d320: 7d 29 07 b4 extsw r9,r9 c00000000007d324: f9 21 00 78 std r9,120(r1) ; i++; c00000000007d328: e9 21 00 70 ld r9,112(r1) c00000000007d32c: 39 29 00 28 addi r9,r9,40 ; [i] for spu_info c00000000007d330: f9 21 00 70 std r9,112(r1) c00000000007d334: 40 9e fe fc bne+ cr7,c00000000007d230 <.restart_spus+0x80> /* } */ c00000000007d338: 38 21 00 b0 addi r1,r1,176 c00000000007d33c: e8 01 00 10 ld r0,16(r1) c00000000007d340: eb e1 ff f8 ld r31,-8(r1) c00000000007d344: 7c 08 03 a6 mtlr r0 c00000000007d348: 4e 80 00 20 blr c00000000007d34c: 60 00 00 00 nop /* } */ /* } else { */ c00000000007d350: 3d 42 00 0f addis r10,r2,15 c00000000007d354: 39 00 00 00 li r8,0 c00000000007d358: 39 4a 3e 10 addi r10,r10,15888 c00000000007d35c: 91 0a 20 c0 stw r8,8384(r10) ; catch_memory_errors = 0; c00000000007d360: 48 00 64 e1 bl c000000000083840 <.xmon_printf> c00000000007d364: 60 00 00 00 nop c00000000007d368: 4b ff ff 9c b c00000000007d304 <.restart_spus+0x154> c00000000007d36c: 60 00 00 00 nop >>> arch/powerpc/xmon/xmon.c:352:48: warning: argument ‘fromipi’ might be >>> clobbered by ‘longjmp’ or ‘vfork’ [-Wclobbered] >> >> This one I can't see, but I assume it's a similar case. >> > > OK, I should continue for it. > > >>> Excuse me, I am not quite sure about it whether can cause issue or not. >> >> I've never seen it get stuck in those loops or anything, but I guess >> it's possible. >> > > OK, I should make the confirmation. > >> The first thing to do would be to analyse the generated assembler code >> to determine if there really is any possiblity of the value being >> clobbered, or if it's just a theoretical bug. >> > > Thank you for your valuable information again. > > Excuse me, I have to do another things within this month, so I should > provide the confirmation within next month (2013-08-31), is it OK (no > reply means OK). > > Welcome any suggestions or completions. > > > Thanks. > -- Chen Gang _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev