diff --git a/mach/m68k2/libem/los.s b/mach/m68k2/libem/los.s
index 84b683282..934eb0568 100644
--- a/mach/m68k2/libem/los.s
+++ b/mach/m68k2/libem/los.s
@@ -1,4 +1,5 @@
 .define .los
+.define .los4
 .sect .text
 .sect .rom
 .sect .data
@@ -10,6 +11,8 @@
 .los:
 	move.l	(sp)+,a1
 	move.w	(sp)+,d0
+	ext.l	d0
+9:
 	move.l	(sp)+,a0
 	cmp	#1,d0
 	bne	1f
@@ -18,11 +21,20 @@
 	move.w	d0,-(sp)
 	bra	3f
 1:
-	add	d0,a0
-	asr	#1,d0
+	add.l	d0,a0
+	asr.l	#1,d0
 2:
 	move	-(a0),-(sp)
-	sub	#1,d0
+	sub.l	#1,d0
 	bgt	2b
 3:
 	jmp	(a1)
+
+	! d0 : # bytes
+	! a0 : source address
+	.sect .text
+.los4:
+	move.l	(sp)+,a1
+	move.l	(sp)+,d0
+	bra 9b
+.align 2
diff --git a/mach/m68k2/libem/sts.s b/mach/m68k2/libem/sts.s
index 3c1bf9176..d9223904b 100644
--- a/mach/m68k2/libem/sts.s
+++ b/mach/m68k2/libem/sts.s
@@ -1,4 +1,5 @@
 .define .sts
+.define .sts4
 .sect .text
 .sect .rom
 .sect .data
@@ -10,17 +11,23 @@
 .sts:
 	move.l	(sp)+,a1
 	move.w	(sp)+,d0
+	ext.l	d0
+9:
 	move.l	(sp)+,a0
-	cmp	#1,d0
+	cmp.l	#1,d0
 	bne	1f
 	move.w	(sp)+,d0
 	move.b	d0,(a0)
 	bra	3f
 1:
-	asr	#1,d0
+	asr.l	#1,d0
 2:
 	move.w	(sp)+,(a0)+
-	sub	#1,d0
+	sub.l	#1,d0
 	bgt	2b
 3:
 	jmp	(a1)
+.sts4:
+	move.l	(sp)+,a1
+	move.l	(sp)+,d0
+	bra	9b