semihosting.h 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. /*
  2. * Copyright (c) 2013-2014, ARM Limited and Contributors. All rights reserved.
  3. *
  4. * Redistribution and use in source and binary forms, with or without
  5. * modification, are permitted provided that the following conditions are met:
  6. *
  7. * Redistributions of source code must retain the above copyright notice, this
  8. * list of conditions and the following disclaimer.
  9. *
  10. * Redistributions in binary form must reproduce the above copyright notice,
  11. * this list of conditions and the following disclaimer in the documentation
  12. * and/or other materials provided with the distribution.
  13. *
  14. * Neither the name of ARM nor the names of its contributors may be used
  15. * to endorse or promote products derived from this software without specific
  16. * prior written permission.
  17. *
  18. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  19. * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  20. * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  21. * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
  22. * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  23. * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  24. * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  25. * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  26. * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  27. * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  28. * POSSIBILITY OF SUCH DAMAGE.
  29. */
  30. #ifndef __SEMIHOSTING_H__
  31. #define __SEMIHOSTING_H__
  32. #define SEMIHOSTING_SYS_OPEN 0x01
  33. #define SEMIHOSTING_SYS_CLOSE 0x02
  34. #define SEMIHOSTING_SYS_WRITE0 0x04
  35. #define SEMIHOSTING_SYS_WRITEC 0x03
  36. #define SEMIHOSTING_SYS_WRITE 0x05
  37. #define SEMIHOSTING_SYS_READ 0x06
  38. #define SEMIHOSTING_SYS_READC 0x07
  39. #define SEMIHOSTING_SYS_SEEK 0x0A
  40. #define SEMIHOSTING_SYS_FLEN 0x0C
  41. #define SEMIHOSTING_SYS_REMOVE 0x0E
  42. #define SEMIHOSTING_SYS_SYSTEM 0x12
  43. #define SEMIHOSTING_SYS_ERRNO 0x13
  44. #define FOPEN_MODE_R 0x0
  45. #define FOPEN_MODE_RB 0x1
  46. #define FOPEN_MODE_RPLUS 0x2
  47. #define FOPEN_MODE_RPLUSB 0x3
  48. #define FOPEN_MODE_W 0x4
  49. #define FOPEN_MODE_WB 0x5
  50. #define FOPEN_MODE_WPLUS 0x6
  51. #define FOPEN_MODE_WPLUSB 0x7
  52. #define FOPEN_MODE_A 0x8
  53. #define FOPEN_MODE_AB 0x9
  54. #define FOPEN_MODE_APLUS 0xa
  55. #define FOPEN_MODE_APLUSB 0xb
  56. long semihosting_connection_supported(void);
  57. long semihosting_file_open(const char *file_name, size_t mode);
  58. long semihosting_file_seek(long file_handle, ssize_t offset);
  59. long semihosting_file_read(long file_handle, size_t *length, void *buffer);
  60. long semihosting_file_write(long file_handle,
  61. size_t *length,
  62. const void *buffer);
  63. long semihosting_file_close(long file_handle);
  64. long semihosting_file_length(long file_handle);
  65. long semihosting_system(char *command_line);
  66. long semihosting_get_flen(const char *file_name);
  67. long semihosting_download_file(const char *file_name,
  68. size_t buf_size,
  69. void *buf);
  70. void semihosting_write_char(char character);
  71. void semihosting_write_string(char *string);
  72. char semihosting_read_char(void);
  73. #endif /* __SEMIHOSTING_H__ */