]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: handle malloc > 2GB correctly
authorRuss Cox <rsc@golang.org>
Tue, 6 Apr 2010 00:26:59 +0000 (17:26 -0700)
committerRuss Cox <rsc@golang.org>
Tue, 6 Apr 2010 00:26:59 +0000 (17:26 -0700)
R=ken2
CC=golang-dev
https://golang.org/cl/821048

src/pkg/runtime/darwin/amd64/sys.s
src/pkg/runtime/freebsd/amd64/sys.s
src/pkg/runtime/linux/amd64/sys.s
src/pkg/runtime/runtime.h

index 6d3460ff06a208103a2af1fff93aab29e1738b7c..0b85d27db7e1d3f030e45bbbb60672650e4e9d6c 100644 (file)
@@ -77,11 +77,11 @@ TEXT sigtramp(SB),7,$40
 
 TEXT   ·mmap(SB),7,$0
        MOVQ    8(SP), DI               // arg 1 addr
-       MOVL    16(SP), SI              // arg 2 len
-       MOVL    20(SP), DX              // arg 3 prot
-       MOVL    24(SP), R10             // arg 4 flags
-       MOVL    28(SP), R8              // arg 5 fid
-       MOVL    32(SP), R9              // arg 6 offset
+       MOVQ    16(SP), SI              // arg 2 len
+       MOVL    24(SP), DX              // arg 3 prot
+       MOVL    28(SP), R10             // arg 4 flags
+       MOVL    32(SP), R8              // arg 5 fid
+       MOVL    36(SP), R9              // arg 6 offset
        MOVL    $(0x2000000+197), AX    // syscall entry
        SYSCALL
        JCC     2(PC)
index 506db29f8e30207447cccf640ad7e6d83e6ee8e6..604b763ab97cffee3dea42cd4e2831b4595f4e5d 100644 (file)
@@ -91,13 +91,13 @@ TEXT        sigtramp(SB),7,$24-16
        CALL    sighandler(SB)
        RET
 
-TEXT   ·mmap(SB),7,$-8
+TEXT   ·mmap(SB),7,$0
        MOVQ    8(SP), DI               // arg 1 addr
-       MOVL    16(SP), SI              // arg 2 len
-       MOVL    20(SP), DX              // arg 3 prot
-       MOVL    24(SP), R10             // arg 4 flags
-       MOVL    28(SP), R8              // arg 5 fid
-       MOVL    32(SP), R9              // arg 6 offset
+       MOVQ    16(SP), SI              // arg 2 len
+       MOVL    24(SP), DX              // arg 3 prot
+       MOVL    28(SP), R10             // arg 4 flags
+       MOVL    32(SP), R8              // arg 5 fid
+       MOVL    36(SP), R9              // arg 6 offset
        MOVL    $477, AX
        SYSCALL
        JCC     2(PC)
index 882ccf1d2665250a191eebcca847cab27f7bbf7a..dd04731581f0377304a3ea9beeb2dfd36c64ceb5 100644 (file)
@@ -76,14 +76,14 @@ TEXT        sigreturn(SB),7,$0
        SYSCALL
        INT $3  // not reached
 
-TEXT   ·mmap(SB),7,$0-32
+TEXT   ·mmap(SB),7,$0
        MOVQ    8(SP), DI
        MOVQ    $0, SI
-       MOVL    16(SP), SI
-       MOVL    20(SP), DX
-       MOVL    24(SP), R10
-       MOVL    28(SP), R8
-       MOVL    32(SP), R9
+       MOVQ    16(SP), SI
+       MOVL    24(SP), DX
+       MOVL    28(SP), R10
+       MOVL    32(SP), R8
+       MOVL    36(SP), R9
 
        MOVL    $9, AX                  // syscall entry
        SYSCALL
index 0b770ad0e1cd2a36570b0a6700a75fe00517ca80..e2aedb4ceec8635a4dd822fff2e1878a0ea0c424 100644 (file)
@@ -511,7 +511,7 @@ void        notewakeup(Note*);
 /*
  * low level go-called
  */
-uint8* runtime_mmap(byte*, uint32, int32, int32, int32, uint32);
+uint8* runtime_mmap(byte*, uintptr, int32, int32, int32, uint32);
 void   runtime_memclr(byte*, uint32);
 void   runtime_setcallerpc(void*, void*);
 void*  runtime_getcallerpc(void*);