]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: implement SysUnused for netbsd
authorJoel Sing <jsing@google.com>
Mon, 26 Nov 2012 11:34:01 +0000 (22:34 +1100)
committerJoel Sing <jsing@google.com>
Mon, 26 Nov 2012 11:34:01 +0000 (22:34 +1100)
R=golang-dev, bradfitz, minux.ma, dave
CC=golang-dev
https://golang.org/cl/6842081

src/pkg/runtime/defs_netbsd.go
src/pkg/runtime/defs_netbsd_386.h
src/pkg/runtime/defs_netbsd_amd64.h
src/pkg/runtime/mem_netbsd.c
src/pkg/runtime/sys_netbsd_386.s
src/pkg/runtime/sys_netbsd_amd64.s

index 6c46bb2f29792e12721b3a5775e24e1f45797a4e..53e061041e718baf73a8d46a63873d4935119310 100644 (file)
@@ -37,6 +37,8 @@ const (
        MAP_PRIVATE = C.MAP_PRIVATE
        MAP_FIXED   = C.MAP_FIXED
 
+       MADV_FREE = C.MADV_FREE
+
        SA_SIGINFO = C.SA_SIGINFO
        SA_RESTART = C.SA_RESTART
        SA_ONSTACK = C.SA_ONSTACK
index 89b3ab48994adaed331c1e1ffb7077185f141607..04c380e3f0524d7da973850be2b5ac5773839bc5 100644 (file)
@@ -12,6 +12,8 @@ enum {
        MAP_PRIVATE     = 0x2,
        MAP_FIXED       = 0x10,
 
+       MADV_FREE       = 0x6,
+
        SA_SIGINFO      = 0x40,
        SA_RESTART      = 0x2,
        SA_ONSTACK      = 0x1,
index c6ee7d8c267234f0e318f329ac9b31de6f2ebc94..3d3f576d31c1337fa80a3b5129e495e6d6bac961 100644 (file)
@@ -12,6 +12,8 @@ enum {
        MAP_PRIVATE     = 0x2,
        MAP_FIXED       = 0x10,
 
+       MADV_FREE       = 0x6,
+
        SA_SIGINFO      = 0x40,
        SA_RESTART      = 0x2,
        SA_ONSTACK      = 0x1,
index 34ff31d9085c3a36978169fa67c1ed3176f3759a..43fef40ba4b3892645a988e9547e5b4e392c8d94 100644 (file)
@@ -28,9 +28,7 @@ runtime·SysAlloc(uintptr n)
 void
 runtime·SysUnused(void *v, uintptr n)
 {
-       USED(v);
-       USED(n);
-       // TODO(rsc): call madvise MADV_DONTNEED
+       runtime·madvise(v, n, MADV_FREE);
 }
 
 void
index c4bc80933a4ec71dad7b184789e28443316fcd58..9c88b14487a4e25c2e0e1030b321f75772be6141 100644 (file)
@@ -83,6 +83,13 @@ TEXT runtime·munmap(SB),7,$-4
        MOVL    $0xf1, 0xf1             // crash
        RET
 
+TEXT runtime·madvise(SB),7,$-4
+       MOVL    $75, AX                 // sys_madvise
+       INT     $0x80
+       JAE     2(PC)
+       MOVL    $0xf1, 0xf1             // crash
+       RET
+
 TEXT runtime·setitimer(SB),7,$-4
        MOVL    $425, AX                // sys_setitimer
        INT     $0x80
@@ -180,7 +187,7 @@ TEXT runtime·sigtramp(SB),7,$44
        CMPL    BX, $0
        JNE     5(PC)
        MOVL    signo+0(FP), BX
-       MOVL    BX, 0(SP)      
+       MOVL    BX, 0(SP)
        CALL    runtime·badsignal(SB)
        RET
 
index 9fe1ebbc492e5ffac50711a6cbebde71ac8341b7..e00c727ccbce4d819275d8105a59d205fc67a99e 100644 (file)
@@ -10,7 +10,6 @@
 
 // int32 lwp_create(void *context, uintptr flags, void *lwpid)
 TEXT runtime·lwp_create(SB),7,$0
-
        MOVQ    context+0(FP), DI
        MOVQ    flags+8(FP), SI
        MOVQ    lwpid+16(FP), DX
@@ -248,6 +247,17 @@ TEXT runtime·munmap(SB),7,$0
        MOVL    $0xf1, 0xf1             // crash
        RET
 
+
+TEXT runtime·madvise(SB),7,$0
+       MOVQ    addr+0(FP), DI          // arg 1 - addr
+       MOVQ    len+8(FP), SI           // arg 2 - len
+       MOVQ    behav+16(FP), DX        // arg 3 - behav
+       MOVQ    $75, AX                 // sys_madvise
+       SYSCALL
+       JCC     2(PC)
+       MOVL    $0xf1, 0xf1             // crash
+       RET
+
 TEXT runtime·sigaltstack(SB),7,$-8
        MOVQ    new+8(SP), DI           // arg 1 - nss
        MOVQ    old+16(SP), SI          // arg 2 - oss