xref: /arm-trusted-firmware/include/lib/semihosting.h (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
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