runtime: handle malloc > 2GB correctly

R=ken2
CC=golang-dev
https://golang.org/cl/821048
This commit is contained in:
Russ Cox 2010-04-05 17:26:59 -07:00
parent 99d258a2f0
commit d89b357f76
4 changed files with 18 additions and 18 deletions

View File

@ -77,11 +77,11 @@ TEXT sigtramp(SB),7,$40
TEXT ·mmap(SB),7,$0 TEXT ·mmap(SB),7,$0
MOVQ 8(SP), DI // arg 1 addr MOVQ 8(SP), DI // arg 1 addr
MOVL 16(SP), SI // arg 2 len MOVQ 16(SP), SI // arg 2 len
MOVL 20(SP), DX // arg 3 prot MOVL 24(SP), DX // arg 3 prot
MOVL 24(SP), R10 // arg 4 flags MOVL 28(SP), R10 // arg 4 flags
MOVL 28(SP), R8 // arg 5 fid MOVL 32(SP), R8 // arg 5 fid
MOVL 32(SP), R9 // arg 6 offset MOVL 36(SP), R9 // arg 6 offset
MOVL $(0x2000000+197), AX // syscall entry MOVL $(0x2000000+197), AX // syscall entry
SYSCALL SYSCALL
JCC 2(PC) JCC 2(PC)

View File

@ -91,13 +91,13 @@ TEXT sigtramp(SB),7,$24-16
CALL sighandler(SB) CALL sighandler(SB)
RET RET
TEXT ·mmap(SB),7,$-8 TEXT ·mmap(SB),7,$0
MOVQ 8(SP), DI // arg 1 addr MOVQ 8(SP), DI // arg 1 addr
MOVL 16(SP), SI // arg 2 len MOVQ 16(SP), SI // arg 2 len
MOVL 20(SP), DX // arg 3 prot MOVL 24(SP), DX // arg 3 prot
MOVL 24(SP), R10 // arg 4 flags MOVL 28(SP), R10 // arg 4 flags
MOVL 28(SP), R8 // arg 5 fid MOVL 32(SP), R8 // arg 5 fid
MOVL 32(SP), R9 // arg 6 offset MOVL 36(SP), R9 // arg 6 offset
MOVL $477, AX MOVL $477, AX
SYSCALL SYSCALL
JCC 2(PC) JCC 2(PC)

View File

@ -76,14 +76,14 @@ TEXT sigreturn(SB),7,$0
SYSCALL SYSCALL
INT $3 // not reached INT $3 // not reached
TEXT ·mmap(SB),7,$0-32 TEXT ·mmap(SB),7,$0
MOVQ 8(SP), DI MOVQ 8(SP), DI
MOVQ $0, SI MOVQ $0, SI
MOVL 16(SP), SI MOVQ 16(SP), SI
MOVL 20(SP), DX MOVL 24(SP), DX
MOVL 24(SP), R10 MOVL 28(SP), R10
MOVL 28(SP), R8 MOVL 32(SP), R8
MOVL 32(SP), R9 MOVL 36(SP), R9
MOVL $9, AX // syscall entry MOVL $9, AX // syscall entry
SYSCALL SYSCALL

View File

@ -511,7 +511,7 @@ void notewakeup(Note*);
/* /*
* low level go-called * 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_memclr(byte*, uint32);
void runtime_setcallerpc(void*, void*); void runtime_setcallerpc(void*, void*);
void* runtime_getcallerpc(void*); void* runtime_getcallerpc(void*);