Implement a leaner printf for Trusted Firmware
This patch implements a "tf_printf" which supports only the commonly
used format specifiers in Trusted Firmware, which uses a lot less
stack space than the stdlib printf function.
Fixes ARM-software/tf-issues#116
Change-Id: I7dfa1944f4c1e634b3e2d571f49afe02d109a351
diff --git a/bl32/tsp/tsp_interrupt.c b/bl32/tsp/tsp_interrupt.c
index ff6bdc5..c1c9aad 100644
--- a/bl32/tsp/tsp_interrupt.c
+++ b/bl32/tsp/tsp_interrupt.c
@@ -56,7 +56,7 @@
tsp_stats[linear_id].sync_fiq_ret_count++;
spin_lock(&console_lock);
- printf("TSP: cpu 0x%x sync fiq request from 0x%llx \n\r",
+ tf_printf("TSP: cpu 0x%x sync fiq request from 0x%llx \n\r",
mpidr, elr_el3);
INFO("cpu 0x%x: %d sync fiq requests, %d sync fiq returns\n",
mpidr,
@@ -100,7 +100,7 @@
/* Update the statistics and print some messages */
tsp_stats[linear_id].fiq_count++;
spin_lock(&console_lock);
- printf("TSP: cpu 0x%x handled fiq %d \n\r",
+ tf_printf("TSP: cpu 0x%x handled fiq %d \n\r",
mpidr, id);
INFO("cpu 0x%x: %d fiq requests \n",
mpidr, tsp_stats[linear_id].fiq_count);
@@ -116,7 +116,7 @@
tsp_stats[linear_id].irq_count++;
spin_lock(&console_lock);
- printf("TSP: cpu 0x%x received irq\n\r", mpidr);
+ tf_printf("TSP: cpu 0x%x received irq\n\r", mpidr);
INFO("cpu 0x%x: %d irq requests \n",
mpidr, tsp_stats[linear_id].irq_count);
spin_unlock(&console_lock);
diff --git a/bl32/tsp/tsp_main.c b/bl32/tsp/tsp_main.c
index eaabe61..8844f41 100644
--- a/bl32/tsp/tsp_main.c
+++ b/bl32/tsp/tsp_main.c
@@ -34,7 +34,6 @@
#include <platform.h>
#include <platform_def.h>
#include <spinlock.h>
-#include <stdio.h>
#include <tsp.h>
/*******************************************************************************
@@ -121,7 +120,7 @@
tsp_stats[linear_id].cpu_on_count++;
spin_lock(&console_lock);
- printf("TSP %s\n\r", build_message);
+ tf_printf("TSP %s\n\r", build_message);
INFO("Total memory base : 0x%x\n", (unsigned long)BL32_TOTAL_BASE);
INFO("Total memory size : 0x%x bytes\n",
(unsigned long)(BL32_TOTAL_LIMIT - BL32_TOTAL_BASE));
@@ -153,7 +152,7 @@
tsp_stats[linear_id].cpu_on_count++;
spin_lock(&console_lock);
- printf("SP: cpu 0x%x turned on\n\r", mpidr);
+ tf_printf("SP: cpu 0x%x turned on\n\r", mpidr);
INFO("cpu 0x%x: %d smcs, %d erets %d cpu on requests\n", mpidr,
tsp_stats[linear_id].smc_count,
tsp_stats[linear_id].eret_count,
@@ -193,7 +192,7 @@
tsp_stats[linear_id].cpu_off_count++;
spin_lock(&console_lock);
- printf("SP: cpu 0x%x off request\n\r", mpidr);
+ tf_printf("SP: cpu 0x%x off request\n\r", mpidr);
INFO("cpu 0x%x: %d smcs, %d erets %d cpu off requests\n", mpidr,
tsp_stats[linear_id].smc_count,
tsp_stats[linear_id].eret_count,
@@ -235,7 +234,7 @@
tsp_stats[linear_id].cpu_suspend_count++;
spin_lock(&console_lock);
- printf("SP: cpu 0x%x suspend request. power state: 0x%x\n\r",
+ tf_printf("SP: cpu 0x%x suspend request. power state: 0x%x\n\r",
mpidr, power_state);
INFO("cpu 0x%x: %d smcs, %d erets %d cpu suspend requests\n", mpidr,
tsp_stats[linear_id].smc_count,
@@ -273,7 +272,7 @@
tsp_stats[linear_id].cpu_resume_count++;
spin_lock(&console_lock);
- printf("SP: cpu 0x%x resumed. suspend level %d \n\r",
+ tf_printf("SP: cpu 0x%x resumed. suspend level %d \n\r",
mpidr, suspend_level);
INFO("cpu 0x%x: %d smcs, %d erets %d cpu suspend requests\n", mpidr,
tsp_stats[linear_id].smc_count,
@@ -312,7 +311,7 @@
smc_type = ((func >> 31) & 1) == 1 ? "fast" : "standard";
- printf("SP: cpu 0x%x received %s smc 0x%x\n", read_mpidr(), smc_type, func);
+ tf_printf("SP: cpu 0x%x received %s smc 0x%x\n", read_mpidr(), smc_type, func);
INFO("cpu 0x%x: %d smcs, %d erets\n", mpidr,
tsp_stats[linear_id].smc_count,
tsp_stats[linear_id].eret_count);