1*91f16700Schasinglulu /* 2*91f16700Schasinglulu * Copyright (c) 2013-2014, Arm Limited and Contributors. All rights reserved. 3*91f16700Schasinglulu * 4*91f16700Schasinglulu * SPDX-License-Identifier: BSD-3-Clause 5*91f16700Schasinglulu */ 6*91f16700Schasinglulu 7*91f16700Schasinglulu #ifndef SEMIHOSTING_H 8*91f16700Schasinglulu #define SEMIHOSTING_H 9*91f16700Schasinglulu 10*91f16700Schasinglulu #include <stdint.h> 11*91f16700Schasinglulu #include <stdio.h> /* For ssize_t */ 12*91f16700Schasinglulu 13*91f16700Schasinglulu 14*91f16700Schasinglulu #define SEMIHOSTING_SYS_OPEN 0x01 15*91f16700Schasinglulu #define SEMIHOSTING_SYS_CLOSE 0x02 16*91f16700Schasinglulu #define SEMIHOSTING_SYS_WRITE0 0x04 17*91f16700Schasinglulu #define SEMIHOSTING_SYS_WRITEC 0x03 18*91f16700Schasinglulu #define SEMIHOSTING_SYS_WRITE 0x05 19*91f16700Schasinglulu #define SEMIHOSTING_SYS_READ 0x06 20*91f16700Schasinglulu #define SEMIHOSTING_SYS_READC 0x07 21*91f16700Schasinglulu #define SEMIHOSTING_SYS_SEEK 0x0A 22*91f16700Schasinglulu #define SEMIHOSTING_SYS_FLEN 0x0C 23*91f16700Schasinglulu #define SEMIHOSTING_SYS_REMOVE 0x0E 24*91f16700Schasinglulu #define SEMIHOSTING_SYS_SYSTEM 0x12 25*91f16700Schasinglulu #define SEMIHOSTING_SYS_ERRNO 0x13 26*91f16700Schasinglulu #define SEMIHOSTING_SYS_EXIT 0x18 27*91f16700Schasinglulu 28*91f16700Schasinglulu #define FOPEN_MODE_R 0x0 29*91f16700Schasinglulu #define FOPEN_MODE_RB 0x1 30*91f16700Schasinglulu #define FOPEN_MODE_RPLUS 0x2 31*91f16700Schasinglulu #define FOPEN_MODE_RPLUSB 0x3 32*91f16700Schasinglulu #define FOPEN_MODE_W 0x4 33*91f16700Schasinglulu #define FOPEN_MODE_WB 0x5 34*91f16700Schasinglulu #define FOPEN_MODE_WPLUS 0x6 35*91f16700Schasinglulu #define FOPEN_MODE_WPLUSB 0x7 36*91f16700Schasinglulu #define FOPEN_MODE_A 0x8 37*91f16700Schasinglulu #define FOPEN_MODE_AB 0x9 38*91f16700Schasinglulu #define FOPEN_MODE_APLUS 0xa 39*91f16700Schasinglulu #define FOPEN_MODE_APLUSB 0xb 40*91f16700Schasinglulu 41*91f16700Schasinglulu long semihosting_connection_supported(void); 42*91f16700Schasinglulu long semihosting_file_open(const char *file_name, size_t mode); 43*91f16700Schasinglulu long semihosting_file_seek(long file_handle, ssize_t offset); 44*91f16700Schasinglulu long semihosting_file_read(long file_handle, size_t *length, uintptr_t buffer); 45*91f16700Schasinglulu long semihosting_file_write(long file_handle, 46*91f16700Schasinglulu size_t *length, 47*91f16700Schasinglulu const uintptr_t buffer); 48*91f16700Schasinglulu long semihosting_file_close(long file_handle); 49*91f16700Schasinglulu long semihosting_file_length(long file_handle); 50*91f16700Schasinglulu long semihosting_system(char *command_line); 51*91f16700Schasinglulu long semihosting_get_flen(const char *file_name); 52*91f16700Schasinglulu long semihosting_download_file(const char *file_name, 53*91f16700Schasinglulu size_t buf_size, 54*91f16700Schasinglulu uintptr_t buf); 55*91f16700Schasinglulu void semihosting_write_char(char character); 56*91f16700Schasinglulu void semihosting_write_string(char *string); 57*91f16700Schasinglulu char semihosting_read_char(void); 58*91f16700Schasinglulu void semihosting_exit(uint32_t reason, uint32_t subcode); 59*91f16700Schasinglulu 60*91f16700Schasinglulu #endif /* SEMIHOSTING_H */ 61