+/* strcmp.s 4.1 84/11/01 */
+
+/*
+ * Compare string s1 lexicographically to string s2.
+ * Return:
+ * 0 s1 == s2
+ * > 0 s1 > s2
+ * < 0 s2 < s2
+ *
+ * strcmp(s1, s2)
+ * char *s1, *s2;
+ */
+ .globl _strcmp
+
+_strcmp:
+ .word 0x0
+ movq 4(ap),r3 # r3 = s1; r4 = s2
+1:
+ locc $0,$65535,(r4) # look for '\0' in s2
+ bneq 2f
+ cmpc3 $65535,(r4),(r3)# compare full block
+ bneq 3f
+ movl r1,r4 # advance s2
+ jbr 1b # matched, next block
+2:
+ subl2 r4,r1 # calculate length
+ incl r1 # +1 for '\0'
+ cmpc3 r1,(r4),(r3) # compare remainder
+ bneq 3f
+ ret # r0 = 0 already
+3:
+ subb3 (r1),(r3),r0 # r0 = *s1 - *s2
+ cvtbl r0,r0
+ ret