cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

printf.c (959B)


      1// SPDX-License-Identifier: GPL-2.0
      2/*
      3 * printf.c:  Internal prom library printf facility.
      4 *
      5 * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
      6 */
      7
      8/* This routine is internal to the prom library, no one else should know
      9 * about or use it!  It's simple and smelly anyway....
     10 */
     11
     12#include <linux/kernel.h>
     13
     14#include <asm/openprom.h>
     15#include <asm/oplib.h>
     16
     17#ifdef CONFIG_KGDB
     18extern int kgdb_initialized;
     19#endif
     20
     21static char ppbuf[1024];
     22
     23void
     24prom_printf(char *fmt, ...)
     25{
     26	va_list args;
     27	char ch, *bptr;
     28	int i;
     29
     30	va_start(args, fmt);
     31
     32#ifdef CONFIG_KGDB
     33	ppbuf[0] = 'O';
     34	i = vsprintf(ppbuf + 1, fmt, args) + 1;
     35#else
     36	i = vsprintf(ppbuf, fmt, args);
     37#endif
     38
     39	bptr = ppbuf;
     40
     41#ifdef CONFIG_KGDB
     42	if (kgdb_initialized) {
     43		pr_info("kgdb_initialized = %d\n", kgdb_initialized);
     44		putpacket(bptr, 1);
     45	} else
     46#else
     47	while((ch = *(bptr++)) != 0) {
     48		if(ch == '\n')
     49			prom_putchar('\r');
     50
     51		prom_putchar(ch);
     52	}
     53#endif
     54	va_end(args);
     55	return;
     56}