the disassembly of the sched_getcpu() code at runtime looks like:
0x2000000000203940 <+0>: [MMI] alloc r32=ar.pfs,9,1,0
0x2000000000203941 <+1>: adds r14=8,r13
0x2000000000203942 <+2>: mov r33=r12;;
0x2000000000203950 <+16>: [MMI] ld8 r14=[r14]
0x2000000000203951 <+17>: nop.m 0x0
0x2000000000203952 <+18>: mov r15=1304
0x2000000000203960 <+32>: [MII] mov r35=r0 <<<<<<<<<<<<<<<<<<<
0x2000000000203961 <+33>: mov r34=r0;;<<<<<<<<<<<<<<<<<<<
0x2000000000203962 <+34>: mov b7=r14;;
0x2000000000203970 <+48>: [MIB] nop.m 0x0
0x2000000000203971 <+49>: nop.i 0x0
0x2000000000203972 <+50>: br.call.sptk.many b6=b7;;
When the "br.call" is executed, we flip to the new register
frame and r34/r35 in the sched_getcpu() frame become r32/r33
in the new frame.
So you get -EFAULT because the VDSO tries to dereference a NULL
pointer for each of the *cpu and *node arguments.
-Tony
--
To unsubscribe from this list: send the line "unsubscribe linux-ia64" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
[Linux Kernel]
[Sparc Linux]
[DCCP]
[Linux ARM]
[Linux]
[Photo]
[Yosemite News]
[Linux SCSI]
[Linux x86_64]
[Linux Hams]