blob: 24b030cfddf885db709ea2c07f13c57d258d9fd2 [file] [log] [blame]
Achin Gupta4f6ad662013-10-25 09:08:21 +01001/*
Dan Handleye83b0ca2014-01-14 18:17:09 +00002 * Copyright (c) 2013-2014, ARM Limited and Contributors. All rights reserved.
Achin Gupta4f6ad662013-10-25 09:08:21 +01003 *
dp-armfa3cf0b2017-05-03 09:38:09 +01004 * SPDX-License-Identifier: BSD-3-Clause
Achin Gupta4f6ad662013-10-25 09:08:21 +01005 */
6
Antonio Nino Diaz5eb88372018-11-08 10:20:19 +00007#ifndef SEMIHOSTING_H
8#define SEMIHOSTING_H
Achin Gupta4f6ad662013-10-25 09:08:21 +01009
Dan Handleya4cb68e2014-04-23 13:47:06 +010010#include <stdint.h>
Dan Handley2bd4ef22014-04-09 13:14:54 +010011#include <stdio.h> /* For ssize_t */
12
13
Achin Gupta4f6ad662013-10-25 09:08:21 +010014#define SEMIHOSTING_SYS_OPEN 0x01
15#define SEMIHOSTING_SYS_CLOSE 0x02
16#define SEMIHOSTING_SYS_WRITE0 0x04
17#define SEMIHOSTING_SYS_WRITEC 0x03
18#define SEMIHOSTING_SYS_WRITE 0x05
19#define SEMIHOSTING_SYS_READ 0x06
20#define SEMIHOSTING_SYS_READC 0x07
21#define SEMIHOSTING_SYS_SEEK 0x0A
22#define SEMIHOSTING_SYS_FLEN 0x0C
23#define SEMIHOSTING_SYS_REMOVE 0x0E
24#define SEMIHOSTING_SYS_SYSTEM 0x12
25#define SEMIHOSTING_SYS_ERRNO 0x13
Andrew Walbranf3a68392020-01-15 14:18:04 +000026#define SEMIHOSTING_SYS_EXIT 0x18
Achin Gupta4f6ad662013-10-25 09:08:21 +010027
28#define FOPEN_MODE_R 0x0
29#define FOPEN_MODE_RB 0x1
30#define FOPEN_MODE_RPLUS 0x2
31#define FOPEN_MODE_RPLUSB 0x3
32#define FOPEN_MODE_W 0x4
33#define FOPEN_MODE_WB 0x5
34#define FOPEN_MODE_WPLUS 0x6
35#define FOPEN_MODE_WPLUSB 0x7
36#define FOPEN_MODE_A 0x8
37#define FOPEN_MODE_AB 0x9
38#define FOPEN_MODE_APLUS 0xa
39#define FOPEN_MODE_APLUSB 0xb
40
Ryan Harkincd529322014-02-10 17:17:04 +000041long semihosting_connection_supported(void);
42long semihosting_file_open(const char *file_name, size_t mode);
43long semihosting_file_seek(long file_handle, ssize_t offset);
Dan Handleya4cb68e2014-04-23 13:47:06 +010044long semihosting_file_read(long file_handle, size_t *length, uintptr_t buffer);
Ryan Harkincd529322014-02-10 17:17:04 +000045long semihosting_file_write(long file_handle,
46 size_t *length,
Dan Handleya4cb68e2014-04-23 13:47:06 +010047 const uintptr_t buffer);
Ryan Harkincd529322014-02-10 17:17:04 +000048long semihosting_file_close(long file_handle);
49long semihosting_file_length(long file_handle);
50long semihosting_system(char *command_line);
51long semihosting_get_flen(const char *file_name);
52long semihosting_download_file(const char *file_name,
53 size_t buf_size,
Dan Handleya4cb68e2014-04-23 13:47:06 +010054 uintptr_t buf);
Achin Gupta4f6ad662013-10-25 09:08:21 +010055void semihosting_write_char(char character);
56void semihosting_write_string(char *string);
57char semihosting_read_char(void);
Andrew Walbranf3a68392020-01-15 14:18:04 +000058void semihosting_exit(uint32_t reason, uint32_t subcode);
Achin Gupta4f6ad662013-10-25 09:08:21 +010059
Antonio Nino Diaz5eb88372018-11-08 10:20:19 +000060#endif /* SEMIHOSTING_H */