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

early_printk.c (685B)


      1// SPDX-License-Identifier: GPL-2.0-only
      2/*
      3 *
      4 *  Copyright (C) 2010 John Crispin <john@phrozen.org>
      5 */
      6
      7#include <linux/cpu.h>
      8#include <lantiq_soc.h>
      9#include <asm/setup.h>
     10
     11#define ASC_BUF		1024
     12#define LTQ_ASC_FSTAT	((u32 *)(LTQ_EARLY_ASC + 0x0048))
     13#ifdef __BIG_ENDIAN
     14#define LTQ_ASC_TBUF	((u32 *)(LTQ_EARLY_ASC + 0x0020 + 3))
     15#else
     16#define LTQ_ASC_TBUF	((u32 *)(LTQ_EARLY_ASC + 0x0020))
     17#endif
     18#define TXMASK		0x3F00
     19#define TXOFFSET	8
     20
     21void prom_putchar(char c)
     22{
     23	unsigned long flags;
     24
     25	local_irq_save(flags);
     26	do { } while ((ltq_r32(LTQ_ASC_FSTAT) & TXMASK) >> TXOFFSET);
     27	if (c == '\n')
     28		ltq_w8('\r', LTQ_ASC_TBUF);
     29	ltq_w8(c, LTQ_ASC_TBUF);
     30	local_irq_restore(flags);
     31}