mirror of
git://sourceware.org/git/newlib-cygwin.git
synced 2025-02-08 18:19:08 +08:00
There is a special interface built in ARC simulators (such as nSIM) called MetaWare hostlink IO which can be used to implement system calls. This commit adds support for this interface to the ARC port of libgloss. Here is an example of using this interface: $ arc-elf32-gcc -mcpu=hs -specs=hl.specs main.c -o main $ nsimdrv -tcf $NSIM_HOME/etc/tcf/templates/hs48_full.tcf main Hello, World! Signed-off-by: Vladimir Isaev <vvisaev@gmail.com>
78 lines
2.4 KiB
C
78 lines
2.4 KiB
C
/*
|
|
* hl_api.h -- provide high-level API for Hostlink IO.
|
|
*
|
|
* Copyright (c) 2024 Synopsys Inc.
|
|
*
|
|
* The authors hereby grant permission to use, copy, modify, distribute,
|
|
* and license this software and its documentation for any purpose, provided
|
|
* that existing copyright notices are retained in all copies and that this
|
|
* notice is included verbatim in any distributions. No written agreement,
|
|
* license, or royalty fee is required for any of the authorized uses.
|
|
* Modifications to this software may be copyrighted by their authors
|
|
* and need not follow the licensing terms described here, provided that
|
|
* the new terms are clearly indicated on the first page of each file where
|
|
* they apply.
|
|
*
|
|
*/
|
|
|
|
#include <stdint.h>
|
|
#include "hl_toolchain.h"
|
|
|
|
#ifndef _HL_API_H
|
|
#define _HL_API_H
|
|
|
|
#define HL_SYSCALL_OPEN 0
|
|
#define HL_SYSCALL_CLOSE 1
|
|
#define HL_SYSCALL_READ 2
|
|
#define HL_SYSCALL_WRITE 3
|
|
#define HL_SYSCALL_LSEEK 4
|
|
#define HL_SYSCALL_UNLINK 5
|
|
#define HL_SYSCALL_ISATTY 6
|
|
#define HL_SYSCALL_TMPNAM 7
|
|
#define HL_SYSCALL_GETENV 8
|
|
#define HL_SYSCALL_CLOCK 9
|
|
#define HL_SYSCALL_TIME 10
|
|
#define HL_SYSCALL_RENAME 11
|
|
#define HL_SYSCALL_ARGC 12
|
|
#define HL_SYSCALL_ARGV 13
|
|
#define HL_SYSCALL_RETCODE 14
|
|
#define HL_SYSCALL_ACCESS 15
|
|
#define HL_SYSCALL_GETPID 16
|
|
#define HL_SYSCALL_GETCWD 17
|
|
#define HL_SYSCALL_USER 18
|
|
|
|
#define HL_GNUIO_EXT_VENDOR_ID 1025
|
|
|
|
#define HL_GNUIO_EXT_FSTAT 1
|
|
|
|
/*
|
|
* Main functions to work with regular syscalls and user-defined hostlink
|
|
* messages.
|
|
*/
|
|
volatile __uncached char *_hl_message (uint32_t syscall,
|
|
const char *format, ...);
|
|
uint32_t _user_hostlink (uint32_t vendor, uint32_t opcode,
|
|
const char *format, ...);
|
|
|
|
|
|
/* Fuctions for direct work with the Hostlink buffer. */
|
|
volatile __uncached char *_hl_pack_int (volatile __uncached char *p,
|
|
uint32_t x);
|
|
volatile __uncached char *_hl_pack_ptr (volatile __uncached char *p,
|
|
const void *s, uint16_t len);
|
|
volatile __uncached char *_hl_pack_str (volatile __uncached char *p,
|
|
const char *s);
|
|
volatile __uncached char *_hl_unpack_int (volatile __uncached char *p,
|
|
uint32_t *x);
|
|
volatile __uncached char *_hl_unpack_ptr (volatile __uncached char *p,
|
|
void *s, uint32_t *plen);
|
|
volatile __uncached char *_hl_unpack_str (volatile __uncached char *p,
|
|
char *s);
|
|
uint32_t _hl_get_ptr_len (volatile __uncached char *p);
|
|
|
|
/* Low-level functions from hl_gw. */
|
|
extern uint32_t _hl_iochunk_size (void);
|
|
extern void _hl_delete (void);
|
|
|
|
#endif /* !_HL_API_H */
|