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