mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2026-01-22 01:30:31 -05:00
Adding support for Xen for x86 (32bit and 64bit)
This commit is contained in:
parent
14b30f209f
commit
dd83fb7347
21 changed files with 6421 additions and 0 deletions
298
portable/GCC/XEN_x86/x86-64/asm_src/syscall.asm
Normal file
298
portable/GCC/XEN_x86/x86-64/asm_src/syscall.asm
Normal file
|
|
@ -0,0 +1,298 @@
|
|||
; syscall
|
||||
;
|
||||
; Copyright (C) 2025 Advanced Micro Devices, Inc. or its affiliates. All Rights Reserved.
|
||||
;
|
||||
; SPDX-License-Identifier: MIT
|
||||
;
|
||||
; Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
; this software and associated documentation files (the "Software"), to deal in
|
||||
; the Software without restriction, including without limitation the rights to
|
||||
; use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
; the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
; subject to the following conditions:
|
||||
;
|
||||
; The above copyright notice and this permission notice shall be included in all
|
||||
; copies or substantial portions of the Software.
|
||||
;
|
||||
; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
; FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
; COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
; IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
; CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
;
|
||||
|
||||
section freertos_system_calls
|
||||
%define SYSCALL_NUM_writec 0
|
||||
%define SYSCALL_NUM_xTaskGetTickCount 1
|
||||
%define SYSCALL_NUM_xTaskDelayUntil 2
|
||||
%define SYSCALL_NUM_xQueueGenericSend 3
|
||||
%define SYSCALL_NUM_xQueueReceive 4
|
||||
%define SYSCALL_NUM_xTimerGenericCommandFromTask 5
|
||||
%define SYSCALL_NUM_eTaskGetState 6
|
||||
%define SYSCALL_NUM_pcQueueGetName 7
|
||||
%define SYSCALL_NUM_pcTimerGetName 8
|
||||
%define SYSCALL_NUM_pvTimerGetTimerID 9
|
||||
%define SYSCALL_NUM_ulTaskGenericNotifyTake 10
|
||||
%define SYSCALL_NUM_ulTaskGenericNotifyValueClear 11
|
||||
%define SYSCALL_NUM_uxQueueMessagesWaiting 12
|
||||
%define SYSCALL_NUM_uxQueueSpacesAvailable 13
|
||||
%define SYSCALL_NUM_uxTaskGetNumberOfTasks 14
|
||||
%define SYSCALL_NUM_uxTaskGetSystemState 15
|
||||
%define SYSCALL_NUM_uxTaskPriorityGet 16
|
||||
%define SYSCALL_NUM_uxTimerGetReloadMode 17
|
||||
%define SYSCALL_NUM_vQueueAddToRegistry 18
|
||||
%define SYSCALL_NUM_vQueueUnregisterQueue 19
|
||||
%define SYSCALL_NUM_vTaskDelay 20
|
||||
%define SYSCALL_NUM_vTaskGetInfo 21
|
||||
%define SYSCALL_NUM_vTaskResume 22
|
||||
%define SYSCALL_NUM_vTaskSetTimeOutState 23
|
||||
%define SYSCALL_NUM_vTaskSuspend 24
|
||||
%define SYSCALL_NUM_vTaskSuspendAll 25
|
||||
%define SYSCALL_NUM_vTimerSetReloadMode 26
|
||||
%define SYSCALL_NUM_vTimerSetTimerID 27
|
||||
%define SYSCALL_NUM_xQueueAddToSet 28
|
||||
%define SYSCALL_NUM_xQueueGiveMutexRecursive 29
|
||||
%define SYSCALL_NUM_xQueuePeek 30
|
||||
%define SYSCALL_NUM_xQueueRemoveFromSet 31
|
||||
%define SYSCALL_NUM_xQueueSelectFromSet 32
|
||||
%define SYSCALL_NUM_xQueueSemaphoreTake 33
|
||||
%define SYSCALL_NUM_xQueueTakeMutexRecursive 34
|
||||
%define SYSCALL_NUM_xTaskCheckForTimeOut 35
|
||||
%define SYSCALL_NUM_xTaskGenericNotify 36
|
||||
%define SYSCALL_NUM_xTaskGenericNotifyStateClear 37
|
||||
%define SYSCALL_NUM_xTaskGenericNotifyWait 38
|
||||
%define SYSCALL_NUM_xTaskGetCurrentTaskHandle 39
|
||||
%define SYSCALL_NUM_xTaskGetSchedulerState 40
|
||||
%define SYSCALL_NUM_xTimerGetExpiryTime 41
|
||||
%define SYSCALL_NUM_xTimerGetPeriod 42
|
||||
%define SYSCALL_NUM_xTimerGetTimerDaemonTaskHandle 43
|
||||
%define SYSCALL_NUM_xTimerIsTimerActive 44
|
||||
%define SYSCALL_NUM_xTaskAbortDelay 45
|
||||
%define SYSCALL_NUM_xTaskGetHandle 46
|
||||
%define SYSCALL_NUM_xEventGroupCreate 47
|
||||
%define SYSCALL_NUM_xEventGroupWaitBits 48
|
||||
%define SYSCALL_NUM_vEventGroupDelete 49
|
||||
%define SYSCALL_NUM_xStreamBufferGenericCreate 50
|
||||
%define SYSCALL_NUM_xStreamBufferReceive 51
|
||||
%define SYSCALL_NUM_vStreamBufferDelete 52
|
||||
%define SYSCALL_NUM_xQueueGetMutexHolder 53
|
||||
%define SYSCALL_NUM_xEventGroupSync 54
|
||||
%define SYSCALL_NUM_xEventGroupSetBits 55
|
||||
%define SYSCALL_NUM_xEventGroupClearBits 56
|
||||
%define SYSCALL_NUM_xStreamBufferSend 57
|
||||
%define SYSCALL_NUM_xStreamBufferIsEmpty 58
|
||||
%define SYSCALL_NUM_xStreamBufferNextMessageLengthBytes 59
|
||||
%define SYSCALL_NUM_xStreamBufferIsFull 60
|
||||
%define SYSCALL_NUM_xStreamBufferSpacesAvailable 61
|
||||
%define SYSCALL_NUM_xStreamBufferReset 62
|
||||
%define SYSCALL_NUM_xStreamBufferBytesAvailable 64
|
||||
|
||||
|
||||
%macro SYSCALL_0 2
|
||||
global %1
|
||||
%1:
|
||||
mov eax,%2
|
||||
mov rdi,0
|
||||
mov rsi,rsp
|
||||
int 0x80
|
||||
ret
|
||||
%endmacro
|
||||
|
||||
%macro SYSCALL_1 2
|
||||
global %1
|
||||
%1:
|
||||
sub rsp,8
|
||||
mov eax, %2
|
||||
|
||||
mov [rsp],rdi
|
||||
|
||||
mov rdi,1
|
||||
mov rsi,rsp
|
||||
int 0x80
|
||||
|
||||
add rsp,8
|
||||
ret
|
||||
%endmacro
|
||||
|
||||
%macro SYSCALL_2 2
|
||||
global %1
|
||||
%1:
|
||||
sub rsp,16
|
||||
mov eax, %2
|
||||
|
||||
mov [rsp],rdi
|
||||
mov [rsp+8],rsi
|
||||
|
||||
mov rdi,2
|
||||
mov rsi,rsp
|
||||
int 0x80
|
||||
|
||||
add rsp,16
|
||||
ret
|
||||
%endmacro
|
||||
|
||||
%macro SYSCALL_3 2
|
||||
global %1
|
||||
%1:
|
||||
sub rsp,24
|
||||
mov eax, %2
|
||||
|
||||
mov [rsp],rdi
|
||||
mov [rsp+8],rsi
|
||||
mov [rsp+16],rdx
|
||||
|
||||
mov rdi,3
|
||||
mov rsi,rsp
|
||||
int 0x80
|
||||
|
||||
add rsp,24
|
||||
ret
|
||||
%endmacro
|
||||
|
||||
%macro SYSCALL_4 2
|
||||
global %1
|
||||
%1:
|
||||
sub rsp, 32
|
||||
mov eax, %2
|
||||
|
||||
mov [rsp],rdi
|
||||
mov [rsp+8],rsi
|
||||
mov [rsp+16],rdx
|
||||
mov [rsp+24],rcx
|
||||
|
||||
mov rdi,4
|
||||
mov rsi,rsp
|
||||
int 0x80
|
||||
|
||||
add rsp,32
|
||||
ret
|
||||
%endmacro
|
||||
|
||||
%macro SYSCALL_5 2
|
||||
global %1
|
||||
%1:
|
||||
sub rsp, 40
|
||||
mov eax, %2
|
||||
|
||||
mov [rsp],rdi
|
||||
mov [rsp+8],rsi
|
||||
mov [rsp+16],rdx
|
||||
mov [rsp+24],rcx
|
||||
mov [rsp+32],r8
|
||||
|
||||
mov rdi,5
|
||||
mov rsi,rsp
|
||||
int 0x80
|
||||
|
||||
add rsp,40
|
||||
ret
|
||||
%endmacro
|
||||
|
||||
%macro SYSCALL_6 2
|
||||
global %1
|
||||
%1:
|
||||
sub rsp, 48
|
||||
mov eax, %2
|
||||
|
||||
mov [rsp],rdi
|
||||
mov [rsp+8],rsi
|
||||
mov [rsp+16],rdx
|
||||
mov [rsp+24],rcx
|
||||
mov [rsp+32],r8
|
||||
mov [rsp+40],r9
|
||||
|
||||
mov rdi,6
|
||||
mov rsi,rsp
|
||||
int 0x80
|
||||
|
||||
add rsp,48
|
||||
ret
|
||||
%endmacro
|
||||
|
||||
%macro SYSCALL_7 2
|
||||
global %1
|
||||
%1:
|
||||
sub rsp, 56
|
||||
mov eax, %7
|
||||
|
||||
mov [rsp],rdi
|
||||
mov [rsp+8],rsi
|
||||
mov [rsp+16],rdx
|
||||
mov [rsp+24],rcx
|
||||
mov [rsp+32],r8
|
||||
mov [rsp+40],r9
|
||||
|
||||
mov rdi,6
|
||||
mov rsi,rsp
|
||||
int 0x80
|
||||
|
||||
add rsp,56
|
||||
ret
|
||||
%endmacro
|
||||
|
||||
SYSCALL_1 syscall_writec, SYSCALL_NUM_writec
|
||||
SYSCALL_0 syscall_xTaskGetTickCount, SYSCALL_NUM_xTaskGetTickCount
|
||||
SYSCALL_2 syscall_xTaskDelayUntil, SYSCALL_NUM_xTaskDelayUntil
|
||||
SYSCALL_4 syscall_xQueueGenericSend, SYSCALL_NUM_xQueueGenericSend
|
||||
SYSCALL_3 syscall_xQueueReceive, SYSCALL_NUM_xQueueReceive
|
||||
SYSCALL_5 syscall_xTimerGenericCommandFromTask, SYSCALL_NUM_xQueueGenericSend
|
||||
SYSCALL_1 syscall_eTaskGetState, SYSCALL_NUM_eTaskGetState
|
||||
SYSCALL_1 syscall_pcQueueGetName, SYSCALL_NUM_pcQueueGetName
|
||||
SYSCALL_1 syscall_pcTimerGetName, SYSCALL_NUM_pcTimerGetName
|
||||
SYSCALL_1 syscall_pvTimerGetTimerID, SYSCALL_NUM_pvTimerGetTimerID
|
||||
SYSCALL_3 syscall_ulTaskGenericNotifyTake, SYSCALL_NUM_ulTaskGenericNotifyTake
|
||||
SYSCALL_3 syscall_ulTaskGenericNotifyValueClear, SYSCALL_NUM_ulTaskGenericNotifyValueClear
|
||||
SYSCALL_1 syscall_uxQueueMessagesWaiting, SYSCALL_NUM_uxQueueMessagesWaiting
|
||||
SYSCALL_1 syscall_uxQueueSpacesAvailable, SYSCALL_NUM_uxQueueSpacesAvailable
|
||||
SYSCALL_0 syscall_uxTaskGetNumberOfTasks, SYSCALL_NUM_uxTaskGetNumberOfTasks
|
||||
SYSCALL_3 syscall_uxTaskGetSystemState, SYSCALL_NUM_uxTaskGetSystemState
|
||||
SYSCALL_1 syscall_uxTaskPriorityGet, SYSCALL_NUM_uxTaskPriorityGet
|
||||
SYSCALL_1 syscall_uxTimerGetReloadMode, SYSCALL_NUM_uxTimerGetReloadMode
|
||||
SYSCALL_2 syscall_vQueueAddToRegistry, SYSCALL_NUM_vQueueAddToRegistry
|
||||
SYSCALL_1 syscall_vQueueUnregisterQueue, SYSCALL_NUM_vQueueUnregisterQueue
|
||||
SYSCALL_1 syscall_vTaskDelay, SYSCALL_NUM_vTaskDelay
|
||||
SYSCALL_4 syscall_vTaskGetInfo, SYSCALL_NUM_vTaskGetInfo
|
||||
SYSCALL_1 syscall_vTaskResume, SYSCALL_NUM_vTaskResume
|
||||
SYSCALL_1 syscall_vTaskSetTimeOutState, SYSCALL_NUM_vTaskSetTimeOutState
|
||||
SYSCALL_1 syscall_vTaskSuspend, SYSCALL_NUM_vTaskSuspend
|
||||
SYSCALL_0 syscall_vTaskSuspendAll, SYSCALL_NUM_vTaskSuspendAll
|
||||
SYSCALL_2 syscall_vTimerSetReloadMode, SYSCALL_NUM_vTimerSetReloadMode
|
||||
SYSCALL_2 syscall_vTimerSetTimerID, SYSCALL_NUM_vTimerSetTimerID
|
||||
SYSCALL_2 syscall_xQueueAddToSet, SYSCALL_NUM_xQueueAddToSet
|
||||
SYSCALL_1 syscall_xQueueGiveMutexRecursive, SYSCALL_NUM_xQueueGiveMutexRecursive
|
||||
SYSCALL_3 syscall_xQueuePeek, SYSCALL_NUM_xQueuePeek
|
||||
SYSCALL_2 syscall_xQueueRemoveFromSet, SYSCALL_NUM_xQueueRemoveFromSet
|
||||
SYSCALL_2 syscall_xQueueSelectFromSet, SYSCALL_NUM_xQueueSelectFromSet
|
||||
SYSCALL_2 syscall_xQueueSemaphoreTake, SYSCALL_NUM_xQueueSemaphoreTake
|
||||
SYSCALL_2 syscall_xQueueTakeMutexRecursive, SYSCALL_NUM_xQueueTakeMutexRecursive
|
||||
SYSCALL_2 syscall_xTaskCheckForTimeOut, SYSCALL_NUM_xTaskCheckForTimeOut
|
||||
SYSCALL_5 syscall_xTaskGenericNotify, SYSCALL_NUM_xTaskGenericNotify
|
||||
SYSCALL_2 syscall_xTaskGenericNotifyStateClear, SYSCALL_NUM_xTaskGenericNotifyStateClear
|
||||
SYSCALL_5 syscall_xTaskGenericNotifyWait, SYSCALL_NUM_xTaskGenericNotifyWait
|
||||
SYSCALL_0 syscall_xTaskGetCurrentTaskHandle, SYSCALL_NUM_xTaskGetCurrentTaskHandle
|
||||
SYSCALL_0 syscall_xTaskGetSchedulerState, SYSCALL_NUM_xTaskGetSchedulerState
|
||||
SYSCALL_1 syscall_xTimerGetExpiryTime, SYSCALL_NUM_xTimerGetExpiryTime
|
||||
SYSCALL_1 syscall_xTimerGetPeriod, SYSCALL_NUM_xTimerGetPeriod
|
||||
SYSCALL_0 syscall_xTimerGetTimerDaemonTaskHandle, SYSCALL_NUM_xTimerGetTimerDaemonTaskHandle
|
||||
SYSCALL_1 syscall_xTimerIsTimerActive, SYSCALL_NUM_xTimerIsTimerActive
|
||||
SYSCALL_1 syscall_xTaskAbortDelay, SYSCALL_NUM_xTaskAbortDelay
|
||||
SYSCALL_1 syscall_xTaskGetHandle, SYSCALL_NUM_xTaskGetHandle
|
||||
SYSCALL_0 syscall_xEventGroupCreate, SYSCALL_NUM_xEventGroupCreate
|
||||
SYSCALL_5 syscall_xEventGroupWaitBits, SYSCALL_NUM_xEventGroupWaitBits
|
||||
SYSCALL_1 syscall_vEventGroupDelete, SYSCALL_NUM_vEventGroupDelete
|
||||
SYSCALL_5 syscall_xStreamBufferGenericCreate, SYSCALL_NUM_xStreamBufferGenericCreate
|
||||
SYSCALL_4 syscall_xStreamBufferReceive, SYSCALL_NUM_xStreamBufferReceive
|
||||
SYSCALL_1 syscall_vStreamBufferDelete, SYSCALL_NUM_vStreamBufferDelete
|
||||
SYSCALL_1 syscall_xQueueGetMutexHolder, SYSCALL_NUM_xQueueGetMutexHolder
|
||||
SYSCALL_4 syscall_xEventGroupSync, SYSCALL_NUM_xEventGroupSync
|
||||
SYSCALL_2 syscall_xEventGroupSetBits, SYSCALL_NUM_xEventGroupSetBits
|
||||
SYSCALL_2 syscall_xEventGroupClearBits, SYSCALL_NUM_xEventGroupClearBits
|
||||
SYSCALL_2 syscall_xStreamBufferSend, SYSCALL_NUM_xStreamBufferSend
|
||||
SYSCALL_1 syscall_xStreamBufferIsEmpty, SYSCALL_NUM_xStreamBufferIsEmpty
|
||||
SYSCALL_1 syscall_xStreamBufferNextMessageLengthBytes, SYSCALL_NUM_xStreamBufferNextMessageLengthBytes
|
||||
SYSCALL_1 syscall_xStreamBufferIsFull, SYSCALL_NUM_xStreamBufferIsFull
|
||||
SYSCALL_1 syscall_xStreamBufferSpacesAvailable, SYSCALL_NUM_xStreamBufferSpacesAvailable
|
||||
SYSCALL_1 syscall_xStreamBufferReset, SYSCALL_NUM_xStreamBufferReset
|
||||
SYSCALL_1 syscall_xStreamBufferBytesAvailable, SYSCALL_NUM_xStreamBufferBytesAvailable
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue