Skip to content

Commit 89f4e72

Browse files
committed
kernel/freertos: add support for Xen
- portable/portASM.s: add linux zImage kernel header for Xen - dpl/common: print to Xen/PV console when Xen is enabled Signed-off-by: Amneesh Singh <[email protected]>
1 parent 77581d9 commit 89f4e72

File tree

2 files changed

+32
-0
lines changed

2 files changed

+32
-0
lines changed

source/kernel/freertos/dpl/common/DebugP_freertos.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@
3434
#include <kernel/dpl/SemaphoreP.h>
3535
#include <kernel/dpl/HwiP.h>
3636
#include <kernel/nortos/dpl/common/printf.h>
37+
#ifdef XEN_ENABLED
38+
#include <drivers/xen/xen_console.h>
39+
#else
3740

3841
int32_t _DebugP_log(char *format, ...);
3942
extern uint32_t gDebugLogZone;
@@ -62,7 +65,11 @@ void _DebugP_logZone(uint32_t logZone, char *format, ...)
6265

6366
SemaphoreP_pend(&gDebugLogLockObj, SystemP_WAIT_FOREVER);
6467
va_start(va, format);
68+
#ifdef XEN_ENABLED
69+
Xen_printk(format, va);
70+
#else
6571
vprintf_(format, va);
72+
#endif
6673
va_end(va);
6774
SemaphoreP_post(&gDebugLogLockObj);
6875
}
@@ -89,7 +96,11 @@ int32_t _DebugP_log(char *format, ...)
8996

9097
SemaphoreP_pend(&gDebugLogLockObj, SystemP_WAIT_FOREVER);
9198
va_start(va, format);
99+
#ifdef XEN_ENABLED
100+
Xen_printk(format, va);
101+
#else
92102
vprintf_(format, va);
103+
#endif
93104
va_end(va);
94105
SemaphoreP_post(&gDebugLogLockObj);
95106
}

source/kernel/freertos/portable/GCC/ARM_CA53/portASM.S

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@
6868
.extern ullCriticalNesting
6969
.extern ullPortYieldRequired
7070

71+
.global gnu_targets_arm_rtsv8A_startupAsm
72+
7173
.global HwiP_IRQ_Handler
7274
.global HwiP_SVC_Handler
7375
.global vPortRestoreTaskContext
@@ -281,6 +283,25 @@
281283
.align 11
282284
HwiP_gicv3Vectors:
283285

286+
#ifdef XEN_ENABLED
287+
/* Xen requires the 64 bit linux kernel header */
288+
289+
ldr x16, =gnu_targets_arm_rtsv8A_startupAsm /* Executable code */
290+
br x16 /* Executable code */
291+
292+
.dword 0 /* Image load offset, little endian */
293+
.dword 0 /* Effective Image size, little endian */
294+
.dword 8 /* kernel flags, little endian */
295+
296+
.dword 0 /* reserved */
297+
.dword 0 /* resrerved */
298+
.dword 0 /* reserved */
299+
300+
.dword 0x644d5241 /* Magic number, little endian, "ARM\x64" */
301+
.dword 0 /* reserved (used for PE COFF offset) */
302+
303+
#endif
304+
284305
/*
285306
*************************************************************************
286307
* Exception from currentEL, using SP0

0 commit comments

Comments
 (0)