mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-04 04:02:26 +00:00
6a8eb99e13
Add GDBIO implementation for the xtensa semihosting interface. It offers less functions than the simcall interface, so make some semihosting functions optional and return error when implementation is not available. Add Kconfig menu to select semihosting implementation and add simcall and GDBIO choices there. Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
35 lines
738 B
C
35 lines
738 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/* Copyright (C) 2021 Cadence Design Systems Inc. */
|
|
|
|
#ifndef _XTENSA_PLATFORM_ISS_SIMCALL_GDBIO_H
|
|
#define _XTENSA_PLATFORM_ISS_SIMCALL_GDBIO_H
|
|
|
|
/*
|
|
* System call like services offered by the GDBIO host.
|
|
*/
|
|
|
|
#define SYS_open -2
|
|
#define SYS_close -3
|
|
#define SYS_read -4
|
|
#define SYS_write -5
|
|
#define SYS_lseek -6
|
|
|
|
static int errno;
|
|
|
|
static inline int __simc(int a, int b, int c, int d)
|
|
{
|
|
register int a1 asm("a2") = a;
|
|
register int b1 asm("a6") = b;
|
|
register int c1 asm("a3") = c;
|
|
register int d1 asm("a4") = d;
|
|
__asm__ __volatile__ (
|
|
"break 1, 14\n"
|
|
: "+r"(a1), "+r"(c1)
|
|
: "r"(b1), "r"(d1)
|
|
: "memory");
|
|
errno = c1;
|
|
return a1;
|
|
}
|
|
|
|
#endif /* _XTENSA_PLATFORM_ISS_SIMCALL_GDBIO_H */
|