summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/alpha/reml.S
diff options
context:
space:
mode:
authorGuillaume Cottenceau <gc@mandriva.com>2001-05-14 14:19:32 +0000
committerGuillaume Cottenceau <gc@mandriva.com>2001-05-14 14:19:32 +0000
commit167217bec15c9c7aa70ba2a3dc9c689b3cd91872 (patch)
tree7c0c62debf8f9f145643102fb52b81afce743594 /mdk-stage1/dietlibc/alpha/reml.S
parent9097327dc1c667fc51b8e05cc7c0626fac96665d (diff)
downloaddrakx-backup-do-not-use-167217bec15c9c7aa70ba2a3dc9c689b3cd91872.tar
drakx-backup-do-not-use-167217bec15c9c7aa70ba2a3dc9c689b3cd91872.tar.gz
drakx-backup-do-not-use-167217bec15c9c7aa70ba2a3dc9c689b3cd91872.tar.bz2
drakx-backup-do-not-use-167217bec15c9c7aa70ba2a3dc9c689b3cd91872.tar.xz
drakx-backup-do-not-use-167217bec15c9c7aa70ba2a3dc9c689b3cd91872.zip
import new version of dietlibc
Diffstat (limited to 'mdk-stage1/dietlibc/alpha/reml.S')
-rw-r--r--mdk-stage1/dietlibc/alpha/reml.S101
1 files changed, 101 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/alpha/reml.S b/mdk-stage1/dietlibc/alpha/reml.S
new file mode 100644
index 000000000..2d89e3280
--- /dev/null
+++ b/mdk-stage1/dietlibc/alpha/reml.S
@@ -0,0 +1,101 @@
+/* taken from glibc 2.2 */
+
+ .set noreorder
+ .set noat
+
+ .ent __remlu
+ .globl __remlu
+
+ .align 3
+__remlu :
+ lda $30 , -32($30)
+ .frame $30 , 32 , $23 , 0
+ .prologue 0
+.Ludiv:
+ stq $1 , 0($30)
+ zapnot $25 , 15 , $1
+ stq $2 , 8($30)
+ zapnot $24 , 15 , $27
+ stq $0 , 16($30)
+ clr $2
+ stq $3 , 24($30)
+ ldiq $0 , 1
+
+ beq $1 , .Ldivbyzero
+
+ .align 3
+
+
+1: cmpult $1 , $27 , $at
+ s8addq $1 , $31 , $1
+ s8addq $0 , $31 , $0
+ bne $at , 1b
+
+
+
+3:
+ srl $0 , 1 , $0
+ cmpule $1 , $27 , $at
+ subq $27 , $1 , $3
+
+ srl $1 , 1 , $1
+ cmovne $at , $3 , $27
+ bne $0 , 3b
+
+.Ldone: ldq $1 , 0($30)
+ ldq $2 , 8($30)
+ ldq $0 , 16($30)
+ ldq $3 , 24($30)
+
+ lda $30 , 32($30)
+ ret $31 , ($23), 1
+
+.Ldivbyzero:
+ mov $16 , $3
+ ldiq $16 , -2
+ call_pal 170
+ mov $3 , $16
+ clr $27
+ br .Ldone
+
+ .end __remlu
+
+ .ent __reml
+ .globl __reml
+
+ .align 3
+__reml :
+ lda $30 , - 32 ($30 )
+ .frame $30 , 32 , $23 , 0
+ .prologue 0
+ or $24 , $25 , $at
+ sextl $at , $at
+ bge $at , .Ludiv
+
+
+ stq $24 , 0($30 )
+ negl $24 , $at
+ stq $25 , 8($30 )
+ cmovge $at , $at , $24
+ stq $23 , 16($30 )
+ negl $25 , $at
+ stq $3 , 24($30 )
+ cmovge $at , $at , $25
+
+
+ bsr $23 , __remlu
+
+
+ ldq $24 , 0($30 )
+ ldq $25 , 8($30 )
+ mov $24 , $at
+ negl $27 , $3
+ sextl $at , $at
+ ldq $23 , 16($30 )
+ cmovlt $at , $3 , $27
+ ldq $3 , 24($30 )
+
+ lda $30 , 32 ($30 )
+ ret $31 , ($23 ), 1
+
+ .end __reml