yann@1: http://sources.redhat.com/cgi-bin/cvsweb.cgi/libc/sysdeps/unix/sysv/linux/sh/sysdep.h.diff?r1=1.9&r2=1.10&cvsroot=glibc yann@1: yann@1: Ankur Sheth said: yann@1: yann@1: "This is actually a workaround for a bug in the sh4. The actual bug is yann@1: documented here : yann@1: http://documentation.renesas.com/eng/products/mpumcu/tu/tnsh7456ae.pdf yann@1: Basically the cache & TLB should not be accessed for 4 (or was it 5?) cycles yann@1: after isssuing a TRAPA instruction. I didn't run into any specific problem yann@1: because of this bug, but it seems useful to have and the patch itself seems yann@1: pretty harmless." yann@1: yann@1: yann@1: =================================================================== yann@1: RCS file: /cvs/glibc/libc/sysdeps/unix/sysv/linux/sh/sysdep.h,v yann@1: retrieving revision 1.9 yann@1: retrieving revision 1.10 yann@1: diff -u -r1.9 -r1.10 yann@1: --- libc/sysdeps/unix/sysv/linux/sh/sysdep.h 2003/09/01 04:05:21 1.9 yann@1: +++ libc/sysdeps/unix/sysv/linux/sh/sysdep.h 2003/10/15 04:36:32 1.10 yann@1: @@ -183,6 +183,13 @@ yann@1: # endif /* _LIBC_REENTRANT */ yann@1: #endif /* PIC */ yann@1: yann@1: +# ifdef NEED_SYSCALL_INST_PAD yann@1: +# define SYSCALL_INST_PAD \ yann@1: + or r0,r0; or r0,r0; or r0,r0; or r0,r0; or r0,r0 yann@1: +# else yann@1: +# define SYSCALL_INST_PAD yann@1: +# endif yann@1: + yann@1: #define SYSCALL_INST0 trapa #0x10 yann@1: #define SYSCALL_INST1 trapa #0x11 yann@1: #define SYSCALL_INST2 trapa #0x12 yann@1: @@ -195,19 +202,13 @@ yann@1: #define DO_CALL(syscall_name, args) \ yann@1: mov.l 1f,r3; \ yann@1: SYSCALL_INST##args; \ yann@1: + SYSCALL_INST_PAD; \ yann@1: bra 2f; \ yann@1: nop; \ yann@1: .align 2; \ yann@1: 1: .long SYS_ify (syscall_name); \ yann@1: 2: yann@1: yann@1: -# ifdef NEED_SYSCALL_INST_PAD yann@1: -# define SYSCALL_INST_PAD \ yann@1: - or r0,r0; or r0,r0; or r0,r0; or r0,r0; or r0,r0 yann@1: -# else yann@1: -# define SYSCALL_INST_PAD yann@1: -# endif yann@1: - yann@1: #else /* not __ASSEMBLER__ */ yann@1: yann@1: #define SYSCALL_INST_STR0 "trapa #0x10\n\t"