projects
/
unix-history
/ blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
tags
|
clone url
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
blame
|
history
|
raw
|
HEAD
Oh GACK! src-clean doesn't quite work that easily since cleandist rebuilds the
[unix-history]
/
gnu
/
usr.bin
/
gcc1
/
gnulib
/
longlong
/
subdi3.c
#include
"longlong.h"
static int
bsub
();
long long
__subdi3
(
u
,
v
)
long long
u
,
v
;
{
long
a
[
2
],
b
[
2
],
c
[
2
];
long_long w
;
long_long uu
,
vv
;
uu
.
ll
=
u
;
vv
.
ll
=
v
;
a
[
HIGH
] =
uu
.
s
.
high
;
a
[
LOW
] =
uu
.
s
.
low
;
b
[
HIGH
] =
vv
.
s
.
high
;
b
[
LOW
] =
vv
.
s
.
low
;
bsub
(
a
,
b
,
c
,
sizeof
c
);
w
.
s
.
high
=
c
[
HIGH
];
w
.
s
.
low
=
c
[
LOW
];
return
w
.
ll
;
}
static int
bsub
(
a
,
b
,
c
,
n
)
unsigned short
*
a
, *
b
, *
c
;
size_t
n
;
{
signed long
acc
;
int
i
;
n
/=
sizeof
*
c
;
acc
=
0
;
for
(
i
=
little_end
(
n
);
is_not_msd
(
i
,
n
);
i
=
next_msd
(
i
))
{
/* Widen before subtracting to avoid loss of high bits. */
acc
+= (
long
)
a
[
i
] -
b
[
i
];
c
[
i
] =
acc
&
low16
;
acc
=
acc
>>
16
;
}
return
acc
;
}