Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions src/cmd/6c/txt.c
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@

#include "gc.h"

#include <limits.h>

int thechar = '6';
char *thestring = "amd64";

Expand Down Expand Up @@ -992,7 +994,7 @@ gmove(Node *f, Node *t)
f->vconst &= 0xffff;
if(f->vconst & 0x8000){
f->vconst |= 0xffff0000;
f->vconst |= (vlong)~0 << 32;
f->vconst |= (vlong)INT_MAX << 32;
}
a = AMOVL;
}
Expand Down Expand Up @@ -1042,7 +1044,7 @@ gmove(Node *f, Node *t)
f->vconst &= 0xff;
if(f->vconst & 0x80){
f->vconst |= 0xffffff00;
f->vconst |= (vlong)~0 << 32;
f->vconst |= (vlong)INT_MAX << 32;
}
a = AMOVQ;
}
Expand Down
2 changes: 2 additions & 0 deletions src/cmd/ld/lib.c
Original file line number Diff line number Diff line change
Expand Up @@ -599,6 +599,8 @@ hostlink(void)
case '5':
argv[argc++] = "-marm";
break;
default:
break;
}
if(!debug['s'] && !debug_s) {
argv[argc++] = "-gdwarf-2";
Expand Down
4 changes: 2 additions & 2 deletions src/liblink/asmv.c
Original file line number Diff line number Diff line change
Expand Up @@ -298,7 +298,7 @@ spanv(Link *ctxt, LSym *cursym)
Prog *p, *q;
Optab *o;
int m, bflag, i, j;
int32 out[4], c, otxt;
int32 out[8], c, otxt;
uchar *bp, *cast;

p = cursym->text;
Expand Down Expand Up @@ -932,7 +932,7 @@ asmout(Link *ctxt, Prog *p, Optab *o, int32 *out)
int r, a;
Reloc *rel;

o1 = o2 = o3 = o4 = 0;
o1 = o2 = o3 = o4 = o5 = 0;
switch(o->type) {
default:
ctxt->diag("unknown type %d", o->type);
Expand Down
1 change: 1 addition & 0 deletions src/runtime/sys_darwin_386.s
Original file line number Diff line number Diff line change
Expand Up @@ -185,6 +185,7 @@ systime:
LEAL 12(SP), AX // must be non-nil, unused
MOVL AX, 4(SP)
MOVL $0, 8(SP) // time zone pointer
MOVL $0, DX // required as of Sierra; Issue 16570
MOVL $116, AX
INT $0x80
// sec is in AX, usec in DX
Expand Down
1 change: 1 addition & 0 deletions src/runtime/sys_darwin_amd64.s
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,7 @@ systime:
// Fall back to system call (usually first call in this thread).
MOVQ SP, DI // must be non-nil, unused
MOVQ $0, SI
MOVQ $0, DX // required as of Sierra; Issue 16570
MOVL $(0x2000000+116), AX
SYSCALL
// sec is in AX, usec in DX
Expand Down
52 changes: 42 additions & 10 deletions src/syscall/asm_linux_mips32x.s
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,15 @@ TEXT ·Syscall(SB),NOSPLIT,$0-28
MOVW R16, R29

BEQ R7, R0, ok
MOVW R2, 24(FP)

MOVW $0, R1 // R1 = 0
SGT R2, R1, R23 // R2 < R1 => R23 (errno < 0)
BNE R23, perrno // jump if R23 not true (errno > 0)
MOVW $-1, R1 // R1 = -1 (abs)
MUL R2, R1 // R2 * R1 (abs)
MOVW LO, R2 // R2 = LO (abs)
perrno:
MOVW R2, 24(FP) // errno
MOVW $-1, R1
MOVW R1, 16(FP)
MOVW R0, 20(FP)
Expand All @@ -37,7 +45,7 @@ TEXT ·Syscall(SB),NOSPLIT,$0-28
ok:
MOVW R2, 16(FP)
MOVW R3, 20(FP)
MOVW R0, 24(FP)
MOVW R0, 24(FP) // errno
JAL runtime·exitsyscall(SB)
RET

Expand Down Expand Up @@ -68,7 +76,15 @@ TEXT ·Syscall6(SB),NOSPLIT,$0-40

MOVW R16, R29
BEQ R7, R0, ok
MOVW R2, 36(FP)

MOVW $0, R1 // R1 = 0
SGT R2, R1, R23 // R2 < R1 => R23 (errno < 0)
BNE R23, perrno // jump if R23 not true (errno > 0)
MOVW $-1, R1 // R1 = -1 (abs)
MUL R2, R1 // R2 * R1 (abs)
MOVW LO, R2 // R2 = LO (abs)
perrno:
MOVW R2, 36(FP) // errno
MOVW $-1, R1
MOVW R1, 28(FP)
MOVW R0, 32(FP)
Expand All @@ -77,7 +93,7 @@ TEXT ·Syscall6(SB),NOSPLIT,$0-40
ok:
MOVW R2, 28(FP)
MOVW R3, 32(FP)
MOVW R0, 36(FP)
MOVW R0, 36(FP) // errno
JAL runtime·exitsyscall(SB)
RET

Expand Down Expand Up @@ -107,15 +123,23 @@ TEXT ·RawSyscall6(SB),NOSPLIT,$0-40

MOVW R16, R29
BEQ R7, R0, ok
MOVW R2, 36(FP)

MOVW $0, R1 // R1 = 0
SGT R2, R1, R23 // R2 < R1 => R23 (errno < 0)
BNE R23, perrno // jump if R23 not true (errno > 0)
MOVW $-1, R1 // R1 = -1 (abs)
MUL R2, R1 // R2 * R1 (abs)
MOVW LO, R2 // R2 = LO (abs)
perrno:
MOVW R2, 36(FP) // errno
MOVW $-1, R1
MOVW R1, 28(FP)
MOVW R0, 32(FP)
RET
ok:
MOVW R2, 28(FP)
MOVW R3, 32(FP)
MOVW R0, 36(FP)
MOVW R0, 36(FP) // errno
RET

TEXT ·RawSyscall(SB),NOSPLIT,$0-28
Expand All @@ -140,15 +164,23 @@ TEXT ·RawSyscall(SB),NOSPLIT,$0-28

MOVW R16, R29
BEQ R7, R0, ok
MOVW R2, 24(FP)

MOVW $0, R1 // R1 = 0
SGT R2, R1, R23 // R2 < R1 => R23 (errno < 0)
BNE R23, perrno // jump if R23 not true (errno > 0)
MOVW $-1, R1 // R1 = -1 (abs)
MUL R2, R1 // R2 * R1 (abs)
MOVW LO, R2 // R2 = LO (abs)
perrno:
MOVW R2, 24(FP) // errno
MOVW $-1, R1
MOVW R1, 16(FP)
MOVW R0, 20(FP)
RET
ok:
MOVW R2, 16(FP)
MOVW R3, 20(FP)
MOVW R0, 24(FP)
MOVW R0, 24(FP) // errno
RET

#define SYS__LLSEEK 4140
Expand Down Expand Up @@ -182,10 +214,10 @@ TEXT ·seek(SB),NOSPLIT,$0-28
BEQ R7, R0, ok
MOVW R0, 16(FP)
MOVW R0, 20(FP)
MOVW R2, 24(FP)
MOVW R2, 24(FP) // errno
JAL runtime·exitsyscall(SB)
RET
ok:
MOVW R0, 24(FP)
MOVW R0, 24(FP) // errno
JAL runtime·exitsyscall(SB)
RET