On Mon, Jun 3, 2019 at 9:44 AM Cherry Zhang <cherr...@google.com> wrote: > > On Mon, Jun 3, 2019 at 12:00 PM Jakub Jelinek <ja...@redhat.com> wrote: >> >> On Mon, Jun 03, 2019 at 05:51:26PM +0200, Thomas Schwinge wrote: >> > Hi! >> > >> > On Fri, 31 May 2019 10:56:43 -0700, Ian Lance Taylor <i...@golang.org> >> > wrote: >> > > This libgo patch by Cherry Zhang implements cheaper goroutine context >> > > switches on x86_64 GNU/Linux. [...] >> > >> > > Bootstrapped and tested on x86_64-pc-linux-gnu. Committed to mainline. >> > >> > > --- libgo/runtime/go-context.S (nonexistent) >> > > +++ libgo/runtime/go-context.S (working copy) >> > >> > > + andq $~0xfULL, %rdx >> > >> > I run into: >> > >> > [...]/libgo/runtime/go-context.S: Assembler messages: >> > [...]/libgo/runtime/go-context.S:60: Error: junk `ULL' after expression >> > make[4]: *** [runtime/go-context.lo] Error 1 >> > >> > ... with (admittedly somewhat old) Binutils: >> > >> > $ as --version | head -n 2 >> > GNU assembler (GNU Binutils for Ubuntu) 2.22.90.20120924 >> > Copyright 2012 Free Software Foundation, Inc. >> >> As andq immediate is just 32-bit, I'd say using $~0xf or $-16 instead of >> $~0xfULL is the right fix. > > > Sorry for the breakage. Send https://golang.org/cl/180217 dropping the ULL > suffix as you suggested.
Thanks. Cherry's patch bootstrapped, tested, and committed, as follows. Ian
Index: gcc/go/gofrontend/MERGE =================================================================== --- gcc/go/gofrontend/MERGE (revision 271823) +++ gcc/go/gofrontend/MERGE (working copy) @@ -1,4 +1,4 @@ -4150db0e4613043e38a146a971e5b0dcacad7c2a +2e623bff8a5855bb6268c69bb04eb37cac8f2dc2 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. Index: libgo/runtime/go-context.S =================================================================== --- libgo/runtime/go-context.S (revision 271818) +++ libgo/runtime/go-context.S (working copy) @@ -57,7 +57,7 @@ __go_makecontext: addq %rcx, %rdx // Align the SP, and push a dummy return address. - andq $~0xfULL, %rdx + andq $~0xf, %rdx subq $8, %rdx movq $0, (%rdx)