From 6420525753182dc2782ac5d66b3e9c964293b0d5 Mon Sep 17 00:00:00 2001 From: ceriel Date: Wed, 18 Jan 1989 10:51:57 +0000 Subject: [PATCH] Added STS and LOS routines --- mach/i86/libem/loi.s | 16 +++++++++++++--- mach/i86/libem/sti.s | 12 +++++++++--- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/mach/i86/libem/loi.s b/mach/i86/libem/loi.s index c070d0343..080fbc70d 100644 --- a/mach/i86/libem/loi.s +++ b/mach/i86/libem/loi.s @@ -1,15 +1,15 @@ .sect .text; .sect .rom; .sect .data; .sect .bss .sect .text .define .loi +.define .los ! #bytes in cx ! address in bx ! save si/di. they might be register variables -.loi: - pop ax +.los: mov dx,si mov si,bx - mov bx,ax + pop bx mov ax,cx sar cx,1 jnb 1f @@ -20,6 +20,16 @@ jmp bx 1: sub sp,ax + jmp 1f + +.loi: + ! only called with size > 4 + mov dx,si + mov si,bx + pop bx + sub sp,cx + sar cx,1 +1: mov ax,di mov di,sp rep movs diff --git a/mach/i86/libem/sti.s b/mach/i86/libem/sti.s index 097580b8e..7825928e4 100644 --- a/mach/i86/libem/sti.s +++ b/mach/i86/libem/sti.s @@ -1,21 +1,27 @@ .sect .text; .sect .rom; .sect .data; .sect .bss .sect .text .define .sti +.define .sts ! #bytes in cx ! address in bx ! save di/si. they might be register variables -.sti: +.sts: mov dx,di ! save di - pop ax ! return address mov di,bx - mov bx,ax + pop bx sar cx,1 jnb 1f pop ax stosb mov di,dx jmp bx +.sti: + ! only called with count > 4 + mov dx,di + mov di,bx + pop bx + sar cx,1 1: mov ax,si mov si,sp -- 2.34.1