]> Cypherpunks repositories - gostls13.git/commitdiff
bugs in memmove:
authorRob Pike <r@golang.org>
Wed, 18 Nov 2009 23:00:02 +0000 (15:00 -0800)
committerRob Pike <r@golang.org>
Wed, 18 Nov 2009 23:00:02 +0000 (15:00 -0800)
- has arguments (no stack split)
- MOVL does not set condition

R=ken2, rsc
https://golang.org/cl/156086

src/pkg/runtime/386/memmove.s
src/pkg/runtime/amd64/memmove.s
src/pkg/runtime/arm/memmove.s

index 48624562183b831e014a209dcd22f793348b22b3..8adb687c5254aef8e20249ebb71b6d88a3ee9366 100644 (file)
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
 
-       TEXT    memmove(SB), $0
+       TEXT    memmove(SB), 7, $0
 
        MOVL    to+0(FP), DI
        MOVL    fr+4(FP), SI
        MOVL    n+8(FP), BX
+       CMPL    BX, $0
        JLT     fault
 
 /*
@@ -38,7 +39,7 @@
        JLS     back
 
 /*
- * foreward copy loop
+ * forward copy loop
  */
        MOVL    BX, CX
        SHRL    $2, CX
index e0a03d6deff3b66d47cd38b1b2ff65d20c5971ce..d755580dc5a20de4b8cfbc66dec7bc9f284b3f96 100644 (file)
 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 // THE SOFTWARE.
 
-       TEXT    memmove(SB), $0
+       TEXT    memmove(SB), 7, $0
 
        MOVQ    to+0(FP), DI
        MOVQ    fr+8(FP), SI
        MOVLQSX n+16(FP), BX
+       CMPQ    BX, $0
        JLT     fault
 
 /*
@@ -38,7 +39,7 @@
        JLS     back
 
 /*
- * foreward copy loop
+ * forward copy loop
  */
        MOVQ    BX, CX
        SHRQ    $3, CX
index 38cccc769a1a8ef1d0ace7af8ea1618668e9cf4a..bf172680c1c207f0747e9c8e1e4fbf6e4418ee02 100644 (file)
@@ -30,8 +30,7 @@ N = 3
 TMP = 3                                        /* N and TMP don't overlap */
 TMP1 = 4
 
-TEXT   memcpy(SB), $0
-TEXT memmove(SB), $-4
+TEXT memmove(SB), 7, $-4
 _memmove:
        MOVW    R(TS), to+0(FP)         /* need to save for return value */
        MOVW    from+4(FP), R(FROM)