Messages in this thread | | | From | Paweł Sikora <> | Subject | Re: proxy_pda was Re: What was in the x86 merge for .20 | Date | Mon, 15 Jan 2007 21:41:02 +0100 |
| |
Hi,
I've reviewed the thread and can propose a solution. Let's see e.g. the dev.s ( from fuse.ko ). Currently with gcc-4.2 we get:
fuse_req_init_context: movl $_proxy_pda+8, %edx #, tmp62 #APP movl %gs:8,%ecx #, ret__ #NO_APP movl 344(%ecx), %ecx # <variable>.fsuid, <variable>.fsuid movl %ecx, 60(%eax) # <variable>.fsuid, <variable>.in.h.uid #APP movl %gs:8,%ecx #, ret__ #NO_APP movl 360(%ecx), %ecx # <variable>.fsgid, <variable>.fsgid movl %ecx, 64(%eax) # <variable>.fsgid, <variable>.in.h.gid #APP movl %gs:8,%edx #, ret__ #NO_APP movl 164(%edx), %edx # <variable>.pid, <variable>.pid movl %edx, 68(%eax) # <variable>.pid, <variable>.in.h.pid ret
In this scenario gcc is explictly blocked by -fno-strict-aliasing and massive %gs:8 reloads are present. If you fix aliasing violations in kernel then you could use -fstrict-aliasing to get what you want.
fuse_req_init_context: #APP movl %gs:8,%ecx #, ret__ #NO_APP movl 344(%ecx), %edx # <variable>.fsuid, <variable>.fsuid movl %edx, 60(%eax) # <variable>.fsuid, <variable>.in.h.uid movl 360(%ecx), %edx # <variable>.fsgid, <variable>.fsgid movl %edx, 64(%eax) # <variable>.fsgid, <variable>.in.h.gid movl 164(%ecx), %edx # <variable>.pid, <variable>.pid movl %edx, 68(%eax) # <variable>.pid, <variable>.in.h.pid ret
BR, Pawel. - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |