summaryrefslogtreecommitdiff
path: root/common/tf_printf.c
diff options
context:
space:
mode:
Diffstat (limited to 'common/tf_printf.c')
-rw-r--r--common/tf_printf.c193
1 files changed, 0 insertions, 193 deletions
diff --git a/common/tf_printf.c b/common/tf_printf.c
deleted file mode 100644
index ecf058ca..00000000
--- a/common/tf_printf.c
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright (c) 2014-2017, ARM Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-#include <arch.h>
-#include <arch_helpers.h>
-#include <assert.h>
-#include <debug.h>
-#include <limits.h>
-#include <stdarg.h>
-#include <stdint.h>
-
-/***********************************************************
- * The tf_printf implementation for all BL stages
- ***********************************************************/
-
-#define get_num_va_args(_args, _lcount) \
- (((_lcount) > 1) ? va_arg(_args, long long int) : \
- ((_lcount) ? va_arg(_args, long int) : va_arg(_args, int)))
-
-#define get_unum_va_args(_args, _lcount) \
- (((_lcount) > 1) ? va_arg(_args, unsigned long long int) : \
- ((_lcount) ? va_arg(_args, unsigned long int) : va_arg(_args, unsigned int)))
-
-int tf_string_print(const char *str)
-{
- int count = 0;
-
- assert(str);
-
- while (*str) {
- putchar(*str++);
- count++;
- }
-
- return count;
-}
-
-static int unsigned_num_print(unsigned long long int unum, unsigned int radix,
- char padc, int padn)
-{
- /* Just need enough space to store 64 bit decimal integer */
- unsigned char num_buf[20];
- int i = 0, rem, count = 0;
-
- do {
- rem = unum % radix;
- if (rem < 0xa)
- num_buf[i++] = '0' + rem;
- else
- num_buf[i++] = 'a' + (rem - 0xa);
- } while (unum /= radix);
-
- if (padn > 0) {
- while (i < padn--) {
- putchar(padc);
- count++;
- }
- }
-
- while (--i >= 0) {
- putchar(num_buf[i]);
- count++;
- }
-
- return count;
-}
-
-/*******************************************************************
- * Reduced format print for Trusted firmware.
- * The following type specifiers are supported by this print
- * %x - hexadecimal format
- * %s - string format
- * %d or %i - signed decimal format
- * %u - unsigned decimal format
- * %p - pointer format
- *
- * The following length specifiers are supported by this print
- * %l - long int (64-bit on AArch64)
- * %ll - long long int (64-bit on AArch64)
- * %z - size_t sized integer formats (64 bit on AArch64)
- *
- * The following padding specifiers are supported by this print
- * %0NN - Left-pad the number with 0s (NN is a decimal number)
- *
- * The print exits on all other formats specifiers other than valid
- * combinations of the above specifiers.
- *******************************************************************/
-int tf_vprintf(const char *fmt, va_list args)
-{
- int l_count;
- long long int num;
- unsigned long long int unum;
- char *str;
- char padc = 0; /* Padding character */
- int padn; /* Number of characters to pad */
- int count = 0; /* Number of printed characters */
-
- while (*fmt) {
- l_count = 0;
- padn = 0;
-
- if (*fmt == '%') {
- fmt++;
- /* Check the format specifier */
-loop:
- switch (*fmt) {
- case 'i': /* Fall through to next one */
- case 'd':
- num = get_num_va_args(args, l_count);
- if (num < 0) {
- putchar('-');
- unum = (unsigned long long int)-num;
- padn--;
- } else
- unum = (unsigned long long int)num;
-
- count += unsigned_num_print(unum, 10,
- padc, padn);
- break;
- case 's':
- str = va_arg(args, char *);
- count += tf_string_print(str);
- break;
- case 'p':
- unum = (uintptr_t)va_arg(args, void *);
- if (unum) {
- count += tf_string_print("0x");
- padn -= 2;
- }
-
- count += unsigned_num_print(unum, 16,
- padc, padn);
- break;
- case 'x':
- unum = get_unum_va_args(args, l_count);
- count += unsigned_num_print(unum, 16,
- padc, padn);
- break;
- case 'z':
- if (sizeof(size_t) == 8)
- l_count = 2;
-
- fmt++;
- goto loop;
- case 'l':
- l_count++;
- fmt++;
- goto loop;
- case 'u':
- unum = get_unum_va_args(args, l_count);
- count += unsigned_num_print(unum, 10,
- padc, padn);
- break;
- case '0':
- padc = '0';
- padn = 0;
- fmt++;
-
- while (1) {
- char ch = *fmt;
- if (ch < '0' || ch > '9') {
- goto loop;
- }
- padn = (padn * 10) + (ch - '0');
- fmt++;
- }
- default:
- /* Exit on any other format specifier */
- return -1;
- }
- fmt++;
- continue;
- }
- putchar(*fmt++);
- count++;
- }
-
- return count;
-}
-
-int tf_printf(const char *fmt, ...)
-{
- int count;
- va_list va;
-
- va_start(va, fmt);
- count = tf_vprintf(fmt, va);
- va_end(va);
-
- return count;
-}