| /** @file | |
| Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR> | |
| Portions copyright (c) 2011, 2012, ARM Ltd. All rights reserved.<BR> | |
| This program and the accompanying materials | |
| are licensed and made available under the terms and conditions of the BSD License | |
| which accompanies this distribution. The full text of the license may be found at | |
| http://opensource.org/licenses/bsd-license.php | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
| **/ | |
| #ifndef __SEMIHOSTING_H__ | |
| #define __SEMIHOSTING_H__ | |
| /* | |
| * | |
| * Please refer to ARM RVDS 3.0 Compiler and Libraries Guide for more information | |
| * about the semihosting interface. | |
| * | |
| */ | |
| #define SEMIHOST_FILE_MODE_READ (0 << 2) | |
| #define SEMIHOST_FILE_MODE_WRITE (1 << 2) | |
| #define SEMIHOST_FILE_MODE_APPEND (2 << 2) | |
| #define SEMIHOST_FILE_MODE_UPDATE (1 << 1) | |
| #define SEMIHOST_FILE_MODE_BINARY (1 << 0) | |
| #define SEMIHOST_FILE_MODE_ASCII (0 << 0) | |
| BOOLEAN | |
| SemihostConnectionSupported ( | |
| VOID | |
| ); | |
| RETURN_STATUS | |
| SemihostFileOpen ( | |
| IN CHAR8 *FileName, | |
| IN UINT32 Mode, | |
| OUT UINTN *FileHandle | |
| ); | |
| RETURN_STATUS | |
| SemihostFileSeek ( | |
| IN UINTN FileHandle, | |
| IN UINTN Offset | |
| ); | |
| RETURN_STATUS | |
| SemihostFileRead ( | |
| IN UINTN FileHandle, | |
| IN OUT UINTN *Length, | |
| OUT VOID *Buffer | |
| ); | |
| RETURN_STATUS | |
| SemihostFileWrite ( | |
| IN UINTN FileHandle, | |
| IN OUT UINTN *Length, | |
| IN VOID *Buffer | |
| ); | |
| RETURN_STATUS | |
| SemihostFileClose ( | |
| IN UINTN FileHandle | |
| ); | |
| RETURN_STATUS | |
| SemihostFileLength ( | |
| IN UINTN FileHandle, | |
| OUT UINTN *Length | |
| ); | |
| /** | |
| Get a temporary name for a file from the host running the debug agent. | |
| @param[out] Buffer Pointer to the buffer where the temporary name has to | |
| be stored | |
| @param[in] Identifier File name identifier (integer in the range 0 to 255) | |
| @param[in] Length Length of the buffer to store the temporary name | |
| @retval RETURN_SUCCESS Temporary name returned | |
| @retval RETURN_INVALID_PARAMETER Invalid buffer address | |
| @retval RETURN_ABORTED Temporary name not returned | |
| **/ | |
| RETURN_STATUS | |
| SemihostFileTmpName( | |
| OUT VOID *Buffer, | |
| IN UINT8 Identifier, | |
| IN UINTN Length | |
| ); | |
| RETURN_STATUS | |
| SemihostFileRemove ( | |
| IN CHAR8 *FileName | |
| ); | |
| /** | |
| Rename a specified file. | |
| @param[in] FileName Name of the file to rename. | |
| @param[in] NewFileName The new name of the file. | |
| @retval RETURN_SUCCESS File Renamed | |
| @retval RETURN_INVALID_PARAMETER Either the current or the new name is not specified | |
| @retval RETURN_ABORTED Rename failed | |
| **/ | |
| RETURN_STATUS | |
| SemihostFileRename( | |
| IN CHAR8 *FileName, | |
| IN CHAR8 *NewFileName | |
| ); | |
| CHAR8 | |
| SemihostReadCharacter ( | |
| VOID | |
| ); | |
| VOID | |
| SemihostWriteCharacter ( | |
| IN CHAR8 Character | |
| ); | |
| VOID | |
| SemihostWriteString ( | |
| IN CHAR8 *String | |
| ); | |
| UINT32 | |
| SemihostSystem ( | |
| IN CHAR8 *CommandLine | |
| ); | |
| #endif // __SEMIHOSTING_H__ |