FastSemihosting.cpp File Reference
#include <string.h>
#include "DebuggerChecker.h"
#include "FastSemihosting.h"
#include "ProfilerCompatibility.h"
#include "SysprogsProfilerInterface.h"
Macros | |
#define | AngelSWI AngelSWI_ARM |
#define | FAST_SEMIHOSTING_BUFFER_SIZE 4096 |
#define | FAST_SEMIHOSTING_BLOCKING_MODE 1 |
#define | FAST_SEMIHOSTING_STDIO_DRIVER 1 |
#define | FAST_SEMIHOSTING_PROFILER_DRIVER 1 |
#define | FAST_SEMIHOSTING_HOLD_INTERRUPTS 0 |
Typedefs | |
typedef unsigned | ChannelDescriptorType |
Enumerations | |
enum | { kInitializeFastSemihosting, kControlFastSemihostingPolling } |
Functions | |
int | _isatty () |
int | _write (int fd, char *pBuffer, int size) |
void | InitializeFastSemihosting () |
Do not call directly. More... | |
int | WriteToFastSemihostingChannel (unsigned char channel, const void *pBuffer, int size, int writeAll) |
Do not call directly. Enable the Redirect printf() to fast semihosting option instead and use regular printf(). More... | |
int | __attribute ((weak)) SysprogsProfiler_WriteData(ProfilerDataChannel channel |
if (availableSpace< (headerSize+payloadSize)) result=0 | |
else | if (g_FastSemihostingCallActive) result=0 |
if (done!=(int) headerSize) asm("bkpt 255") | |
int | SysprogsProfiler_GetBufferAvailability (unsigned exp) |
void | __attribute__ ((noinline)) SuspendFastSemihostingPolling() |
void | RequestBlockingProcessingViaFastSemihosting () |
Variables | |
int | g_FastSemihostingCallActive |
int const void * | pHeader |
int const void unsigned | headerSize |
int const void unsigned const void * | pPayload |
int | result = headerSize + payloadSize |
unsigned | availableSpace = GetFastSemihostingFreeBufferSize() |
else | |
done = WriteToFastSemihostingChannel(channel, pPayload, payloadSize, 1) | |
Macro Definition Documentation
#define AngelSWI AngelSWI_ARM |
#define FAST_SEMIHOSTING_BLOCKING_MODE 1 |
#define FAST_SEMIHOSTING_BUFFER_SIZE 4096 |
#define FAST_SEMIHOSTING_HOLD_INTERRUPTS 0 |
#define FAST_SEMIHOSTING_PROFILER_DRIVER 1 |
#define FAST_SEMIHOSTING_STDIO_DRIVER 1 |
Typedef Documentation
typedef unsigned ChannelDescriptorType |
Enumeration Type Documentation
Function Documentation
int __attribute | ( | (weak) | ) |
static __attribute__ | ( | (noinline) | ) |
int _isatty | ( | ) |
int _write | ( | int | fd, |
char * | pBuffer, | ||
int | size | ||
) |
|
pure virtual |
|
pure virtual |
if | ( | done! | = (int) headerSize | ) |
void InitializeFastSemihosting | ( | ) |
Do not call directly.
Do not call this explicitly, unless you want VisualGDB to set global variables like s_FastSemihostingInitialized.
void RequestBlockingProcessingViaFastSemihosting | ( | ) |
int SysprogsProfiler_GetBufferAvailability | ( | unsigned | exp | ) |
int WriteToFastSemihostingChannel | ( | unsigned char | channel, |
const void * | pBuffer, | ||
int | size, | ||
int | writeAll | ||
) |
Do not call directly. Enable the Redirect printf() to fast semihosting option instead and use regular printf().
Variable Documentation
unsigned availableSpace = GetFastSemihostingFreeBufferSize() |
char Data[FAST_SEMIHOSTING_BUFFER_SIZE] |
done = WriteToFastSemihostingChannel(channel, pPayload, payloadSize, 1) |
else |
Initial value:
{
int WriteToFastSemihostingChannel(unsigned char channel, const void *pBuffer, int size, int writeAll)
Do not call directly. Enable the Redirect printf() to fast semihosting option instead and use regular...
Definition: FastSemihosting.cpp:187
int const void unsigned const void unsigned payloadSize int g_FastSemihostingCallActive |
int const void unsigned headerSize |
volatile unsigned LastKnownSwitchOffset |
int const void* pHeader |
int const void unsigned const void* pPayload |
volatile unsigned ReadOffset |
return result = headerSize + payloadSize |
volatile unsigned WriteOffset |