diff options
author | Guillaume Cottenceau <gc@mandriva.com> | 2001-01-04 20:04:45 +0000 |
---|---|---|
committer | Guillaume Cottenceau <gc@mandriva.com> | 2001-01-04 20:04:45 +0000 |
commit | 02fec4701cee79f875c1d02b8b4aee09380dbcb8 (patch) | |
tree | f4f291aedbb2e60ee58351481858a8cd3ec80b6b /mdk-stage1/dietlibc/alpha/divq.S | |
parent | 9887fe04751edf39e8389f2c3ec3f020b5e1c17d (diff) | |
download | drakx-02fec4701cee79f875c1d02b8b4aee09380dbcb8.tar drakx-02fec4701cee79f875c1d02b8b4aee09380dbcb8.tar.gz drakx-02fec4701cee79f875c1d02b8b4aee09380dbcb8.tar.bz2 drakx-02fec4701cee79f875c1d02b8b4aee09380dbcb8.tar.xz drakx-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.S | 102 |
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 + |