mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-19 00:59:15 +08:00
Move uinteger_pow gdb/valarith.c to gdb/utils.c and make it public
This is a generic function which I would like to use in a followup patch adding support for fixed-point types. So this commit moves it out of valarith.c into util.c, and makes it non-static. gdb/ChangeLog: * utils.h (uinteger_pow): Add declaration. * utils.c (uinteger_pow): Moved here (without changes)... * valarith.c (uinteger_pow): ... from here.
This commit is contained in:
30
gdb/utils.c
30
gdb/utils.c
@ -709,6 +709,36 @@ myread (int desc, char *addr, int len)
|
||||
return orglen;
|
||||
}
|
||||
|
||||
/* See utils.h. */
|
||||
|
||||
ULONGEST
|
||||
uinteger_pow (ULONGEST v1, LONGEST v2)
|
||||
{
|
||||
if (v2 < 0)
|
||||
{
|
||||
if (v1 == 0)
|
||||
error (_("Attempt to raise 0 to negative power."));
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* The Russian Peasant's Algorithm. */
|
||||
ULONGEST v;
|
||||
|
||||
v = 1;
|
||||
for (;;)
|
||||
{
|
||||
if (v2 & 1L)
|
||||
v *= v1;
|
||||
v2 >>= 1;
|
||||
if (v2 == 0)
|
||||
return v;
|
||||
v1 *= v1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
print_spaces (int n, struct ui_file *file)
|
||||
{
|
||||
|
Reference in New Issue
Block a user