summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/alpha/divq.S
diff options
context:
space:
mode:
authorGuillaume Cottenceau <gc@mandriva.com>2001-01-04 20:04:45 +0000
committerGuillaume Cottenceau <gc@mandriva.com>2001-01-04 20:04:45 +0000
commit02fec4701cee79f875c1d02b8b4aee09380dbcb8 (patch)
treef4f291aedbb2e60ee58351481858a8cd3ec80b6b /mdk-stage1/dietlibc/alpha/divq.S
parent9887fe04751edf39e8389f2c3ec3f020b5e1c17d (diff)
downloaddrakx-backup-do-not-use-02fec4701cee79f875c1d02b8b4aee09380dbcb8.tar
drakx-backup-do-not-use-02fec4701cee79f875c1d02b8b4aee09380dbcb8.tar.gz
drakx-backup-do-not-use-02fec4701cee79f875c1d02b8b4aee09380dbcb8.tar.bz2
drakx-backup-do-not-use-02fec4701cee79f875c1d02b8b4aee09380dbcb8.tar.xz
drakx-backup-do-not-use-02fec4701cee79f875c1d02b8b4aee09380dbcb8.zip
integrate dietlibc/stdio per default for cdrom and disk only installs
Diffstat (limited to 'mdk-stage1/dietlibc/alpha/divq.S')
-rw-r--r--mdk-stage1/dietlibc/alpha/divq.S102
1 files changed, 102 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/alpha/divq.S b/mdk-stage1/dietlibc/alpha/divq.S
new file mode 100644
index 000000000..cf70862c4
--- /dev/null
+++ b/mdk-stage1/dietlibc/alpha/divq.S
@@ -0,0 +1,102 @@
+/* taken from glibc 2.2 */
+
+ .set noreorder
+ .set noat
+
+ .ent __divqu
+ .globl __divqu
+
+ .align 3
+__divqu :
+ lda $30 , - 48 ($30 )
+ .frame $30 , 48 , $23 , 0
+ .prologue 0
+$udiv:
+ stq $1 , 0($30 )
+ mov $25 , $1
+ stq $2 , 8($30 )
+ mov $24 , $2
+ stq $0 , 16($30 )
+ clr $27
+ stq $3 , 24($30 )
+ ldiq $0 , 1
+ stq $4 ,32($30 )
+ beq $1 , $divbyzero
+
+ .align 3
+
+
+1: cmpult $1 , $2 , $at
+ blt $1 , 2f
+ addq $1 , $1 , $1
+ addq $0 , $0 , $0
+ bne $at , 1b
+ unop
+2:
+3: addq $27 ,$0 , $4
+ srl $0 , 1, $0
+ cmpule $1 , $2 , $at
+ subq $2 , $1 , $3
+ cmovne $at ,$4 , $27
+ srl $1 , 1, $1
+ cmovne $at , $3 , $2
+ bne $0 , 3b
+
+$done: ldq $1 , 0($30 )
+ ldq $2 , 8($30 )
+ ldq $0 , 16($30 )
+ ldq $3 , 24($30 )
+ ldq $4 ,32($30 )
+ lda $30 , 48 ($30 )
+ ret $31 , ($23 ), 1
+
+$divbyzero:
+ mov $16 , $3
+ ldiq $16 , -2
+ call_pal 170
+ mov $3 , $16
+ clr $27
+ br $done
+
+ .end __divqu
+
+ .ent __divq
+ .globl __divq
+
+ .align 3
+__divq :
+ lda $30 , - 48 ($30 )
+ .frame $30 , 48 , $23 , 0
+ .prologue 0
+ or $24 , $25 , $at
+
+ bge $at , $udiv
+
+
+ stq $24 , 0($30 )
+ negq $24 , $at
+ stq $25 , 8($30 )
+ cmovge $at , $at , $24
+ stq $23 , 16($30 )
+ negq $25 , $at
+ stq $3 , 24($30 )
+ cmovge $at , $at , $25
+
+
+ bsr $23 , __divqu
+
+
+ ldq $24 , 0($30 )
+ ldq $25 , 8($30 )
+ xor $24 , $25 , $at
+ negq $27 , $3
+
+ ldq $23 , 16($30 )
+ cmovlt $at , $3 , $27
+ ldq $3 , 24($30 )
+
+ lda $30 , 48 ($30 )
+ ret $31 , ($23 ), 1
+
+ .end __divq
+