P8000/WEGA/contrib/lcc/lib/libc/u8k/crt/fix.s

214 lines
3.1 KiB
ArmAsm

.seg
fp := r13
FP := rr12
sp := r15
SP := rr14
.psec data
.data
.psec
.code
divg::
dec sp,#12
ldm @SP,r8,#6
ld fp,sp
inc fp,#8
sub sp,#~L2-12
ld _stkseg+%fff6(fp),#%20
L47:
ld r2,_stkseg+%fff6(fp)
dec _stkseg+%fff6(fp),#%1
cp r2,#0
jpr eq,L48
ldl rr2,_stkseg+%8(fp)
addl rr2,rr2
ldl _stkseg+%8(fp),rr2
ldl rr2,_stkseg+%8(fp)
subl rr2,_stkseg+%c(fp)
ldl _stkseg+%8(fp),rr2
callr carry
cp r2,#0
jpr eq,L49
ldl rr2,_stkseg+%8(fp)
addl rr2,_stkseg+%c(fp)
ldl _stkseg+%8(fp),rr2
ldl rr2,_stkseg+%fff2(fp)
addl rr2,rr2
ldl _stkseg+%fff2(fp),rr2
jpr L50
L49:
ldl rr2,_stkseg+%fff2(fp)
addl rr2,rr2
ldl rr4,#%1
or r2,r4
or r3,r5
ldl _stkseg+%fff2(fp),rr2
L50:
jpr L47
L48:
ldl rr2,FP(#%fff2)
jpr L46
L46:
ld sp,fp
ldm r8,_stkseg-8(sp),#6
inc sp,#4
ret
~L1 := 14
~L2 := 18
}
.psec data
.data
.psec
.code
divgdd::
dec sp,#12
ldm @SP,r8,#6
ld fp,sp
inc fp,#8
sub sp,#~L2-12
.psec data
.data
.comm 8, ___StRet;
.psec
.code
ldl rr2,#%80000000
ldl _stkseg+%ffec(fp),rr2
ld _stkseg+%ffea(fp),#%40
L61:
ld r2,_stkseg+%ffea(fp)
dec _stkseg+%ffea(fp),#%1
cp r2,#0
jpr eq,L62
ldl rr2,_stkseg+%ffec(fp)
and r2,_stkseg+%c(fp)
and r3,_stkseg+%e(fp)
srll rr2,#%1f
ldl rr4,_stkseg+%8(fp)
addl rr4,rr4
or r2,r4
or r3,r5
ldl _stkseg+%8(fp),rr2
ldl rr2,_stkseg+%c(fp)
addl rr2,rr2
ldl _stkseg+%c(fp),rr2
ldl rr2,_stkseg+%c(fp)
subl rr2,_stkseg+%14(fp)
ldl _stkseg+%c(fp),rr2
callr carry
ld r5,r2
exts rr4
ldl _stkseg+%ffe6(fp),rr4
ldl rr2,_stkseg+%ffe6(fp)
addl rr2,_stkseg+%10(fp)
ldl _stkseg+%ffe6(fp),rr2
ldl rr2,_stkseg+%8(fp)
subl rr2,_stkseg+%ffe6(fp)
ldl _stkseg+%8(fp),rr2
callr carry
cp r2,#0
jpr eq,L63
ldl rr2,_stkseg+%c(fp)
addl rr2,_stkseg+%14(fp)
ldl _stkseg+%c(fp),rr2
callr carry
ld _stkseg+%ffe8(fp),r2
ld r3,_stkseg+%ffe8(fp)
exts rr2
addl rr2,_stkseg+%8(fp)
addl rr2,_stkseg+%10(fp)
ldl _stkseg+%8(fp),rr2
ldl rr2,_stkseg+%ffec(fp)
and r2,_stkseg+%fff4(fp)
and r3,_stkseg+%fff6(fp)
srll rr2,#%1f
ldl rr4,_stkseg+%fff0(fp)
addl rr4,rr4
or r2,r4
or r3,r5
ldl _stkseg+%fff0(fp),rr2
ldl rr2,_stkseg+%fff4(fp)
addl rr2,rr2
ldl _stkseg+%fff4(fp),rr2
jpr L64
L63:
ldl rr2,_stkseg+%ffec(fp)
and r2,_stkseg+%fff4(fp)
and r3,_stkseg+%fff6(fp)
srll rr2,#%1f
ldl rr4,_stkseg+%fff0(fp)
addl rr4,rr4
or r2,r4
or r3,r5
ldl _stkseg+%fff0(fp),rr2
ldl rr2,_stkseg+%fff4(fp)
addl rr2,rr2
ldl _stkseg+%fff4(fp),rr2
ldl rr2,#%1
or r2,_stkseg+%fff4(fp)
or r3,_stkseg+%fff6(fp)
ldl _stkseg+%fff4(fp),rr2
L64:
jpr L61
L62:
ldl rr2,#___StRet
ldl rr4,FP
add r5,#%fff0
ld r6,#%4
ldir @rr2,@rr4,r6
jpr L60
L60:
ldl rr2,#___StRet
ld sp,fp
ldm r8,_stkseg-8(sp),#6
inc sp,#4
ret
~L1 := 26
~L2 := 30
}
.psec data
.data
.psec
.code
mul::
dec sp,#12
ldm @SP,r8,#6
ld fp,sp
inc fp,#8
sub sp,#~L2-12
ldl rr2,_stkseg+%8(fp)
ldl rr6,rr2
multl rq4,_stkseg+%c(fp)
ldl rr2,rr6
jpr L69
L69:
ld sp,fp
ldm r8,_stkseg-8(sp),#6
inc sp,#4
ret
~L1 := 8
~L2 := 12
}
.psec data
.data
.seg
.psec
.code
carry::
{
ldk r2,#0
ret nc
inc r2,#1
ret
}
notcarry::
{
ldk r2,#0
ret c
inc r2,#1
ret
}