cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

semiconsole.c (639B)


      1/*
      2 * Semihosting Console Test
      3 *
      4 * Copyright (c) 2019 Linaro Ltd
      5 *
      6 * SPDX-License-Identifier: GPL-2.0-or-later
      7 */
      8
      9#include <inttypes.h>
     10#include <minilib.h>
     11
     12#define SYS_READC 0x7
     13
     14uintptr_t __semi_call(uintptr_t type, uintptr_t arg0)
     15{
     16    register uintptr_t t asm("x0") = type;
     17    register uintptr_t a0 asm("x1") = arg0;
     18    asm("hlt 0xf000"
     19        : "=r" (t)
     20        : "r" (t), "r" (a0));
     21
     22    return t;
     23}
     24
     25int main(void)
     26{
     27    char c;
     28
     29    ml_printf("Semihosting Console Test\n");
     30    ml_printf("hit X to exit:");
     31
     32    do {
     33        c = __semi_call(SYS_READC, 0);
     34        __sys_outc(c);
     35    } while (c != 'X');
     36
     37    return 0;
     38}