genode/base-mb/src/core/include/cpu/prints.h

68 lines
1.3 KiB
C

/*
* \brief Saver print methods than the luxury dynamic-number/type-of-arguments one's
* \author Martin Stein
* \date 2010-09-16
*/
/*
* Copyright (C) 2010-2013 Genode Labs GmbH
*
* This file is part of the Genode OS framework, which is distributed
* under the terms of the GNU General Public License version 2.
*/
#ifndef _INCLUDE__XMB__PRINTS_H_
#define _INCLUDE__XMB__PRINTS_H_
#include <cpu/config.h>
enum { UART_OUT_REGISTER=0x84000004 };
inline static void _prints_chr1(volatile char chr1)
{
unsigned volatile* uart = (volatile unsigned*)UART_OUT_REGISTER;
*uart = chr1;
}
inline static void _prints_hex2(volatile char hex2)
{
volatile char hex1 = ((hex2 >> 4) & 0xf);
if (hex1 > 9) hex1 += 39;
hex1 += 48;
_prints_chr1((volatile char)hex1);
hex1 = hex2 & 0xf;
if (hex1 > 9) hex1 += 39;
hex1 += 48;
_prints_chr1((volatile char)hex1);
}
inline static void _prints_hex8(unsigned volatile hex8)
{
_prints_hex2((volatile char)(hex8 >> 24));
_prints_hex2((volatile char)(hex8 >> 16));
_prints_hex2((volatile char)(hex8 >> 8));
_prints_hex2((volatile char)(hex8 >> 0));
}
inline static void _prints_hex8l(unsigned volatile hex8)
{
_prints_hex8(hex8);
_prints_chr1('\n');
}
inline static void _prints_str0(const char* volatile str0)
{
while (*str0) _prints_chr1(*str0++);
}
#endif /* _INCLUDE__XMB__PRINTS_H_ */