aboutsummaryrefslogtreecommitdiffstats
path: root/tools/firmware
diff options
context:
space:
mode:
authorFrediano Ziglio <frediano.ziglio@citrix.com>2013-02-15 13:32:06 +0000
committerFrediano Ziglio <frediano.ziglio@citrix.com>2013-02-15 13:32:06 +0000
commitefadaf957aca9910ed07692fb264354f43794423 (patch)
treeebc9806dab3c0b2b9b3cbe1ea3e23b609e57034b /tools/firmware
parent40bfe09de4ad14127c8b40273fea1aaf49522585 (diff)
downloadxen-efadaf957aca9910ed07692fb264354f43794423.tar.gz
xen-efadaf957aca9910ed07692fb264354f43794423.tar.bz2
xen-efadaf957aca9910ed07692fb264354f43794423.zip
trivial: Optimize printnum
Reuse the string of hexadecimal numbers to simplify printnum implementation Signed-off-by: Frediano Ziglio <frediano.ziglio@citrix.com> Acked-by: Keir Fraser <keir@xen.org> Committed-by: Ian Campbell <ian.campbell@citrix.com>
Diffstat (limited to 'tools/firmware')
-rw-r--r--tools/firmware/hvmloader/util.c20
1 files changed, 6 insertions, 14 deletions
diff --git a/tools/firmware/hvmloader/util.c b/tools/firmware/hvmloader/util.c
index d5cd27735b..741b9c2fd7 100644
--- a/tools/firmware/hvmloader/util.c
+++ b/tools/firmware/hvmloader/util.c
@@ -315,23 +315,15 @@ cpuid(uint32_t idx, uint32_t *eax, uint32_t *ebx, uint32_t *ecx, uint32_t *edx)
: "0" (idx) );
}
+static const char hex_digits[] = "0123456789abcdef";
+
/* Write a two-character hex representation of 'byte' to digits[].
Pre-condition: sizeof(digits) >= 2 */
void
byte_to_hex(char *digits, uint8_t byte)
{
- uint8_t nybbel = byte >> 4;
-
- if ( nybbel > 9 )
- digits[0] = 'a' + nybbel-10;
- else
- digits[0] = '0' + nybbel;
-
- nybbel = byte & 0x0f;
- if ( nybbel > 9 )
- digits[1] = 'a' + nybbel-10;
- else
- digits[1] = '0' + nybbel;
+ digits[0] = hex_digits[byte >> 4];
+ digits[1] = hex_digits[byte & 0x0f];
}
/* Convert an array of 16 unsigned bytes to a DCE/OSF formatted UUID
@@ -518,13 +510,13 @@ void pci_write(uint32_t devfn, uint32_t reg, uint32_t len, uint32_t val)
}
}
-static char *printnum(char *p, unsigned long num, int base)
+static char *printnum(char *p, unsigned long num, unsigned base)
{
unsigned long n;
if ( (n = num/base) > 0 )
p = printnum(p, n, base);
- *p++ = "0123456789abcdef"[(int)(num % base)];
+ *p++ = hex_digits[num % base];
*p = '\0';
return p;
}