@@ -31,69 +31,70 @@ var asmsysvicall6 libcFunc
3131//go:nosplit
3232func sysvicall0 (fn * libcFunc ) uintptr {
3333 libcall := & getg ().m .libcall
34- libcall .fn = unsafe .Pointer (fn )
34+ libcall .fn = uintptr ( unsafe .Pointer (fn ) )
3535 libcall .n = 0
36- libcall .args = unsafe .Pointer (fn ) // it's unused but must be non-nil, otherwise crashes
36+ // TODO(rsc): Why is noescape necessary here and below?
37+ libcall .args = uintptr (noescape (unsafe .Pointer (& fn ))) // it's unused but must be non-nil, otherwise crashes
3738 asmcgocall (unsafe .Pointer (& asmsysvicall6 ), unsafe .Pointer (libcall ))
3839 return libcall .r1
3940}
4041
4142//go:nosplit
4243func sysvicall1 (fn * libcFunc , a1 uintptr ) uintptr {
4344 libcall := & getg ().m .libcall
44- libcall .fn = unsafe .Pointer (fn )
45+ libcall .fn = uintptr ( unsafe .Pointer (fn ) )
4546 libcall .n = 1
46- libcall .args = noescape (unsafe .Pointer (& a1 ))
47+ libcall .args = uintptr ( noescape (unsafe .Pointer (& a1 ) ))
4748 asmcgocall (unsafe .Pointer (& asmsysvicall6 ), unsafe .Pointer (libcall ))
4849 return libcall .r1
4950}
5051
5152//go:nosplit
5253func sysvicall2 (fn * libcFunc , a1 , a2 uintptr ) uintptr {
5354 libcall := & getg ().m .libcall
54- libcall .fn = unsafe .Pointer (fn )
55+ libcall .fn = uintptr ( unsafe .Pointer (fn ) )
5556 libcall .n = 2
56- libcall .args = noescape (unsafe .Pointer (& a1 ))
57+ libcall .args = uintptr ( noescape (unsafe .Pointer (& a1 ) ))
5758 asmcgocall (unsafe .Pointer (& asmsysvicall6 ), unsafe .Pointer (libcall ))
5859 return libcall .r1
5960}
6061
6162//go:nosplit
6263func sysvicall3 (fn * libcFunc , a1 , a2 , a3 uintptr ) uintptr {
6364 libcall := & getg ().m .libcall
64- libcall .fn = unsafe .Pointer (fn )
65+ libcall .fn = uintptr ( unsafe .Pointer (fn ) )
6566 libcall .n = 3
66- libcall .args = noescape (unsafe .Pointer (& a1 ))
67+ libcall .args = uintptr ( noescape (unsafe .Pointer (& a1 ) ))
6768 asmcgocall (unsafe .Pointer (& asmsysvicall6 ), unsafe .Pointer (libcall ))
6869 return libcall .r1
6970}
7071
7172//go:nosplit
7273func sysvicall4 (fn * libcFunc , a1 , a2 , a3 , a4 uintptr ) uintptr {
7374 libcall := & getg ().m .libcall
74- libcall .fn = unsafe .Pointer (fn )
75+ libcall .fn = uintptr ( unsafe .Pointer (fn ) )
7576 libcall .n = 4
76- libcall .args = noescape (unsafe .Pointer (& a1 ))
77+ libcall .args = uintptr ( noescape (unsafe .Pointer (& a1 ) ))
7778 asmcgocall (unsafe .Pointer (& asmsysvicall6 ), unsafe .Pointer (libcall ))
7879 return libcall .r1
7980}
8081
8182//go:nosplit
8283func sysvicall5 (fn * libcFunc , a1 , a2 , a3 , a4 , a5 uintptr ) uintptr {
8384 libcall := & getg ().m .libcall
84- libcall .fn = unsafe .Pointer (fn )
85+ libcall .fn = uintptr ( unsafe .Pointer (fn ) )
8586 libcall .n = 5
86- libcall .args = noescape (unsafe .Pointer (& a1 ))
87+ libcall .args = uintptr ( noescape (unsafe .Pointer (& a1 ) ))
8788 asmcgocall (unsafe .Pointer (& asmsysvicall6 ), unsafe .Pointer (libcall ))
8889 return libcall .r1
8990}
9091
9192//go:nosplit
9293func sysvicall6 (fn * libcFunc , a1 , a2 , a3 , a4 , a5 , a6 uintptr ) uintptr {
9394 libcall := & getg ().m .libcall
94- libcall .fn = unsafe .Pointer (fn )
95+ libcall .fn = uintptr ( unsafe .Pointer (fn ) )
9596 libcall .n = 6
96- libcall .args = noescape (unsafe .Pointer (& a1 ))
97+ libcall .args = uintptr ( noescape (unsafe .Pointer (& a1 ) ))
9798 asmcgocall (unsafe .Pointer (& asmsysvicall6 ), unsafe .Pointer (libcall ))
9899 return libcall .r1
99100}
0 commit comments