diff options
Diffstat (limited to 'src/cmd/6l/pass.c')
-rw-r--r-- | src/cmd/6l/pass.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/cmd/6l/pass.c b/src/cmd/6l/pass.c index d9e0b2fc1..2357a7f77 100644 --- a/src/cmd/6l/pass.c +++ b/src/cmd/6l/pass.c @@ -276,7 +276,7 @@ patch(void) // Convert // op n(GS), reg // to - // MOVL 0x58(GS), reg + // MOVL 0x28(GS), reg // op n(reg), reg // The purpose of this patch is to fix some accesses // to extern register variables (TLS) on Windows, as @@ -291,11 +291,11 @@ patch(void) q->as = p->as; p->as = AMOVQ; p->from.type = D_INDIR+D_GS; - p->from.offset = 0x58; + p->from.offset = 0x28; } } if(HEADTYPE == Hlinux || HEADTYPE == Hfreebsd - || HEADTYPE == Hopenbsd) { + || HEADTYPE == Hopenbsd || HEADTYPE == Hnetbsd) { // ELF uses FS instead of GS. if(p->from.type == D_INDIR+D_GS) p->from.type = D_INDIR+D_FS; @@ -421,18 +421,18 @@ dostkoff(void) p = appendp(p); // load g into CX p->as = AMOVQ; if(HEADTYPE == Hlinux || HEADTYPE == Hfreebsd - || HEADTYPE == Hopenbsd) // ELF uses FS + || HEADTYPE == Hopenbsd || HEADTYPE == Hnetbsd) // ELF uses FS p->from.type = D_INDIR+D_FS; else p->from.type = D_INDIR+D_GS; p->from.offset = tlsoffset+0; p->to.type = D_CX; if(HEADTYPE == Hwindows) { - // movq %gs:0x58, %rcx + // movq %gs:0x28, %rcx // movq (%rcx), %rcx p->as = AMOVQ; p->from.type = D_INDIR+D_GS; - p->from.offset = 0x58; + p->from.offset = 0x28; p->to.type = D_CX; |