mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-04-19 21:11:57 -04:00
Compare commits
21 commits
Author | SHA1 | Date | |
---|---|---|---|
|
18ed8886fe | ||
|
650025f227 | ||
|
ef7b253b56 | ||
|
a86ae9b06e | ||
|
dfa52a70c5 | ||
|
2f66e475fa | ||
|
6b7d4cf41b | ||
|
9bfd85a253 | ||
|
52c1c6e578 | ||
|
d9fc48bced | ||
|
7003ba73ed | ||
|
0264280230 | ||
|
ab6744c08c | ||
|
c5edc980c5 | ||
|
76a4a16800 | ||
|
5678e7a27c | ||
|
ace6b39fa0 | ||
|
0d871946ab | ||
|
fe005419f0 | ||
|
aec827831a | ||
|
81a2a656d1 |
1
.github/lexicon.txt
vendored
1
.github/lexicon.txt
vendored
|
@ -2469,6 +2469,7 @@ uxpriority
|
||||||
uxprioritytouse
|
uxprioritytouse
|
||||||
uxqueue
|
uxqueue
|
||||||
uxqueuegetqueueitemsize
|
uxqueuegetqueueitemsize
|
||||||
|
uxqueuegetqueuelength
|
||||||
uxqueuelength
|
uxqueuelength
|
||||||
uxqueuemessageswaiting
|
uxqueuemessageswaiting
|
||||||
uxqueuespacesavailable
|
uxqueuespacesavailable
|
||||||
|
|
4
.github/scripts/kernel_checker.py
vendored
4
.github/scripts/kernel_checker.py
vendored
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
#/*
|
#/*
|
||||||
# * FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
# * FreeRTOS Kernel V10.6.2
|
||||||
# * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
# * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
# *
|
# *
|
||||||
# * SPDX-License-Identifier: MIT
|
# * SPDX-License-Identifier: MIT
|
||||||
|
@ -99,7 +99,7 @@ KERNEL_THIRD_PARTY_PATTERNS = [
|
||||||
|
|
||||||
KERNEL_HEADER = [
|
KERNEL_HEADER = [
|
||||||
'/*\n',
|
'/*\n',
|
||||||
' * FreeRTOS Kernel <DEVELOPMENT BRANCH>\n',
|
' * FreeRTOS Kernel V10.6.2\n',
|
||||||
' * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n',
|
' * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.\n',
|
||||||
' *\n',
|
' *\n',
|
||||||
' * SPDX-License-Identifier: MIT\n',
|
' * SPDX-License-Identifier: MIT\n',
|
||||||
|
|
32
.github/scripts/manifest_updater.py
vendored
Executable file
32
.github/scripts/manifest_updater.py
vendored
Executable file
|
@ -0,0 +1,32 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
import os
|
||||||
|
import argparse
|
||||||
|
|
||||||
|
THIS_FILE_PATH = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
MANIFEST_FILE = os.path.join(THIS_FILE_PATH, '..', '..', 'manifest.yml')
|
||||||
|
|
||||||
|
def update_manifest_file(new_version_number):
|
||||||
|
updated_lines = []
|
||||||
|
with open(MANIFEST_FILE, 'r') as f:
|
||||||
|
for line in f:
|
||||||
|
line = line.strip()
|
||||||
|
if line.startswith('version'):
|
||||||
|
updated_lines.append(f'version: "v{new_version_number}"\n')
|
||||||
|
else:
|
||||||
|
updated_lines.append(f'{line}\n')
|
||||||
|
|
||||||
|
with open(MANIFEST_FILE, 'w') as f:
|
||||||
|
f.writelines(updated_lines)
|
||||||
|
|
||||||
|
def parse_args():
|
||||||
|
parser = argparse.ArgumentParser()
|
||||||
|
parser.add_argument('-v', '--version', required=True, help='New version number.')
|
||||||
|
args = parser.parse_args()
|
||||||
|
return args
|
||||||
|
|
||||||
|
def main():
|
||||||
|
args = parse_args()
|
||||||
|
update_manifest_file(args.version)
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
17
.github/workflows/auto-release.yml
vendored
17
.github/workflows/auto-release.yml
vendored
|
@ -63,6 +63,19 @@ jobs:
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name : Update version number in manifest.yml
|
||||||
|
working-directory: ./local_kernel
|
||||||
|
run: |
|
||||||
|
./.github/scripts/manifest_updater.py -v ${{ github.event.inputs.version_number }}
|
||||||
|
exit $?
|
||||||
|
|
||||||
|
- name : Commit version number change in manifest.yml
|
||||||
|
working-directory: ./local_kernel
|
||||||
|
run: |
|
||||||
|
git add .
|
||||||
|
git commit -m '[AUTO][RELEASE]: Update version number in manifest.yml'
|
||||||
|
git push -u origin ${{ github.event.inputs.version_number }}
|
||||||
|
|
||||||
- name: Generate SBOM
|
- name: Generate SBOM
|
||||||
uses: FreeRTOS/CI-CD-Github-Actions/sbom-generator@main
|
uses: FreeRTOS/CI-CD-Github-Actions/sbom-generator@main
|
||||||
with:
|
with:
|
||||||
|
@ -73,7 +86,7 @@ jobs:
|
||||||
working-directory: ./local_kernel
|
working-directory: ./local_kernel
|
||||||
run: |
|
run: |
|
||||||
git add .
|
git add .
|
||||||
git commit -m 'Update SBOM'
|
git commit -m '[AUTO][RELEASE]: Update SBOM'
|
||||||
git push -u origin ${{ github.event.inputs.version_number }}
|
git push -u origin ${{ github.event.inputs.version_number }}
|
||||||
echo "COMMIT_SHA_2=$(git rev-parse HEAD)" >> $GITHUB_ENV
|
echo "COMMIT_SHA_2=$(git rev-parse HEAD)" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
@ -81,7 +94,7 @@ jobs:
|
||||||
run: |
|
run: |
|
||||||
# Install deps and run
|
# Install deps and run
|
||||||
pip install -r ./tools/.github/scripts/release-requirements.txt
|
pip install -r ./tools/.github/scripts/release-requirements.txt
|
||||||
./tools/.github/scripts/release.py FreeRTOS --kernel-repo-path=local_kernel --kernel-commit=${{ env.COMMIT_SHA_2 }} --new-kernel-version=${{ github.event.inputs.version_number }} --new-kernel-main-br-version=${{ github.event.inputs.main_br_version }}
|
./tools/.github/scripts/release.py ${{ github.repository_owner }} --kernel-repo-path=local_kernel --kernel-commit=${{ env.COMMIT_SHA_2 }} --new-kernel-version=${{ github.event.inputs.version_number }} --new-kernel-main-br-version=${{ github.event.inputs.main_br_version }}
|
||||||
exit $?
|
exit $?
|
||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
31
.github/workflows/kernel-demos.yml
vendored
31
.github/workflows/kernel-demos.yml
vendored
|
@ -123,9 +123,22 @@ jobs:
|
||||||
with:
|
with:
|
||||||
ref: main
|
ref: main
|
||||||
repository: FreeRTOS/FreeRTOS
|
repository: FreeRTOS/FreeRTOS
|
||||||
submodules: 'recursive'
|
|
||||||
fetch-depth: 1
|
fetch-depth: 1
|
||||||
|
|
||||||
|
- name: Fetch Community-Supported-Demos Submodule
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
# Fetch Community-Supported-Demos Submodule
|
||||||
|
echo "::group::Fetch Community-Supported-Demos Submodule"
|
||||||
|
git submodule update --checkout --init --depth 1 FreeRTOS/Demo/ThirdParty/Community-Supported-Demos
|
||||||
|
echo "::engdroup::"
|
||||||
|
if [ "$?" = "0" ]; then
|
||||||
|
echo -e "\033[32;3mCloned the Community-Supported-Demos\033[0m"
|
||||||
|
else
|
||||||
|
echo -e "\033[32;31mCommunity-Supported-Demos Clone Failed...\033[0m"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
# Checkout user pull request changes
|
# Checkout user pull request changes
|
||||||
- name: Checkout Pull Request
|
- name: Checkout Pull Request
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
@ -148,20 +161,6 @@ jobs:
|
||||||
working-directory: FreeRTOS/Demo/CORTEX_LM3S102_GCC
|
working-directory: FreeRTOS/Demo/CORTEX_LM3S102_GCC
|
||||||
run: make -j
|
run: make -j
|
||||||
|
|
||||||
- name: Build CORTEX_M3_MPS2_QEMU_GCC Demo
|
|
||||||
shell: bash
|
|
||||||
working-directory: FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC
|
|
||||||
run: |
|
|
||||||
make clean
|
|
||||||
make -j
|
|
||||||
|
|
||||||
- name: Build CORTEX_M3_MPS2_QEMU_GCC Demo
|
|
||||||
shell: bash
|
|
||||||
working-directory: FreeRTOS/Demo/CORTEX_M3_MPS2_QEMU_GCC
|
|
||||||
run: |
|
|
||||||
make clean
|
|
||||||
make FULL_DEMO=1 -j
|
|
||||||
|
|
||||||
- name: Build CORTEX_LM3S811_GCC Demo
|
- name: Build CORTEX_LM3S811_GCC Demo
|
||||||
shell: bash
|
shell: bash
|
||||||
working-directory: FreeRTOS/Demo/CORTEX_LM3S811_GCC
|
working-directory: FreeRTOS/Demo/CORTEX_LM3S811_GCC
|
||||||
|
@ -169,7 +168,7 @@ jobs:
|
||||||
|
|
||||||
- name: Build CORTEX_M0+_RP2040 Demos
|
- name: Build CORTEX_M0+_RP2040 Demos
|
||||||
shell: bash
|
shell: bash
|
||||||
working-directory: FreeRTOS/Demo/ThirdParty/Community-Supported/CORTEX_M0+_RP2040
|
working-directory: FreeRTOS/Demo/ThirdParty/Community-Supported-Demos/CORTEX_M0+_RP2040
|
||||||
run: |
|
run: |
|
||||||
git clone https://github.com/raspberrypi/pico-sdk.git
|
git clone https://github.com/raspberrypi/pico-sdk.git
|
||||||
cmake -B build -DPICO_SDK_PATH=pico-sdk -GNinja
|
cmake -B build -DPICO_SDK_PATH=pico-sdk -GNinja
|
||||||
|
|
2
.github/workflows/unit-tests.yml
vendored
2
.github/workflows/unit-tests.yml
vendored
|
@ -8,7 +8,7 @@ jobs:
|
||||||
- name: Checkout Parent Repository
|
- name: Checkout Parent Repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
with:
|
with:
|
||||||
ref: main
|
ref: 80db00d98bfac8b22289a2668d9e6b0265946d24
|
||||||
repository: FreeRTOS/FreeRTOS
|
repository: FreeRTOS/FreeRTOS
|
||||||
submodules: 'recursive'
|
submodules: 'recursive'
|
||||||
fetch-depth: 1
|
fetch-depth: 1
|
||||||
|
|
28
History.txt
28
History.txt
|
@ -1,6 +1,32 @@
|
||||||
Documentation and download available at https://www.FreeRTOS.org/
|
Documentation and download available at https://www.FreeRTOS.org/
|
||||||
|
|
||||||
Changes between FreeRTOS V10.5.1 and FreeRTOS 10.6.0 released July 13, 2023
|
Changes between FreeRTOS V10.6.1 and FreeRTOS V10.6.2 released November 29, 2023
|
||||||
|
|
||||||
|
+ Add the following improvements to the new MPU wrapper (mpu_wrappers_v2.c)
|
||||||
|
introduced in version 10.6.0:
|
||||||
|
- Introduce Access Control List (ACL) feature to allow the application
|
||||||
|
writer to control an unprivileged task’s access to kernel objects.
|
||||||
|
- Update the system call entry mechanism to only require one Supervisor
|
||||||
|
Call (SVC) instruction.
|
||||||
|
- Wrap parameters for system calls with more than four parameters in a
|
||||||
|
struct to avoid special handling during system call entry.
|
||||||
|
- Fix 2 possible integer overflows.
|
||||||
|
- Convert some asserts to run time parameter checks.
|
||||||
|
|
||||||
|
Changes between FreeRTOS V10.6.0 and FreeRTOS V10.6.1 released August 17, 2023
|
||||||
|
|
||||||
|
+ Add runtime parameter checks to functions in mpu_wrappers_v2.c file.
|
||||||
|
The same checks are already performed in API implementations using
|
||||||
|
asserts.
|
||||||
|
We thank the following people for their inputs in these changes:
|
||||||
|
- Lan Luo, Zixia Liu of School of Computer Science and Technology,
|
||||||
|
Anhui University of Technology, China.
|
||||||
|
- Xinwen Fu of Department of Computer Science, University of
|
||||||
|
Massachusetts Lowell, USA.
|
||||||
|
- Xinhui Shao, Yumeng Wei, Huaiyu Yan, Zhen Ling of School of
|
||||||
|
Computer Science and Engineering, Southeast University, China.
|
||||||
|
|
||||||
|
Changes between FreeRTOS V10.5.1 and FreeRTOS V10.6.0 released July 13, 2023
|
||||||
|
|
||||||
+ Add a new MPU wrapper that places additional restrictions on unprivileged
|
+ Add a new MPU wrapper that places additional restrictions on unprivileged
|
||||||
tasks. The following is the list of changes introduced with the new MPU
|
tasks. The following is the list of changes introduced with the new MPU
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
@ -46,26 +46,6 @@
|
||||||
* correct privileged Vs unprivileged linkage and placement. */
|
* correct privileged Vs unprivileged linkage and placement. */
|
||||||
#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE /*lint !e961 !e750 !e9021 See comment above. */
|
#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE /*lint !e961 !e750 !e9021 See comment above. */
|
||||||
|
|
||||||
/* The following bit fields convey control information in a task's event list
|
|
||||||
* item value. It is important they don't clash with the
|
|
||||||
* taskEVENT_LIST_ITEM_VALUE_IN_USE definition. */
|
|
||||||
#if ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_16_BITS )
|
|
||||||
#define eventCLEAR_EVENTS_ON_EXIT_BIT 0x0100U
|
|
||||||
#define eventUNBLOCKED_DUE_TO_BIT_SET 0x0200U
|
|
||||||
#define eventWAIT_FOR_ALL_BITS 0x0400U
|
|
||||||
#define eventEVENT_BITS_CONTROL_BYTES 0xff00U
|
|
||||||
#elif ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_32_BITS )
|
|
||||||
#define eventCLEAR_EVENTS_ON_EXIT_BIT 0x01000000UL
|
|
||||||
#define eventUNBLOCKED_DUE_TO_BIT_SET 0x02000000UL
|
|
||||||
#define eventWAIT_FOR_ALL_BITS 0x04000000UL
|
|
||||||
#define eventEVENT_BITS_CONTROL_BYTES 0xff000000UL
|
|
||||||
#elif ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_64_BITS )
|
|
||||||
#define eventCLEAR_EVENTS_ON_EXIT_BIT 0x0100000000000000ULL
|
|
||||||
#define eventUNBLOCKED_DUE_TO_BIT_SET 0x0200000000000000ULL
|
|
||||||
#define eventWAIT_FOR_ALL_BITS 0x0400000000000000ULL
|
|
||||||
#define eventEVENT_BITS_CONTROL_BYTES 0xff00000000000000ULL
|
|
||||||
#endif /* if ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_16_BITS ) */
|
|
||||||
|
|
||||||
typedef struct EventGroupDef_t
|
typedef struct EventGroupDef_t
|
||||||
{
|
{
|
||||||
EventBits_t uxEventBits;
|
EventBits_t uxEventBits;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
@ -86,6 +86,11 @@
|
||||||
#define configUSE_MPU_WRAPPERS_V1 0
|
#define configUSE_MPU_WRAPPERS_V1 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* Set configENABLE_ACCESS_CONTROL_LIST to 1 to enable access control list support. */
|
||||||
|
#ifndef configENABLE_ACCESS_CONTROL_LIST
|
||||||
|
#define configENABLE_ACCESS_CONTROL_LIST 0
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Basic FreeRTOS definitions. */
|
/* Basic FreeRTOS definitions. */
|
||||||
#include "projdefs.h"
|
#include "projdefs.h"
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
@ -36,6 +36,26 @@
|
||||||
/* FreeRTOS includes. */
|
/* FreeRTOS includes. */
|
||||||
#include "timers.h"
|
#include "timers.h"
|
||||||
|
|
||||||
|
/* The following bit fields convey control information in a task's event list
|
||||||
|
* item value. It is important they don't clash with the
|
||||||
|
* taskEVENT_LIST_ITEM_VALUE_IN_USE definition. */
|
||||||
|
#if ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_16_BITS )
|
||||||
|
#define eventCLEAR_EVENTS_ON_EXIT_BIT 0x0100U
|
||||||
|
#define eventUNBLOCKED_DUE_TO_BIT_SET 0x0200U
|
||||||
|
#define eventWAIT_FOR_ALL_BITS 0x0400U
|
||||||
|
#define eventEVENT_BITS_CONTROL_BYTES 0xff00U
|
||||||
|
#elif ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_32_BITS )
|
||||||
|
#define eventCLEAR_EVENTS_ON_EXIT_BIT 0x01000000UL
|
||||||
|
#define eventUNBLOCKED_DUE_TO_BIT_SET 0x02000000UL
|
||||||
|
#define eventWAIT_FOR_ALL_BITS 0x04000000UL
|
||||||
|
#define eventEVENT_BITS_CONTROL_BYTES 0xff000000UL
|
||||||
|
#elif ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_64_BITS )
|
||||||
|
#define eventCLEAR_EVENTS_ON_EXIT_BIT 0x0100000000000000ULL
|
||||||
|
#define eventUNBLOCKED_DUE_TO_BIT_SET 0x0200000000000000ULL
|
||||||
|
#define eventWAIT_FOR_ALL_BITS 0x0400000000000000ULL
|
||||||
|
#define eventEVENT_BITS_CONTROL_BYTES 0xff00000000000000ULL
|
||||||
|
#endif /* if ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_16_BITS ) */
|
||||||
|
|
||||||
/* *INDENT-OFF* */
|
/* *INDENT-OFF* */
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
@ -38,6 +38,42 @@
|
||||||
#ifndef MPU_PROTOTYPES_H
|
#ifndef MPU_PROTOTYPES_H
|
||||||
#define MPU_PROTOTYPES_H
|
#define MPU_PROTOTYPES_H
|
||||||
|
|
||||||
|
typedef struct xTaskGenericNotifyParams
|
||||||
|
{
|
||||||
|
TaskHandle_t xTaskToNotify;
|
||||||
|
UBaseType_t uxIndexToNotify;
|
||||||
|
uint32_t ulValue;
|
||||||
|
eNotifyAction eAction;
|
||||||
|
uint32_t * pulPreviousNotificationValue;
|
||||||
|
} xTaskGenericNotifyParams_t;
|
||||||
|
|
||||||
|
typedef struct xTaskGenericNotifyWaitParams
|
||||||
|
{
|
||||||
|
UBaseType_t uxIndexToWaitOn;
|
||||||
|
uint32_t ulBitsToClearOnEntry;
|
||||||
|
uint32_t ulBitsToClearOnExit;
|
||||||
|
uint32_t * pulNotificationValue;
|
||||||
|
TickType_t xTicksToWait;
|
||||||
|
} xTaskGenericNotifyWaitParams_t;
|
||||||
|
|
||||||
|
typedef struct xTimerGenericCommandParams
|
||||||
|
{
|
||||||
|
TimerHandle_t xTimer;
|
||||||
|
BaseType_t xCommandID;
|
||||||
|
TickType_t xOptionalValue;
|
||||||
|
BaseType_t * pxHigherPriorityTaskWoken;
|
||||||
|
TickType_t xTicksToWait;
|
||||||
|
} xTimerGenericCommandParams_t;
|
||||||
|
|
||||||
|
typedef struct xEventGroupWaitBitsParams
|
||||||
|
{
|
||||||
|
EventGroupHandle_t xEventGroup;
|
||||||
|
EventBits_t uxBitsToWaitFor;
|
||||||
|
BaseType_t xClearOnExit;
|
||||||
|
BaseType_t xWaitForAllBits;
|
||||||
|
TickType_t xTicksToWait;
|
||||||
|
} xEventGroupWaitBitsParams_t;
|
||||||
|
|
||||||
/* MPU versions of task.h API functions. */
|
/* MPU versions of task.h API functions. */
|
||||||
void MPU_vTaskDelay( const TickType_t xTicksToDelay ) FREERTOS_SYSTEM_CALL;
|
void MPU_vTaskDelay( const TickType_t xTicksToDelay ) FREERTOS_SYSTEM_CALL;
|
||||||
BaseType_t MPU_xTaskDelayUntil( TickType_t * const pxPreviousWakeTime,
|
BaseType_t MPU_xTaskDelayUntil( TickType_t * const pxPreviousWakeTime,
|
||||||
|
@ -77,11 +113,13 @@ BaseType_t MPU_xTaskGenericNotify( TaskHandle_t xTaskToNotify,
|
||||||
uint32_t ulValue,
|
uint32_t ulValue,
|
||||||
eNotifyAction eAction,
|
eNotifyAction eAction,
|
||||||
uint32_t * pulPreviousNotificationValue ) FREERTOS_SYSTEM_CALL;
|
uint32_t * pulPreviousNotificationValue ) FREERTOS_SYSTEM_CALL;
|
||||||
|
BaseType_t MPU_xTaskGenericNotifyEntry( const xTaskGenericNotifyParams_t * pxParams ) FREERTOS_SYSTEM_CALL;
|
||||||
BaseType_t MPU_xTaskGenericNotifyWait( UBaseType_t uxIndexToWaitOn,
|
BaseType_t MPU_xTaskGenericNotifyWait( UBaseType_t uxIndexToWaitOn,
|
||||||
uint32_t ulBitsToClearOnEntry,
|
uint32_t ulBitsToClearOnEntry,
|
||||||
uint32_t ulBitsToClearOnExit,
|
uint32_t ulBitsToClearOnExit,
|
||||||
uint32_t * pulNotificationValue,
|
uint32_t * pulNotificationValue,
|
||||||
TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
|
TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
|
||||||
|
BaseType_t MPU_xTaskGenericNotifyWaitEntry( const xTaskGenericNotifyWaitParams_t * pxParams ) FREERTOS_SYSTEM_CALL;
|
||||||
uint32_t MPU_ulTaskGenericNotifyTake( UBaseType_t uxIndexToWaitOn,
|
uint32_t MPU_ulTaskGenericNotifyTake( UBaseType_t uxIndexToWaitOn,
|
||||||
BaseType_t xClearCountOnExit,
|
BaseType_t xClearCountOnExit,
|
||||||
TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
|
TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
|
||||||
|
@ -228,9 +266,10 @@ BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
|
||||||
const TickType_t xOptionalValue,
|
const TickType_t xOptionalValue,
|
||||||
BaseType_t * const pxHigherPriorityTaskWoken,
|
BaseType_t * const pxHigherPriorityTaskWoken,
|
||||||
const TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
|
const TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
|
||||||
|
BaseType_t MPU_xTimerGenericCommandEntry( const xTimerGenericCommandParams_t * pxParams ) FREERTOS_SYSTEM_CALL;
|
||||||
const char * MPU_pcTimerGetName( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
|
const char * MPU_pcTimerGetName( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
|
||||||
void MPU_vTimerSetReloadMode( TimerHandle_t xTimer,
|
void MPU_vTimerSetReloadMode( TimerHandle_t xTimer,
|
||||||
const UBaseType_t uxAutoReload ) FREERTOS_SYSTEM_CALL;
|
const BaseType_t uxAutoReload ) FREERTOS_SYSTEM_CALL;
|
||||||
BaseType_t MPU_xTimerGetReloadMode( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
|
BaseType_t MPU_xTimerGetReloadMode( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
|
||||||
UBaseType_t MPU_uxTimerGetReloadMode( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
|
UBaseType_t MPU_uxTimerGetReloadMode( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
|
||||||
TickType_t MPU_xTimerGetPeriod( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
|
TickType_t MPU_xTimerGetPeriod( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
|
||||||
|
@ -259,6 +298,7 @@ EventBits_t MPU_xEventGroupWaitBits( EventGroupHandle_t xEventGroup,
|
||||||
const BaseType_t xClearOnExit,
|
const BaseType_t xClearOnExit,
|
||||||
const BaseType_t xWaitForAllBits,
|
const BaseType_t xWaitForAllBits,
|
||||||
TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
|
TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
|
||||||
|
EventBits_t MPU_xEventGroupWaitBitsEntry( const xEventGroupWaitBitsParams_t * pxParams ) FREERTOS_SYSTEM_CALL;
|
||||||
EventBits_t MPU_xEventGroupClearBits( EventGroupHandle_t xEventGroup,
|
EventBits_t MPU_xEventGroupClearBits( EventGroupHandle_t xEventGroup,
|
||||||
const EventBits_t uxBitsToClear ) FREERTOS_SYSTEM_CALL;
|
const EventBits_t uxBitsToClear ) FREERTOS_SYSTEM_CALL;
|
||||||
EventBits_t MPU_xEventGroupSetBits( EventGroupHandle_t xEventGroup,
|
EventBits_t MPU_xEventGroupSetBits( EventGroupHandle_t xEventGroup,
|
||||||
|
|
106
include/mpu_syscall_numbers.h
Normal file
106
include/mpu_syscall_numbers.h
Normal file
|
@ -0,0 +1,106 @@
|
||||||
|
/*
|
||||||
|
* FreeRTOS Kernel V10.6.2
|
||||||
|
* Copyright (C) 2021 Amazon.com, 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.
|
||||||
|
*
|
||||||
|
* https://www.FreeRTOS.org
|
||||||
|
* https://github.com/FreeRTOS
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef MPU_SYSCALL_NUMBERS_H
|
||||||
|
#define MPU_SYSCALL_NUMBERS_H
|
||||||
|
|
||||||
|
/* Numbers assigned to various system calls. */
|
||||||
|
#define SYSTEM_CALL_xTaskGenericNotify 0
|
||||||
|
#define SYSTEM_CALL_xTaskGenericNotifyWait 1
|
||||||
|
#define SYSTEM_CALL_xTimerGenericCommand 2
|
||||||
|
#define SYSTEM_CALL_xEventGroupWaitBits 3
|
||||||
|
#define SYSTEM_CALL_xTaskDelayUntil 4
|
||||||
|
#define SYSTEM_CALL_xTaskAbortDelay 5
|
||||||
|
#define SYSTEM_CALL_vTaskDelay 6
|
||||||
|
#define SYSTEM_CALL_uxTaskPriorityGet 7
|
||||||
|
#define SYSTEM_CALL_eTaskGetState 8
|
||||||
|
#define SYSTEM_CALL_vTaskGetInfo 9
|
||||||
|
#define SYSTEM_CALL_xTaskGetIdleTaskHandle 10
|
||||||
|
#define SYSTEM_CALL_vTaskSuspend 11
|
||||||
|
#define SYSTEM_CALL_vTaskResume 12
|
||||||
|
#define SYSTEM_CALL_xTaskGetTickCount 13
|
||||||
|
#define SYSTEM_CALL_uxTaskGetNumberOfTasks 14
|
||||||
|
#define SYSTEM_CALL_pcTaskGetName 15
|
||||||
|
#define SYSTEM_CALL_ulTaskGetRunTimeCounter 16
|
||||||
|
#define SYSTEM_CALL_ulTaskGetRunTimePercent 17
|
||||||
|
#define SYSTEM_CALL_ulTaskGetIdleRunTimePercent 18
|
||||||
|
#define SYSTEM_CALL_ulTaskGetIdleRunTimeCounter 19
|
||||||
|
#define SYSTEM_CALL_vTaskSetApplicationTaskTag 20
|
||||||
|
#define SYSTEM_CALL_xTaskGetApplicationTaskTag 21
|
||||||
|
#define SYSTEM_CALL_vTaskSetThreadLocalStoragePointer 22
|
||||||
|
#define SYSTEM_CALL_pvTaskGetThreadLocalStoragePointer 23
|
||||||
|
#define SYSTEM_CALL_uxTaskGetSystemState 24
|
||||||
|
#define SYSTEM_CALL_uxTaskGetStackHighWaterMark 25
|
||||||
|
#define SYSTEM_CALL_uxTaskGetStackHighWaterMark2 26
|
||||||
|
#define SYSTEM_CALL_xTaskGetCurrentTaskHandle 27
|
||||||
|
#define SYSTEM_CALL_xTaskGetSchedulerState 28
|
||||||
|
#define SYSTEM_CALL_vTaskSetTimeOutState 29
|
||||||
|
#define SYSTEM_CALL_xTaskCheckForTimeOut 30
|
||||||
|
#define SYSTEM_CALL_ulTaskGenericNotifyTake 31
|
||||||
|
#define SYSTEM_CALL_xTaskGenericNotifyStateClear 32
|
||||||
|
#define SYSTEM_CALL_ulTaskGenericNotifyValueClear 33
|
||||||
|
#define SYSTEM_CALL_xQueueGenericSend 34
|
||||||
|
#define SYSTEM_CALL_uxQueueMessagesWaiting 35
|
||||||
|
#define SYSTEM_CALL_uxQueueSpacesAvailable 36
|
||||||
|
#define SYSTEM_CALL_xQueueReceive 37
|
||||||
|
#define SYSTEM_CALL_xQueuePeek 38
|
||||||
|
#define SYSTEM_CALL_xQueueSemaphoreTake 39
|
||||||
|
#define SYSTEM_CALL_xQueueGetMutexHolder 40
|
||||||
|
#define SYSTEM_CALL_xQueueTakeMutexRecursive 41
|
||||||
|
#define SYSTEM_CALL_xQueueGiveMutexRecursive 42
|
||||||
|
#define SYSTEM_CALL_xQueueSelectFromSet 43
|
||||||
|
#define SYSTEM_CALL_xQueueAddToSet 44
|
||||||
|
#define SYSTEM_CALL_vQueueAddToRegistry 45
|
||||||
|
#define SYSTEM_CALL_vQueueUnregisterQueue 46
|
||||||
|
#define SYSTEM_CALL_pcQueueGetName 47
|
||||||
|
#define SYSTEM_CALL_pvTimerGetTimerID 48
|
||||||
|
#define SYSTEM_CALL_vTimerSetTimerID 49
|
||||||
|
#define SYSTEM_CALL_xTimerIsTimerActive 50
|
||||||
|
#define SYSTEM_CALL_xTimerGetTimerDaemonTaskHandle 51
|
||||||
|
#define SYSTEM_CALL_pcTimerGetName 52
|
||||||
|
#define SYSTEM_CALL_vTimerSetReloadMode 53
|
||||||
|
#define SYSTEM_CALL_xTimerGetReloadMode 54
|
||||||
|
#define SYSTEM_CALL_uxTimerGetReloadMode 55
|
||||||
|
#define SYSTEM_CALL_xTimerGetPeriod 56
|
||||||
|
#define SYSTEM_CALL_xTimerGetExpiryTime 57
|
||||||
|
#define SYSTEM_CALL_xEventGroupClearBits 58
|
||||||
|
#define SYSTEM_CALL_xEventGroupSetBits 59
|
||||||
|
#define SYSTEM_CALL_xEventGroupSync 60
|
||||||
|
#define SYSTEM_CALL_uxEventGroupGetNumber 61
|
||||||
|
#define SYSTEM_CALL_vEventGroupSetNumber 62
|
||||||
|
#define SYSTEM_CALL_xStreamBufferSend 63
|
||||||
|
#define SYSTEM_CALL_xStreamBufferReceive 64
|
||||||
|
#define SYSTEM_CALL_xStreamBufferIsFull 65
|
||||||
|
#define SYSTEM_CALL_xStreamBufferIsEmpty 66
|
||||||
|
#define SYSTEM_CALL_xStreamBufferSpacesAvailable 67
|
||||||
|
#define SYSTEM_CALL_xStreamBufferBytesAvailable 68
|
||||||
|
#define SYSTEM_CALL_xStreamBufferSetTriggerLevel 69
|
||||||
|
#define SYSTEM_CALL_xStreamBufferNextMessageLengthBytes 70
|
||||||
|
#define NUM_SYSTEM_CALLS 71 /* Total number of system calls. */
|
||||||
|
|
||||||
|
#endif /* MPU_SYSCALL_NUMBERS_H */
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
@ -233,6 +233,35 @@
|
||||||
#define PRIVILEGED_DATA __attribute__( ( section( "privileged_data" ) ) )
|
#define PRIVILEGED_DATA __attribute__( ( section( "privileged_data" ) ) )
|
||||||
#define FREERTOS_SYSTEM_CALL
|
#define FREERTOS_SYSTEM_CALL
|
||||||
|
|
||||||
|
|
||||||
|
#if ( ( configUSE_MPU_WRAPPERS_V1 == 0 ) && ( configENABLE_ACCESS_CONTROL_LIST == 1 ) )
|
||||||
|
|
||||||
|
#define vGrantAccessToTask( xTask, xTaskToGrantAccess ) vGrantAccessToKernelObject( ( xTask ), ( int32_t ) ( xTaskToGrantAccess ) )
|
||||||
|
#define vRevokeAccessToTask( xTask, xTaskToRevokeAccess ) vRevokeAccessToKernelObject( ( xTask ), ( int32_t ) ( xTaskToRevokeAccess ) )
|
||||||
|
|
||||||
|
#define vGrantAccessToSemaphore( xTask, xSemaphoreToGrantAccess ) vGrantAccessToKernelObject( ( xTask ), ( int32_t ) ( xSemaphoreToGrantAccess ) )
|
||||||
|
#define vRevokeAccessToSemaphore( xTask, xSemaphoreToRevokeAccess ) vRevokeAccessToKernelObject( ( xTask ), ( int32_t ) ( xSemaphoreToRevokeAccess ) )
|
||||||
|
|
||||||
|
#define vGrantAccessToQueue( xTask, xQueueToGrantAccess ) vGrantAccessToKernelObject( ( xTask ), ( int32_t ) ( xQueueToGrantAccess ) )
|
||||||
|
#define vRevokeAccessToQueue( xTask, xQueueToRevokeAccess ) vRevokeAccessToKernelObject( ( xTask ), ( int32_t ) ( xQueueToRevokeAccess ) )
|
||||||
|
|
||||||
|
#define vGrantAccessToQueueSet( xTask, xQueueSetToGrantAccess ) vGrantAccessToKernelObject( ( xTask ), ( int32_t ) ( xQueueSetToGrantAccess ) )
|
||||||
|
#define vRevokeAccessToQueueSet( xTask, xQueueSetToRevokeAccess ) vRevokeAccessToKernelObject( ( xTask ), ( int32_t ) ( xQueueSetToRevokeAccess ) )
|
||||||
|
|
||||||
|
#define vGrantAccessToEventGroup( xTask, xEventGroupToGrantAccess ) vGrantAccessToKernelObject( ( xTask ), ( int32_t ) ( xEventGroupToGrantAccess ) )
|
||||||
|
#define vRevokeAccessToEventGroup( xTask, xEventGroupToRevokeAccess ) vRevokeAccessToKernelObject( ( xTask ), ( int32_t ) ( xEventGroupToRevokeAccess ) )
|
||||||
|
|
||||||
|
#define vGrantAccessToStreamBuffer( xTask, xStreamBufferToGrantAccess ) vGrantAccessToKernelObject( ( xTask ), ( int32_t ) ( xStreamBufferToGrantAccess ) )
|
||||||
|
#define vRevokeAccessToStreamBuffer( xTask, xStreamBufferToRevokeAccess ) vRevokeAccessToKernelObject( ( xTask ), ( int32_t ) ( xStreamBufferToRevokeAccess ) )
|
||||||
|
|
||||||
|
#define vGrantAccessToMessageBuffer( xTask, xMessageBufferToGrantAccess ) vGrantAccessToKernelObject( ( xTask ), ( int32_t ) ( xMessageBufferToGrantAccess ) )
|
||||||
|
#define vRevokeAccessToMessageBuffer( xTask, xMessageBufferToRevokeAccess ) vRevokeAccessToKernelObject( ( xTask ), ( int32_t ) ( xMessageBufferToRevokeAccess ) )
|
||||||
|
|
||||||
|
#define vGrantAccessToTimer( xTask, xTimerToGrantAccess ) vGrantAccessToKernelObject( ( xTask ), ( int32_t ) ( xTimerToGrantAccess ) )
|
||||||
|
#define vRevokeAccessToTimer( xTask, xTimerToRevokeAccess ) vRevokeAccessToKernelObject( ( xTask ), ( int32_t ) ( xTimerToRevokeAccess ) )
|
||||||
|
|
||||||
|
#endif /* #if ( ( configUSE_MPU_WRAPPERS_V1 == 0 ) && ( configENABLE_ACCESS_CONTROL_LIST == 1 ) ) */
|
||||||
|
|
||||||
#else /* MPU_WRAPPERS_INCLUDED_FROM_API_FILE */
|
#else /* MPU_WRAPPERS_INCLUDED_FROM_API_FILE */
|
||||||
|
|
||||||
/* Ensure API functions go in the privileged execution section. */
|
/* Ensure API functions go in the privileged execution section. */
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
@ -247,6 +247,21 @@ void vPortEndScheduler( void ) PRIVILEGED_FUNCTION;
|
||||||
uint32_t ulAccessRequested ) PRIVILEGED_FUNCTION;
|
uint32_t ulAccessRequested ) PRIVILEGED_FUNCTION;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Checks if the calling task is authorized to access the given kernel object.
|
||||||
|
*
|
||||||
|
* @param lInternalIndexOfKernelObject The index of the kernel object in the kernel
|
||||||
|
* object handle pool.
|
||||||
|
*
|
||||||
|
* @return pdTRUE if the calling task is authorized to access the kernel object,
|
||||||
|
* pdFALSE otherwise.
|
||||||
|
*/
|
||||||
|
#if ( ( portUSING_MPU_WRAPPERS == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
||||||
|
|
||||||
|
BaseType_t xPortIsAuthorizedToAccessKernelObject( int32_t lInternalIndexOfKernelObject ) PRIVILEGED_FUNCTION;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
/* *INDENT-OFF* */
|
/* *INDENT-OFF* */
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
@ -1753,6 +1753,7 @@ void vQueueSetQueueNumber( QueueHandle_t xQueue,
|
||||||
UBaseType_t uxQueueGetQueueNumber( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
|
UBaseType_t uxQueueGetQueueNumber( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
|
||||||
uint8_t ucQueueGetQueueType( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
|
uint8_t ucQueueGetQueueType( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
|
||||||
UBaseType_t uxQueueGetQueueItemSize( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
|
UBaseType_t uxQueueGetQueueItemSize( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
|
||||||
|
UBaseType_t uxQueueGetQueueLength( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
|
||||||
|
|
||||||
/* *INDENT-OFF* */
|
/* *INDENT-OFF* */
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
@ -53,10 +53,10 @@
|
||||||
* The tskKERNEL_VERSION_MAJOR, tskKERNEL_VERSION_MINOR, tskKERNEL_VERSION_BUILD
|
* The tskKERNEL_VERSION_MAJOR, tskKERNEL_VERSION_MINOR, tskKERNEL_VERSION_BUILD
|
||||||
* values will reflect the last released version number.
|
* values will reflect the last released version number.
|
||||||
*/
|
*/
|
||||||
#define tskKERNEL_VERSION_NUMBER "V10.4.4+"
|
#define tskKERNEL_VERSION_NUMBER "V10.6.2"
|
||||||
#define tskKERNEL_VERSION_MAJOR 10
|
#define tskKERNEL_VERSION_MAJOR 10
|
||||||
#define tskKERNEL_VERSION_MINOR 4
|
#define tskKERNEL_VERSION_MINOR 6
|
||||||
#define tskKERNEL_VERSION_BUILD 4
|
#define tskKERNEL_VERSION_BUILD 2
|
||||||
|
|
||||||
/* MPU region parameters passed in ulParameters
|
/* MPU region parameters passed in ulParameters
|
||||||
* of MemoryRegion_t struct. */
|
* of MemoryRegion_t struct. */
|
||||||
|
@ -3206,6 +3206,27 @@ void vTaskInternalSetTimeOutState( TimeOut_t * const pxTimeOut ) PRIVILEGED_FUNC
|
||||||
|
|
||||||
#endif /* portUSING_MPU_WRAPPERS */
|
#endif /* portUSING_MPU_WRAPPERS */
|
||||||
|
|
||||||
|
|
||||||
|
#if ( ( portUSING_MPU_WRAPPERS == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) && ( configENABLE_ACCESS_CONTROL_LIST == 1 ) )
|
||||||
|
|
||||||
|
/*
|
||||||
|
* For internal use only. Grant/Revoke a task's access to a kernel object.
|
||||||
|
*/
|
||||||
|
void vGrantAccessToKernelObject( TaskHandle_t xExternalTaskHandle,
|
||||||
|
int32_t lExternalKernelObjectHandle ) PRIVILEGED_FUNCTION;
|
||||||
|
void vRevokeAccessToKernelObject( TaskHandle_t xExternalTaskHandle,
|
||||||
|
int32_t lExternalKernelObjectHandle ) PRIVILEGED_FUNCTION;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* For internal use only. Grant/Revoke a task's access to a kernel object.
|
||||||
|
*/
|
||||||
|
void vPortGrantAccessToKernelObject( TaskHandle_t xInternalTaskHandle,
|
||||||
|
int32_t lInternalIndexOfKernelObject ) PRIVILEGED_FUNCTION;
|
||||||
|
void vPortRevokeAccessToKernelObject( TaskHandle_t xInternalTaskHandle,
|
||||||
|
int32_t lInternalIndexOfKernelObject ) PRIVILEGED_FUNCTION;
|
||||||
|
|
||||||
|
#endif /* #if ( ( portUSING_MPU_WRAPPERS == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) && ( configENABLE_ACCESS_CONTROL_LIST == 1 ) ) */
|
||||||
|
|
||||||
/* *INDENT-OFF* */
|
/* *INDENT-OFF* */
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
2
list.c
2
list.c
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
name : "FreeRTOS-Kernel"
|
name : "FreeRTOS-Kernel"
|
||||||
version: "v10.5.1"
|
version: "v10.6.2"
|
||||||
description: "FreeRTOS Kernel."
|
description: "FreeRTOS Kernel."
|
||||||
license: "MIT"
|
license: "MIT"
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#/*
|
#/*
|
||||||
# * FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
# * FreeRTOS Kernel V10.6.2
|
||||||
# * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
# * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
# *
|
# *
|
||||||
# * SPDX-License-Identifier: MIT
|
# * SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
@ -35,8 +35,9 @@
|
||||||
#include "FreeRTOS.h"
|
#include "FreeRTOS.h"
|
||||||
#include "task.h"
|
#include "task.h"
|
||||||
|
|
||||||
/* MPU wrappers includes. */
|
/* MPU includes. */
|
||||||
#include "mpu_wrappers.h"
|
#include "mpu_wrappers.h"
|
||||||
|
#include "mpu_syscall_numbers.h"
|
||||||
|
|
||||||
/* Portasm includes. */
|
/* Portasm includes. */
|
||||||
#include "portasm.h"
|
#include "portasm.h"
|
||||||
|
@ -422,31 +423,26 @@ portDONT_DISCARD void vPortSVCHandler_C( uint32_t * pulCallerStackAddress ) PRIV
|
||||||
|
|
||||||
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Sets up the system call stack so that upon returning from
|
* @brief Sets up the system call stack so that upon returning from
|
||||||
* SVC, the system call stack is used.
|
* SVC, the system call stack is used.
|
||||||
*
|
*
|
||||||
* It is used for the system calls with up to 4 parameters.
|
|
||||||
*
|
|
||||||
* @param pulTaskStack The current SP when the SVC was raised.
|
* @param pulTaskStack The current SP when the SVC was raised.
|
||||||
* @param ulLR The value of Link Register (EXC_RETURN) in the SVC handler.
|
* @param ulLR The value of Link Register (EXC_RETURN) in the SVC handler.
|
||||||
|
* @param ucSystemCallNumber The system call number of the system call.
|
||||||
*/
|
*/
|
||||||
void vSystemCallEnter( uint32_t * pulTaskStack, uint32_t ulLR ) PRIVILEGED_FUNCTION;
|
void vSystemCallEnter( uint32_t * pulTaskStack,
|
||||||
|
uint32_t ulLR,
|
||||||
|
uint8_t ucSystemCallNumber ) PRIVILEGED_FUNCTION;
|
||||||
|
|
||||||
#endif /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
#endif /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
||||||
|
|
||||||
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Sets up the system call stack so that upon returning from
|
* @brief Raise SVC for exiting from a system call.
|
||||||
* SVC, the system call stack is used.
|
|
||||||
*
|
|
||||||
* It is used for the system calls with 5 parameters.
|
|
||||||
*
|
|
||||||
* @param pulTaskStack The current SP when the SVC was raised.
|
|
||||||
* @param ulLR The value of Link Register (EXC_RETURN) in the SVC handler.
|
|
||||||
*/
|
*/
|
||||||
void vSystemCallEnter_1( uint32_t * pulTaskStack, uint32_t ulLR ) PRIVILEGED_FUNCTION;
|
void vRequestSystemCallExit( void ) __attribute__( ( naked ) ) PRIVILEGED_FUNCTION;
|
||||||
|
|
||||||
#endif /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
#endif /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
||||||
|
|
||||||
|
@ -459,7 +455,8 @@ portDONT_DISCARD void vPortSVCHandler_C( uint32_t * pulCallerStackAddress ) PRIV
|
||||||
* @param pulSystemCallStack The current SP when the SVC was raised.
|
* @param pulSystemCallStack The current SP when the SVC was raised.
|
||||||
* @param ulLR The value of Link Register (EXC_RETURN) in the SVC handler.
|
* @param ulLR The value of Link Register (EXC_RETURN) in the SVC handler.
|
||||||
*/
|
*/
|
||||||
void vSystemCallExit( uint32_t * pulSystemCallStack, uint32_t ulLR ) PRIVILEGED_FUNCTION;
|
void vSystemCallExit( uint32_t * pulSystemCallStack,
|
||||||
|
uint32_t ulLR ) PRIVILEGED_FUNCTION;
|
||||||
|
|
||||||
#endif /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
#endif /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
||||||
|
|
||||||
|
@ -475,6 +472,15 @@ portDONT_DISCARD void vPortSVCHandler_C( uint32_t * pulCallerStackAddress ) PRIV
|
||||||
#endif /* configENABLE_MPU == 1 */
|
#endif /* configENABLE_MPU == 1 */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) && ( configENABLE_ACCESS_CONTROL_LIST == 1 ) )
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief This variable is set to pdTRUE when the scheduler is started.
|
||||||
|
*/
|
||||||
|
PRIVILEGED_DATA static BaseType_t xSchedulerRunning = pdFALSE;
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Each task maintains its own interrupt status in the critical nesting
|
* @brief Each task maintains its own interrupt status in the critical nesting
|
||||||
* variable.
|
* variable.
|
||||||
|
@ -813,7 +819,6 @@ static void prvTaskExitError( void )
|
||||||
static void prvSetupMPU( void ) /* PRIVILEGED_FUNCTION */
|
static void prvSetupMPU( void ) /* PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
#if defined( __ARMCC_VERSION )
|
#if defined( __ARMCC_VERSION )
|
||||||
|
|
||||||
/* Declaration when these variable are defined in code instead of being
|
/* Declaration when these variable are defined in code instead of being
|
||||||
* exported from linker scripts. */
|
* exported from linker scripts. */
|
||||||
extern uint32_t * __privileged_functions_start__;
|
extern uint32_t * __privileged_functions_start__;
|
||||||
|
@ -983,7 +988,6 @@ void vPortSVCHandler_C( uint32_t * pulCallerStackAddress ) /* PRIVILEGED_FUNCTIO
|
||||||
{
|
{
|
||||||
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 1 ) )
|
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 1 ) )
|
||||||
#if defined( __ARMCC_VERSION )
|
#if defined( __ARMCC_VERSION )
|
||||||
|
|
||||||
/* Declaration when these variable are defined in code instead of being
|
/* Declaration when these variable are defined in code instead of being
|
||||||
* exported from linker scripts. */
|
* exported from linker scripts. */
|
||||||
extern uint32_t * __syscalls_flash_start__;
|
extern uint32_t * __syscalls_flash_start__;
|
||||||
|
@ -1101,12 +1105,16 @@ void vPortSVCHandler_C( uint32_t * pulCallerStackAddress ) /* PRIVILEGED_FUNCTIO
|
||||||
|
|
||||||
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
||||||
|
|
||||||
void vSystemCallEnter( uint32_t * pulTaskStack, uint32_t ulLR ) /* PRIVILEGED_FUNCTION */
|
void vSystemCallEnter( uint32_t * pulTaskStack,
|
||||||
{
|
uint32_t ulLR,
|
||||||
|
uint8_t ucSystemCallNumber ) /* PRIVILEGED_FUNCTION */
|
||||||
|
{
|
||||||
extern TaskHandle_t pxCurrentTCB;
|
extern TaskHandle_t pxCurrentTCB;
|
||||||
|
extern UBaseType_t uxSystemCallImplementations[ NUM_SYSTEM_CALLS ];
|
||||||
xMPU_SETTINGS * pxMpuSettings;
|
xMPU_SETTINGS * pxMpuSettings;
|
||||||
uint32_t * pulSystemCallStack;
|
uint32_t * pulSystemCallStack;
|
||||||
uint32_t ulStackFrameSize, ulSystemCallLocation, i;
|
uint32_t ulStackFrameSize, ulSystemCallLocation, i;
|
||||||
|
|
||||||
#if defined( __ARMCC_VERSION )
|
#if defined( __ARMCC_VERSION )
|
||||||
/* Declaration when these variable are defined in code instead of being
|
/* Declaration when these variable are defined in code instead of being
|
||||||
* exported from linker scripts. */
|
* exported from linker scripts. */
|
||||||
|
@ -1119,16 +1127,26 @@ void vSystemCallEnter( uint32_t * pulTaskStack, uint32_t ulLR ) /* PRIVILEGED_FU
|
||||||
#endif /* #if defined( __ARMCC_VERSION ) */
|
#endif /* #if defined( __ARMCC_VERSION ) */
|
||||||
|
|
||||||
ulSystemCallLocation = pulTaskStack[ portOFFSET_TO_PC ];
|
ulSystemCallLocation = pulTaskStack[ portOFFSET_TO_PC ];
|
||||||
|
|
||||||
/* If the request did not come from the system call section, do nothing. */
|
|
||||||
if( ( ulSystemCallLocation >= ( uint32_t ) __syscalls_flash_start__ ) &&
|
|
||||||
( ulSystemCallLocation <= ( uint32_t ) __syscalls_flash_end__ ) )
|
|
||||||
{
|
|
||||||
pxMpuSettings = xTaskGetMPUSettings( pxCurrentTCB );
|
pxMpuSettings = xTaskGetMPUSettings( pxCurrentTCB );
|
||||||
pulSystemCallStack = pxMpuSettings->xSystemCallStackInfo.pulSystemCallStack;
|
|
||||||
|
|
||||||
/* This is not NULL only for the duration of the system call. */
|
/* Checks:
|
||||||
configASSERT( pxMpuSettings->xSystemCallStackInfo.pulTaskStack == NULL );
|
* 1. SVC is raised from the system call section (i.e. application is
|
||||||
|
* not raising SVC directly).
|
||||||
|
* 2. pxMpuSettings->xSystemCallStackInfo.pulTaskStack must be NULL as
|
||||||
|
* it is non-NULL only during the execution of a system call (i.e.
|
||||||
|
* between system call enter and exit).
|
||||||
|
* 3. System call is not for a kernel API disabled by the configuration
|
||||||
|
* in FreeRTOSConfig.h.
|
||||||
|
* 4. We do not need to check that ucSystemCallNumber is within range
|
||||||
|
* because the assembly SVC handler checks that before calling
|
||||||
|
* this function.
|
||||||
|
*/
|
||||||
|
if( ( ulSystemCallLocation >= ( uint32_t ) __syscalls_flash_start__ ) &&
|
||||||
|
( ulSystemCallLocation <= ( uint32_t ) __syscalls_flash_end__ ) &&
|
||||||
|
( pxMpuSettings->xSystemCallStackInfo.pulTaskStack == NULL ) &&
|
||||||
|
( uxSystemCallImplementations[ ucSystemCallNumber ] != ( UBaseType_t ) 0 ) )
|
||||||
|
{
|
||||||
|
pulSystemCallStack = pxMpuSettings->xSystemCallStackInfo.pulSystemCallStack;
|
||||||
|
|
||||||
#if ( ( configENABLE_FPU == 1 ) || ( configENABLE_MVE == 1 ) )
|
#if ( ( configENABLE_FPU == 1 ) || ( configENABLE_MVE == 1 ) )
|
||||||
{
|
{
|
||||||
|
@ -1136,7 +1154,8 @@ void vSystemCallEnter( uint32_t * pulTaskStack, uint32_t ulLR ) /* PRIVILEGED_FU
|
||||||
{
|
{
|
||||||
/* Extended frame i.e. FPU in use. */
|
/* Extended frame i.e. FPU in use. */
|
||||||
ulStackFrameSize = 26;
|
ulStackFrameSize = 26;
|
||||||
__asm volatile (
|
__asm volatile
|
||||||
|
(
|
||||||
" vpush {s0} \n" /* Trigger lazy stacking. */
|
" vpush {s0} \n" /* Trigger lazy stacking. */
|
||||||
" vpop {s0} \n" /* Nullify the affect of the above instruction. */
|
" vpop {s0} \n" /* Nullify the affect of the above instruction. */
|
||||||
::: "memory"
|
::: "memory"
|
||||||
|
@ -1148,11 +1167,11 @@ void vSystemCallEnter( uint32_t * pulTaskStack, uint32_t ulLR ) /* PRIVILEGED_FU
|
||||||
ulStackFrameSize = 8;
|
ulStackFrameSize = 8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else /* if ( ( configENABLE_FPU == 1 ) || ( configENABLE_MVE == 1 ) ) */
|
||||||
{
|
{
|
||||||
ulStackFrameSize = 8;
|
ulStackFrameSize = 8;
|
||||||
}
|
}
|
||||||
#endif /* configENABLE_FPU || configENABLE_MVE */
|
#endif /* if ( ( configENABLE_FPU == 1 ) || ( configENABLE_MVE == 1 ) ) */
|
||||||
|
|
||||||
/* Make space on the system call stack for the stack frame. */
|
/* Make space on the system call stack for the stack frame. */
|
||||||
pulSystemCallStack = pulSystemCallStack - ulStackFrameSize;
|
pulSystemCallStack = pulSystemCallStack - ulStackFrameSize;
|
||||||
|
@ -1163,152 +1182,50 @@ void vSystemCallEnter( uint32_t * pulTaskStack, uint32_t ulLR ) /* PRIVILEGED_FU
|
||||||
pulSystemCallStack[ i ] = pulTaskStack[ i ];
|
pulSystemCallStack[ i ] = pulTaskStack[ i ];
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Store the value of the LR and PSPLIM registers before the SVC was raised. We need to
|
/* Store the value of the Link Register before the SVC was raised.
|
||||||
* restore it when we exit from the system call. */
|
* It contains the address of the caller of the System Call entry
|
||||||
|
* point (i.e. the caller of the MPU_<API>). We need to restore it
|
||||||
|
* when we exit from the system call. */
|
||||||
pxMpuSettings->xSystemCallStackInfo.ulLinkRegisterAtSystemCallEntry = pulTaskStack[ portOFFSET_TO_LR ];
|
pxMpuSettings->xSystemCallStackInfo.ulLinkRegisterAtSystemCallEntry = pulTaskStack[ portOFFSET_TO_LR ];
|
||||||
__asm volatile ( "mrs %0, psplim" : "=r" ( pxMpuSettings->xSystemCallStackInfo.ulStackLimitRegisterAtSystemCallEntry ) );
|
|
||||||
|
|
||||||
/* Use the pulSystemCallStack in thread mode. */
|
/* Store the value of the PSPLIM register before the SVC was raised.
|
||||||
__asm volatile ( "msr psp, %0" : : "r" ( pulSystemCallStack ) );
|
|
||||||
__asm volatile ( "msr psplim, %0" : : "r" ( pxMpuSettings->xSystemCallStackInfo.pulSystemCallStackLimit ) );
|
|
||||||
|
|
||||||
/* Remember the location where we should copy the stack frame when we exit from
|
|
||||||
* the system call. */
|
|
||||||
pxMpuSettings->xSystemCallStackInfo.pulTaskStack = pulTaskStack + ulStackFrameSize;
|
|
||||||
|
|
||||||
/* Record if the hardware used padding to force the stack pointer
|
|
||||||
* to be double word aligned. */
|
|
||||||
if( ( pulTaskStack[ portOFFSET_TO_PSR ] & portPSR_STACK_PADDING_MASK ) == portPSR_STACK_PADDING_MASK )
|
|
||||||
{
|
|
||||||
pxMpuSettings->ulTaskFlags |= portSTACK_FRAME_HAS_PADDING_FLAG;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pxMpuSettings->ulTaskFlags &= ( ~portSTACK_FRAME_HAS_PADDING_FLAG );
|
|
||||||
}
|
|
||||||
|
|
||||||
/* We ensure in pxPortInitialiseStack that the system call stack is
|
|
||||||
* double word aligned and therefore, there is no need of padding.
|
|
||||||
* Clear the bit[9] of stacked xPSR. */
|
|
||||||
pulSystemCallStack[ portOFFSET_TO_PSR ] &= ( ~portPSR_STACK_PADDING_MASK );
|
|
||||||
|
|
||||||
/* Raise the privilege for the duration of the system call. */
|
|
||||||
__asm volatile (
|
|
||||||
" mrs r0, control \n" /* Obtain current control value. */
|
|
||||||
" movs r1, #1 \n" /* r1 = 1. */
|
|
||||||
" bics r0, r1 \n" /* Clear nPRIV bit. */
|
|
||||||
" msr control, r0 \n" /* Write back new control value. */
|
|
||||||
::: "r0", "r1", "memory"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
|
||||||
/*-----------------------------------------------------------*/
|
|
||||||
|
|
||||||
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
|
||||||
|
|
||||||
void vSystemCallEnter_1( uint32_t * pulTaskStack, uint32_t ulLR ) /* PRIVILEGED_FUNCTION */
|
|
||||||
{
|
|
||||||
extern TaskHandle_t pxCurrentTCB;
|
|
||||||
xMPU_SETTINGS * pxMpuSettings;
|
|
||||||
uint32_t * pulSystemCallStack;
|
|
||||||
uint32_t ulStackFrameSize, ulSystemCallLocation, i;
|
|
||||||
#if defined( __ARMCC_VERSION )
|
|
||||||
/* Declaration when these variable are defined in code instead of being
|
|
||||||
* exported from linker scripts. */
|
|
||||||
extern uint32_t * __syscalls_flash_start__;
|
|
||||||
extern uint32_t * __syscalls_flash_end__;
|
|
||||||
#else
|
|
||||||
/* Declaration when these variable are exported from linker scripts. */
|
|
||||||
extern uint32_t __syscalls_flash_start__[];
|
|
||||||
extern uint32_t __syscalls_flash_end__[];
|
|
||||||
#endif /* #if defined( __ARMCC_VERSION ) */
|
|
||||||
|
|
||||||
ulSystemCallLocation = pulTaskStack[ portOFFSET_TO_PC ];
|
|
||||||
|
|
||||||
/* If the request did not come from the system call section, do nothing. */
|
|
||||||
if( ( ulSystemCallLocation >= ( uint32_t ) __syscalls_flash_start__ ) &&
|
|
||||||
( ulSystemCallLocation <= ( uint32_t ) __syscalls_flash_end__ ) )
|
|
||||||
{
|
|
||||||
pxMpuSettings = xTaskGetMPUSettings( pxCurrentTCB );
|
|
||||||
pulSystemCallStack = pxMpuSettings->xSystemCallStackInfo.pulSystemCallStack;
|
|
||||||
|
|
||||||
/* This is not NULL only for the duration of the system call. */
|
|
||||||
configASSERT( pxMpuSettings->xSystemCallStackInfo.pulTaskStack == NULL );
|
|
||||||
|
|
||||||
#if ( ( configENABLE_FPU == 1 ) || ( configENABLE_MVE == 1 ) )
|
|
||||||
{
|
|
||||||
if( ( ulLR & portEXC_RETURN_STACK_FRAME_TYPE_MASK ) == 0UL )
|
|
||||||
{
|
|
||||||
/* Extended frame i.e. FPU in use. */
|
|
||||||
ulStackFrameSize = 26;
|
|
||||||
__asm volatile (
|
|
||||||
" vpush {s0} \n" /* Trigger lazy stacking. */
|
|
||||||
" vpop {s0} \n" /* Nullify the affect of the above instruction. */
|
|
||||||
::: "memory"
|
|
||||||
);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
/* Standard frame i.e. FPU not in use. */
|
|
||||||
ulStackFrameSize = 8;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
{
|
|
||||||
ulStackFrameSize = 8;
|
|
||||||
}
|
|
||||||
#endif /* configENABLE_FPU || configENABLE_MVE */
|
|
||||||
|
|
||||||
/* Make space on the system call stack for the stack frame and
|
|
||||||
* the parameter passed on the stack. We only need to copy one
|
|
||||||
* parameter but we still reserve 2 spaces to keep the stack
|
|
||||||
* double word aligned. */
|
|
||||||
pulSystemCallStack = pulSystemCallStack - ulStackFrameSize - 2UL;
|
|
||||||
|
|
||||||
/* Copy the stack frame. */
|
|
||||||
for( i = 0; i < ulStackFrameSize; i++ )
|
|
||||||
{
|
|
||||||
pulSystemCallStack[ i ] = pulTaskStack[ i ];
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Copy the parameter which is passed the stack. */
|
|
||||||
if( ( pulTaskStack[ portOFFSET_TO_PSR ] & portPSR_STACK_PADDING_MASK ) == portPSR_STACK_PADDING_MASK )
|
|
||||||
{
|
|
||||||
pulSystemCallStack[ ulStackFrameSize ] = pulTaskStack[ ulStackFrameSize + 1 ];
|
|
||||||
/* Record if the hardware used padding to force the stack pointer
|
|
||||||
* to be double word aligned. */
|
|
||||||
pxMpuSettings->ulTaskFlags |= portSTACK_FRAME_HAS_PADDING_FLAG;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
pulSystemCallStack[ ulStackFrameSize ] = pulTaskStack[ ulStackFrameSize ];
|
|
||||||
/* Record if the hardware used padding to force the stack pointer
|
|
||||||
* to be double word aligned. */
|
|
||||||
pxMpuSettings->ulTaskFlags &= ( ~portSTACK_FRAME_HAS_PADDING_FLAG );
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Store the value of the LR and PSPLIM registers before the SVC was raised.
|
|
||||||
* We need to restore it when we exit from the system call. */
|
* We need to restore it when we exit from the system call. */
|
||||||
pxMpuSettings->xSystemCallStackInfo.ulLinkRegisterAtSystemCallEntry = pulTaskStack[ portOFFSET_TO_LR ];
|
|
||||||
__asm volatile ( "mrs %0, psplim" : "=r" ( pxMpuSettings->xSystemCallStackInfo.ulStackLimitRegisterAtSystemCallEntry ) );
|
__asm volatile ( "mrs %0, psplim" : "=r" ( pxMpuSettings->xSystemCallStackInfo.ulStackLimitRegisterAtSystemCallEntry ) );
|
||||||
|
|
||||||
/* Use the pulSystemCallStack in thread mode. */
|
/* Use the pulSystemCallStack in thread mode. */
|
||||||
__asm volatile ( "msr psp, %0" : : "r" ( pulSystemCallStack ) );
|
__asm volatile ( "msr psp, %0" : : "r" ( pulSystemCallStack ) );
|
||||||
__asm volatile ( "msr psplim, %0" : : "r" ( pxMpuSettings->xSystemCallStackInfo.pulSystemCallStackLimit ) );
|
__asm volatile ( "msr psplim, %0" : : "r" ( pxMpuSettings->xSystemCallStackInfo.pulSystemCallStackLimit ) );
|
||||||
|
|
||||||
|
/* Start executing the system call upon returning from this handler. */
|
||||||
|
pulSystemCallStack[ portOFFSET_TO_PC ] = uxSystemCallImplementations[ ucSystemCallNumber ];
|
||||||
|
|
||||||
|
/* Raise a request to exit from the system call upon finishing the
|
||||||
|
* system call. */
|
||||||
|
pulSystemCallStack[ portOFFSET_TO_LR ] = ( uint32_t ) vRequestSystemCallExit;
|
||||||
|
|
||||||
/* Remember the location where we should copy the stack frame when we exit from
|
/* Remember the location where we should copy the stack frame when we exit from
|
||||||
* the system call. */
|
* the system call. */
|
||||||
pxMpuSettings->xSystemCallStackInfo.pulTaskStack = pulTaskStack + ulStackFrameSize;
|
pxMpuSettings->xSystemCallStackInfo.pulTaskStack = pulTaskStack + ulStackFrameSize;
|
||||||
|
|
||||||
|
/* Record if the hardware used padding to force the stack pointer
|
||||||
|
* to be double word aligned. */
|
||||||
|
if( ( pulTaskStack[ portOFFSET_TO_PSR ] & portPSR_STACK_PADDING_MASK ) == portPSR_STACK_PADDING_MASK )
|
||||||
|
{
|
||||||
|
pxMpuSettings->ulTaskFlags |= portSTACK_FRAME_HAS_PADDING_FLAG;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
pxMpuSettings->ulTaskFlags &= ( ~portSTACK_FRAME_HAS_PADDING_FLAG );
|
||||||
|
}
|
||||||
|
|
||||||
/* We ensure in pxPortInitialiseStack that the system call stack is
|
/* We ensure in pxPortInitialiseStack that the system call stack is
|
||||||
* double word aligned and therefore, there is no need of padding.
|
* double word aligned and therefore, there is no need of padding.
|
||||||
* Clear the bit[9] of stacked xPSR. */
|
* Clear the bit[9] of stacked xPSR. */
|
||||||
pulSystemCallStack[ portOFFSET_TO_PSR ] &= ( ~portPSR_STACK_PADDING_MASK );
|
pulSystemCallStack[ portOFFSET_TO_PSR ] &= ( ~portPSR_STACK_PADDING_MASK );
|
||||||
|
|
||||||
/* Raise the privilege for the duration of the system call. */
|
/* Raise the privilege for the duration of the system call. */
|
||||||
__asm volatile (
|
__asm volatile
|
||||||
|
(
|
||||||
" mrs r0, control \n" /* Obtain current control value. */
|
" mrs r0, control \n" /* Obtain current control value. */
|
||||||
" movs r1, #1 \n" /* r1 = 1. */
|
" movs r1, #1 \n" /* r1 = 1. */
|
||||||
" bics r0, r1 \n" /* Clear nPRIV bit. */
|
" bics r0, r1 \n" /* Clear nPRIV bit. */
|
||||||
|
@ -1316,37 +1233,58 @@ void vSystemCallEnter_1( uint32_t * pulTaskStack, uint32_t ulLR ) /* PRIVILEGED_
|
||||||
::: "r0", "r1", "memory"
|
::: "r0", "r1", "memory"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
#endif /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
||||||
|
|
||||||
void vSystemCallExit( uint32_t * pulSystemCallStack, uint32_t ulLR ) /* PRIVILEGED_FUNCTION */
|
void vRequestSystemCallExit( void ) /* __attribute__( ( naked ) ) PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
|
__asm volatile ( "svc %0 \n" ::"i" ( portSVC_SYSTEM_CALL_EXIT ) : "memory" );
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
||||||
|
|
||||||
|
void vSystemCallExit( uint32_t * pulSystemCallStack,
|
||||||
|
uint32_t ulLR ) /* PRIVILEGED_FUNCTION */
|
||||||
|
{
|
||||||
extern TaskHandle_t pxCurrentTCB;
|
extern TaskHandle_t pxCurrentTCB;
|
||||||
xMPU_SETTINGS * pxMpuSettings;
|
xMPU_SETTINGS * pxMpuSettings;
|
||||||
uint32_t * pulTaskStack;
|
uint32_t * pulTaskStack;
|
||||||
uint32_t ulStackFrameSize, ulSystemCallLocation, i;
|
uint32_t ulStackFrameSize, ulSystemCallLocation, i;
|
||||||
|
|
||||||
#if defined( __ARMCC_VERSION )
|
#if defined( __ARMCC_VERSION )
|
||||||
/* Declaration when these variable are defined in code instead of being
|
/* Declaration when these variable are defined in code instead of being
|
||||||
* exported from linker scripts. */
|
* exported from linker scripts. */
|
||||||
extern uint32_t * __syscalls_flash_start__;
|
extern uint32_t * __privileged_functions_start__;
|
||||||
extern uint32_t * __syscalls_flash_end__;
|
extern uint32_t * __privileged_functions_end__;
|
||||||
#else
|
#else
|
||||||
/* Declaration when these variable are exported from linker scripts. */
|
/* Declaration when these variable are exported from linker scripts. */
|
||||||
extern uint32_t __syscalls_flash_start__[];
|
extern uint32_t __privileged_functions_start__[];
|
||||||
extern uint32_t __syscalls_flash_end__[];
|
extern uint32_t __privileged_functions_end__[];
|
||||||
#endif /* #if defined( __ARMCC_VERSION ) */
|
#endif /* #if defined( __ARMCC_VERSION ) */
|
||||||
|
|
||||||
ulSystemCallLocation = pulSystemCallStack[ portOFFSET_TO_PC ];
|
ulSystemCallLocation = pulSystemCallStack[ portOFFSET_TO_PC ];
|
||||||
|
|
||||||
/* If the request did not come from the system call section, do nothing. */
|
|
||||||
if( ( ulSystemCallLocation >= ( uint32_t ) __syscalls_flash_start__ ) &&
|
|
||||||
( ulSystemCallLocation <= ( uint32_t ) __syscalls_flash_end__ ) )
|
|
||||||
{
|
|
||||||
pxMpuSettings = xTaskGetMPUSettings( pxCurrentTCB );
|
pxMpuSettings = xTaskGetMPUSettings( pxCurrentTCB );
|
||||||
|
|
||||||
|
/* Checks:
|
||||||
|
* 1. SVC is raised from the privileged code (i.e. application is not
|
||||||
|
* raising SVC directly). This SVC is only raised from
|
||||||
|
* vRequestSystemCallExit which is in the privileged code section.
|
||||||
|
* 2. pxMpuSettings->xSystemCallStackInfo.pulTaskStack must not be NULL -
|
||||||
|
* this means that we previously entered a system call and the
|
||||||
|
* application is not attempting to exit without entering a system
|
||||||
|
* call.
|
||||||
|
*/
|
||||||
|
if( ( ulSystemCallLocation >= ( uint32_t ) __privileged_functions_start__ ) &&
|
||||||
|
( ulSystemCallLocation <= ( uint32_t ) __privileged_functions_end__ ) &&
|
||||||
|
( pxMpuSettings->xSystemCallStackInfo.pulTaskStack != NULL ) )
|
||||||
|
{
|
||||||
pulTaskStack = pxMpuSettings->xSystemCallStackInfo.pulTaskStack;
|
pulTaskStack = pxMpuSettings->xSystemCallStackInfo.pulTaskStack;
|
||||||
|
|
||||||
#if ( ( configENABLE_FPU == 1 ) || ( configENABLE_MVE == 1 ) )
|
#if ( ( configENABLE_FPU == 1 ) || ( configENABLE_MVE == 1 ) )
|
||||||
|
@ -1355,7 +1293,8 @@ void vSystemCallExit( uint32_t * pulSystemCallStack, uint32_t ulLR ) /* PRIVILEG
|
||||||
{
|
{
|
||||||
/* Extended frame i.e. FPU in use. */
|
/* Extended frame i.e. FPU in use. */
|
||||||
ulStackFrameSize = 26;
|
ulStackFrameSize = 26;
|
||||||
__asm volatile (
|
__asm volatile
|
||||||
|
(
|
||||||
" vpush {s0} \n" /* Trigger lazy stacking. */
|
" vpush {s0} \n" /* Trigger lazy stacking. */
|
||||||
" vpop {s0} \n" /* Nullify the affect of the above instruction. */
|
" vpop {s0} \n" /* Nullify the affect of the above instruction. */
|
||||||
::: "memory"
|
::: "memory"
|
||||||
|
@ -1367,11 +1306,11 @@ void vSystemCallExit( uint32_t * pulSystemCallStack, uint32_t ulLR ) /* PRIVILEG
|
||||||
ulStackFrameSize = 8;
|
ulStackFrameSize = 8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else /* if ( ( configENABLE_FPU == 1 ) || ( configENABLE_MVE == 1 ) ) */
|
||||||
{
|
{
|
||||||
ulStackFrameSize = 8;
|
ulStackFrameSize = 8;
|
||||||
}
|
}
|
||||||
#endif /* configENABLE_FPU || configENABLE_MVE */
|
#endif /* if ( ( configENABLE_FPU == 1 ) || ( configENABLE_MVE == 1 ) ) */
|
||||||
|
|
||||||
/* Make space on the task stack for the stack frame. */
|
/* Make space on the task stack for the stack frame. */
|
||||||
pulTaskStack = pulTaskStack - ulStackFrameSize;
|
pulTaskStack = pulTaskStack - ulStackFrameSize;
|
||||||
|
@ -1385,9 +1324,14 @@ void vSystemCallExit( uint32_t * pulSystemCallStack, uint32_t ulLR ) /* PRIVILEG
|
||||||
/* Use the pulTaskStack in thread mode. */
|
/* Use the pulTaskStack in thread mode. */
|
||||||
__asm volatile ( "msr psp, %0" : : "r" ( pulTaskStack ) );
|
__asm volatile ( "msr psp, %0" : : "r" ( pulTaskStack ) );
|
||||||
|
|
||||||
/* Restore the LR and PSPLIM to what they were at the time of
|
/* Return to the caller of the System Call entry point (i.e. the
|
||||||
* system call entry. */
|
* caller of the MPU_<API>). */
|
||||||
|
pulTaskStack[ portOFFSET_TO_PC ] = pxMpuSettings->xSystemCallStackInfo.ulLinkRegisterAtSystemCallEntry;
|
||||||
|
/* Ensure that LR has a valid value.*/
|
||||||
pulTaskStack[ portOFFSET_TO_LR ] = pxMpuSettings->xSystemCallStackInfo.ulLinkRegisterAtSystemCallEntry;
|
pulTaskStack[ portOFFSET_TO_LR ] = pxMpuSettings->xSystemCallStackInfo.ulLinkRegisterAtSystemCallEntry;
|
||||||
|
|
||||||
|
/* Restore the PSPLIM register to what it was at the time of
|
||||||
|
* system call entry. */
|
||||||
__asm volatile ( "msr psplim, %0" : : "r" ( pxMpuSettings->xSystemCallStackInfo.ulStackLimitRegisterAtSystemCallEntry ) );
|
__asm volatile ( "msr psplim, %0" : : "r" ( pxMpuSettings->xSystemCallStackInfo.ulStackLimitRegisterAtSystemCallEntry ) );
|
||||||
|
|
||||||
/* If the hardware used padding to force the stack pointer
|
/* If the hardware used padding to force the stack pointer
|
||||||
|
@ -1406,7 +1350,8 @@ void vSystemCallExit( uint32_t * pulSystemCallStack, uint32_t ulLR ) /* PRIVILEG
|
||||||
pxMpuSettings->xSystemCallStackInfo.pulTaskStack = NULL;
|
pxMpuSettings->xSystemCallStackInfo.pulTaskStack = NULL;
|
||||||
|
|
||||||
/* Drop the privilege before returning to the thread mode. */
|
/* Drop the privilege before returning to the thread mode. */
|
||||||
__asm volatile (
|
__asm volatile
|
||||||
|
(
|
||||||
" mrs r0, control \n" /* Obtain current control value. */
|
" mrs r0, control \n" /* Obtain current control value. */
|
||||||
" movs r1, #1 \n" /* r1 = 1. */
|
" movs r1, #1 \n" /* r1 = 1. */
|
||||||
" orrs r0, r1 \n" /* Set nPRIV bit. */
|
" orrs r0, r1 \n" /* Set nPRIV bit. */
|
||||||
|
@ -1414,15 +1359,15 @@ void vSystemCallExit( uint32_t * pulSystemCallStack, uint32_t ulLR ) /* PRIVILEG
|
||||||
::: "r0", "r1", "memory"
|
::: "r0", "r1", "memory"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
#endif /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
#if ( configENABLE_MPU == 1 )
|
#if ( configENABLE_MPU == 1 )
|
||||||
|
|
||||||
BaseType_t xPortIsTaskPrivileged( void ) /* PRIVILEGED_FUNCTION */
|
BaseType_t xPortIsTaskPrivileged( void ) /* PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
BaseType_t xTaskIsPrivileged = pdFALSE;
|
BaseType_t xTaskIsPrivileged = pdFALSE;
|
||||||
const xMPU_SETTINGS * xTaskMpuSettings = xTaskGetMPUSettings( NULL ); /* Calling task's MPU settings. */
|
const xMPU_SETTINGS * xTaskMpuSettings = xTaskGetMPUSettings( NULL ); /* Calling task's MPU settings. */
|
||||||
|
|
||||||
|
@ -1432,20 +1377,20 @@ BaseType_t xPortIsTaskPrivileged( void ) /* PRIVILEGED_FUNCTION */
|
||||||
}
|
}
|
||||||
|
|
||||||
return xTaskIsPrivileged;
|
return xTaskIsPrivileged;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* configENABLE_MPU == 1 */
|
#endif /* configENABLE_MPU == 1 */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
#if( configENABLE_MPU == 1 )
|
#if ( configENABLE_MPU == 1 )
|
||||||
|
|
||||||
StackType_t * pxPortInitialiseStack( StackType_t * pxTopOfStack,
|
StackType_t * pxPortInitialiseStack( StackType_t * pxTopOfStack,
|
||||||
StackType_t * pxEndOfStack,
|
StackType_t * pxEndOfStack,
|
||||||
TaskFunction_t pxCode,
|
TaskFunction_t pxCode,
|
||||||
void * pvParameters,
|
void * pvParameters,
|
||||||
BaseType_t xRunPrivileged,
|
BaseType_t xRunPrivileged,
|
||||||
xMPU_SETTINGS * xMPUSettings ) /* PRIVILEGED_FUNCTION */
|
xMPU_SETTINGS * xMPUSettings ) /* PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
uint32_t ulIndex = 0;
|
uint32_t ulIndex = 0;
|
||||||
|
|
||||||
xMPUSettings->ulContext[ ulIndex ] = 0x04040404; /* r4. */
|
xMPUSettings->ulContext[ ulIndex ] = 0x04040404; /* r4. */
|
||||||
|
@ -1525,15 +1470,15 @@ StackType_t * pxPortInitialiseStack( StackType_t * pxTopOfStack,
|
||||||
#endif /* configUSE_MPU_WRAPPERS_V1 == 0 */
|
#endif /* configUSE_MPU_WRAPPERS_V1 == 0 */
|
||||||
|
|
||||||
return &( xMPUSettings->ulContext[ ulIndex ] );
|
return &( xMPUSettings->ulContext[ ulIndex ] );
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* configENABLE_MPU */
|
#else /* configENABLE_MPU */
|
||||||
|
|
||||||
StackType_t * pxPortInitialiseStack( StackType_t * pxTopOfStack,
|
StackType_t * pxPortInitialiseStack( StackType_t * pxTopOfStack,
|
||||||
StackType_t * pxEndOfStack,
|
StackType_t * pxEndOfStack,
|
||||||
TaskFunction_t pxCode,
|
TaskFunction_t pxCode,
|
||||||
void * pvParameters ) /* PRIVILEGED_FUNCTION */
|
void * pvParameters ) /* PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
/* Simulate the stack frame as it would be created by a context switch
|
/* Simulate the stack frame as it would be created by a context switch
|
||||||
* interrupt. */
|
* interrupt. */
|
||||||
#if ( portPRELOAD_REGISTERS == 0 )
|
#if ( portPRELOAD_REGISTERS == 0 )
|
||||||
|
@ -1607,7 +1552,7 @@ StackType_t * pxPortInitialiseStack( StackType_t * pxTopOfStack,
|
||||||
#endif /* portPRELOAD_REGISTERS */
|
#endif /* portPRELOAD_REGISTERS */
|
||||||
|
|
||||||
return pxTopOfStack;
|
return pxTopOfStack;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* configENABLE_MPU */
|
#endif /* configENABLE_MPU */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
@ -1715,6 +1660,12 @@ BaseType_t xPortStartScheduler( void ) /* PRIVILEGED_FUNCTION */
|
||||||
/* Initialize the critical nesting count ready for the first task. */
|
/* Initialize the critical nesting count ready for the first task. */
|
||||||
ulCriticalNesting = 0;
|
ulCriticalNesting = 0;
|
||||||
|
|
||||||
|
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) && ( configENABLE_ACCESS_CONTROL_LIST == 1 ) )
|
||||||
|
{
|
||||||
|
xSchedulerRunning = pdTRUE;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Start the first task. */
|
/* Start the first task. */
|
||||||
vStartFirstTask();
|
vStartFirstTask();
|
||||||
|
|
||||||
|
@ -1750,7 +1701,6 @@ void vPortEndScheduler( void ) /* PRIVILEGED_FUNCTION */
|
||||||
int32_t lIndex = 0;
|
int32_t lIndex = 0;
|
||||||
|
|
||||||
#if defined( __ARMCC_VERSION )
|
#if defined( __ARMCC_VERSION )
|
||||||
|
|
||||||
/* Declaration when these variable are defined in code instead of being
|
/* Declaration when these variable are defined in code instead of being
|
||||||
* exported from linker scripts. */
|
* exported from linker scripts. */
|
||||||
extern uint32_t * __privileged_sram_start__;
|
extern uint32_t * __privileged_sram_start__;
|
||||||
|
@ -1996,3 +1946,98 @@ BaseType_t xPortIsInsideInterrupt( void )
|
||||||
|
|
||||||
#endif /* #if ( ( configASSERT_DEFINED == 1 ) && ( portHAS_BASEPRI == 1 ) ) */
|
#endif /* #if ( ( configASSERT_DEFINED == 1 ) && ( portHAS_BASEPRI == 1 ) ) */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) && ( configENABLE_ACCESS_CONTROL_LIST == 1 ) )
|
||||||
|
|
||||||
|
void vPortGrantAccessToKernelObject( TaskHandle_t xInternalTaskHandle,
|
||||||
|
int32_t lInternalIndexOfKernelObject ) /* PRIVILEGED_FUNCTION */
|
||||||
|
{
|
||||||
|
uint32_t ulAccessControlListEntryIndex, ulAccessControlListEntryBit;
|
||||||
|
xMPU_SETTINGS * xTaskMpuSettings;
|
||||||
|
|
||||||
|
ulAccessControlListEntryIndex = ( ( uint32_t ) lInternalIndexOfKernelObject / portACL_ENTRY_SIZE_BITS );
|
||||||
|
ulAccessControlListEntryBit = ( ( uint32_t ) lInternalIndexOfKernelObject % portACL_ENTRY_SIZE_BITS );
|
||||||
|
|
||||||
|
xTaskMpuSettings = xTaskGetMPUSettings( xInternalTaskHandle );
|
||||||
|
|
||||||
|
xTaskMpuSettings->ulAccessControlList[ ulAccessControlListEntryIndex ] |= ( 1U << ulAccessControlListEntryBit );
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* #if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) && ( configENABLE_ACCESS_CONTROL_LIST == 1 ) ) */
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) && ( configENABLE_ACCESS_CONTROL_LIST == 1 ) )
|
||||||
|
|
||||||
|
void vPortRevokeAccessToKernelObject( TaskHandle_t xInternalTaskHandle,
|
||||||
|
int32_t lInternalIndexOfKernelObject ) /* PRIVILEGED_FUNCTION */
|
||||||
|
{
|
||||||
|
uint32_t ulAccessControlListEntryIndex, ulAccessControlListEntryBit;
|
||||||
|
xMPU_SETTINGS * xTaskMpuSettings;
|
||||||
|
|
||||||
|
ulAccessControlListEntryIndex = ( ( uint32_t ) lInternalIndexOfKernelObject / portACL_ENTRY_SIZE_BITS );
|
||||||
|
ulAccessControlListEntryBit = ( ( uint32_t ) lInternalIndexOfKernelObject % portACL_ENTRY_SIZE_BITS );
|
||||||
|
|
||||||
|
xTaskMpuSettings = xTaskGetMPUSettings( xInternalTaskHandle );
|
||||||
|
|
||||||
|
xTaskMpuSettings->ulAccessControlList[ ulAccessControlListEntryIndex ] &= ~( 1U << ulAccessControlListEntryBit );
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* #if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) && ( configENABLE_ACCESS_CONTROL_LIST == 1 ) ) */
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
||||||
|
|
||||||
|
#if ( configENABLE_ACCESS_CONTROL_LIST == 1 )
|
||||||
|
|
||||||
|
BaseType_t xPortIsAuthorizedToAccessKernelObject( int32_t lInternalIndexOfKernelObject ) /* PRIVILEGED_FUNCTION */
|
||||||
|
{
|
||||||
|
uint32_t ulAccessControlListEntryIndex, ulAccessControlListEntryBit;
|
||||||
|
BaseType_t xAccessGranted = pdFALSE;
|
||||||
|
const xMPU_SETTINGS * xTaskMpuSettings;
|
||||||
|
|
||||||
|
if( xSchedulerRunning == pdFALSE )
|
||||||
|
{
|
||||||
|
/* Grant access to all the kernel objects before the scheduler
|
||||||
|
* is started. It is necessary because there is no task running
|
||||||
|
* yet and therefore, we cannot use the permissions of any
|
||||||
|
* task. */
|
||||||
|
xAccessGranted = pdTRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
xTaskMpuSettings = xTaskGetMPUSettings( NULL ); /* Calling task's MPU settings. */
|
||||||
|
|
||||||
|
ulAccessControlListEntryIndex = ( ( uint32_t ) lInternalIndexOfKernelObject / portACL_ENTRY_SIZE_BITS );
|
||||||
|
ulAccessControlListEntryBit = ( ( uint32_t ) lInternalIndexOfKernelObject % portACL_ENTRY_SIZE_BITS );
|
||||||
|
|
||||||
|
if( ( xTaskMpuSettings->ulTaskFlags & portTASK_IS_PRIVILEGED_FLAG ) == portTASK_IS_PRIVILEGED_FLAG )
|
||||||
|
{
|
||||||
|
xAccessGranted = pdTRUE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if( ( xTaskMpuSettings->ulAccessControlList[ ulAccessControlListEntryIndex ] & ( 1U << ulAccessControlListEntryBit ) ) != 0 )
|
||||||
|
{
|
||||||
|
xAccessGranted = pdTRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return xAccessGranted;
|
||||||
|
}
|
||||||
|
|
||||||
|
#else /* #if ( configENABLE_ACCESS_CONTROL_LIST == 1 ) */
|
||||||
|
|
||||||
|
BaseType_t xPortIsAuthorizedToAccessKernelObject( int32_t lInternalIndexOfKernelObject ) /* PRIVILEGED_FUNCTION */
|
||||||
|
{
|
||||||
|
( void ) lInternalIndexOfKernelObject;
|
||||||
|
|
||||||
|
/* If Access Control List feature is not used, all the tasks have
|
||||||
|
* access to all the kernel objects. */
|
||||||
|
return pdTRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif /* #if ( configENABLE_ACCESS_CONTROL_LIST == 1 ) */
|
||||||
|
|
||||||
|
#endif /* #if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) ) */
|
||||||
|
/*-----------------------------------------------------------*/
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
@ -36,6 +36,9 @@
|
||||||
/* Portasm includes. */
|
/* Portasm includes. */
|
||||||
#include "portasm.h"
|
#include "portasm.h"
|
||||||
|
|
||||||
|
/* System call numbers includes. */
|
||||||
|
#include "mpu_syscall_numbers.h"
|
||||||
|
|
||||||
/* MPU_WRAPPERS_INCLUDED_FROM_API_FILE is needed to be defined only for the
|
/* MPU_WRAPPERS_INCLUDED_FROM_API_FILE is needed to be defined only for the
|
||||||
* header files. */
|
* header files. */
|
||||||
#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE
|
#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE
|
||||||
|
@ -46,8 +49,8 @@
|
||||||
|
|
||||||
#if ( configENABLE_MPU == 1 )
|
#if ( configENABLE_MPU == 1 )
|
||||||
|
|
||||||
void vRestoreContextOfFirstTask( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
void vRestoreContextOfFirstTask( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
|
@ -143,36 +146,36 @@ void vRestoreContextOfFirstTask( void ) /* __attribute__ (( naked )) PRIVILEGED_
|
||||||
" xRNRConst2: .word 0xe000ed98 \n"
|
" xRNRConst2: .word 0xe000ed98 \n"
|
||||||
" xRBARConst2: .word 0xe000ed9c \n"
|
" xRBARConst2: .word 0xe000ed9c \n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* configENABLE_MPU */
|
#else /* configENABLE_MPU */
|
||||||
|
|
||||||
void vRestoreContextOfFirstTask( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
void vRestoreContextOfFirstTask( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" ldr r2, pxCurrentTCBConst2 \n"/* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
" ldr r2, pxCurrentTCBConst2 \n" /* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
||||||
" ldr r3, [r2] \n"/* Read pxCurrentTCB. */
|
" ldr r3, [r2] \n" /* Read pxCurrentTCB. */
|
||||||
" ldr r0, [r3] \n"/* Read top of stack from TCB - The first item in pxCurrentTCB is the task top of stack. */
|
" ldr r0, [r3] \n" /* Read top of stack from TCB - The first item in pxCurrentTCB is the task top of stack. */
|
||||||
" \n"
|
" \n"
|
||||||
" ldm r0!, {r1-r3} \n"/* Read from stack - r1 = xSecureContext, r2 = PSPLIM and r3 = EXC_RETURN. */
|
" ldm r0!, {r1-r3} \n" /* Read from stack - r1 = xSecureContext, r2 = PSPLIM and r3 = EXC_RETURN. */
|
||||||
" ldr r4, xSecureContextConst2 \n"
|
" ldr r4, xSecureContextConst2 \n"
|
||||||
" str r1, [r4] \n"/* Set xSecureContext to this task's value for the same. */
|
" str r1, [r4] \n" /* Set xSecureContext to this task's value for the same. */
|
||||||
" msr psplim, r2 \n"/* Set this task's PSPLIM value. */
|
" msr psplim, r2 \n" /* Set this task's PSPLIM value. */
|
||||||
" movs r1, #2 \n"/* r1 = 2. */
|
" movs r1, #2 \n" /* r1 = 2. */
|
||||||
" msr CONTROL, r1 \n"/* Switch to use PSP in the thread mode. */
|
" msr CONTROL, r1 \n" /* Switch to use PSP in the thread mode. */
|
||||||
" adds r0, #32 \n"/* Discard everything up to r0. */
|
" adds r0, #32 \n" /* Discard everything up to r0. */
|
||||||
" msr psp, r0 \n"/* This is now the new top of stack to use in the task. */
|
" msr psp, r0 \n" /* This is now the new top of stack to use in the task. */
|
||||||
" isb \n"
|
" isb \n"
|
||||||
" bx r3 \n"/* Finally, branch to EXC_RETURN. */
|
" bx r3 \n" /* Finally, branch to EXC_RETURN. */
|
||||||
" \n"
|
" \n"
|
||||||
" .align 4 \n"
|
" .align 4 \n"
|
||||||
"pxCurrentTCBConst2: .word pxCurrentTCB \n"
|
"pxCurrentTCBConst2: .word pxCurrentTCB \n"
|
||||||
"xSecureContextConst2: .word xSecureContext \n"
|
"xSecureContextConst2: .word xSecureContext \n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* configENABLE_MPU */
|
#endif /* configENABLE_MPU */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
@ -183,15 +186,15 @@ BaseType_t xIsPrivileged( void ) /* __attribute__ (( naked )) */
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" mrs r0, control \n"/* r0 = CONTROL. */
|
" mrs r0, control \n" /* r0 = CONTROL. */
|
||||||
" movs r1, #1 \n"/* r1 = 1. */
|
" movs r1, #1 \n" /* r1 = 1. */
|
||||||
" tst r0, r1 \n"/* Perform r0 & r1 (bitwise AND) and update the conditions flag. */
|
" tst r0, r1 \n" /* Perform r0 & r1 (bitwise AND) and update the conditions flag. */
|
||||||
" beq running_privileged \n"/* If the result of previous AND operation was 0, branch. */
|
" beq running_privileged \n" /* If the result of previous AND operation was 0, branch. */
|
||||||
" movs r0, #0 \n"/* CONTROL[0]!=0. Return false to indicate that the processor is not privileged. */
|
" movs r0, #0 \n" /* CONTROL[0]!=0. Return false to indicate that the processor is not privileged. */
|
||||||
" bx lr \n"/* Return. */
|
" bx lr \n" /* Return. */
|
||||||
" running_privileged: \n"
|
" running_privileged: \n"
|
||||||
" movs r0, #1 \n"/* CONTROL[0]==0. Return true to indicate that the processor is privileged. */
|
" movs r0, #1 \n" /* CONTROL[0]==0. Return true to indicate that the processor is privileged. */
|
||||||
" bx lr \n"/* Return. */
|
" bx lr \n" /* Return. */
|
||||||
" \n"
|
" \n"
|
||||||
" .align 4 \n"
|
" .align 4 \n"
|
||||||
::: "r0", "r1", "memory"
|
::: "r0", "r1", "memory"
|
||||||
|
@ -205,11 +208,11 @@ void vRaisePrivilege( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" mrs r0, control \n"/* Read the CONTROL register. */
|
" mrs r0, control \n" /* Read the CONTROL register. */
|
||||||
" movs r1, #1 \n"/* r1 = 1. */
|
" movs r1, #1 \n" /* r1 = 1. */
|
||||||
" bics r0, r1 \n"/* Clear the bit 0. */
|
" bics r0, r1 \n" /* Clear the bit 0. */
|
||||||
" msr control, r0 \n"/* Write back the new CONTROL value. */
|
" msr control, r0 \n" /* Write back the new CONTROL value. */
|
||||||
" bx lr \n"/* Return to the caller. */
|
" bx lr \n" /* Return to the caller. */
|
||||||
::: "r0", "r1", "memory"
|
::: "r0", "r1", "memory"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -221,11 +224,11 @@ void vResetPrivilege( void ) /* __attribute__ (( naked )) */
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" mrs r0, control \n"/* r0 = CONTROL. */
|
" mrs r0, control \n" /* r0 = CONTROL. */
|
||||||
" movs r1, #1 \n"/* r1 = 1. */
|
" movs r1, #1 \n" /* r1 = 1. */
|
||||||
" orrs r0, r1 \n"/* r0 = r0 | r1. */
|
" orrs r0, r1 \n" /* r0 = r0 | r1. */
|
||||||
" msr control, r0 \n"/* CONTROL = r0. */
|
" msr control, r0 \n" /* CONTROL = r0. */
|
||||||
" bx lr \n"/* Return to the caller. */
|
" bx lr \n" /* Return to the caller. */
|
||||||
::: "r0", "r1", "memory"
|
::: "r0", "r1", "memory"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -237,14 +240,14 @@ void vStartFirstTask( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" ldr r0, xVTORConst \n"/* Use the NVIC offset register to locate the stack. */
|
" ldr r0, xVTORConst \n" /* Use the NVIC offset register to locate the stack. */
|
||||||
" ldr r0, [r0] \n"/* Read the VTOR register which gives the address of vector table. */
|
" ldr r0, [r0] \n" /* Read the VTOR register which gives the address of vector table. */
|
||||||
" ldr r0, [r0] \n"/* The first entry in vector table is stack pointer. */
|
" ldr r0, [r0] \n" /* The first entry in vector table is stack pointer. */
|
||||||
" msr msp, r0 \n"/* Set the MSP back to the start of the stack. */
|
" msr msp, r0 \n" /* Set the MSP back to the start of the stack. */
|
||||||
" cpsie i \n"/* Globally enable interrupts. */
|
" cpsie i \n" /* Globally enable interrupts. */
|
||||||
" dsb \n"
|
" dsb \n"
|
||||||
" isb \n"
|
" isb \n"
|
||||||
" svc %0 \n"/* System call to start the first task. */
|
" svc %0 \n" /* System call to start the first task. */
|
||||||
" nop \n"
|
" nop \n"
|
||||||
" \n"
|
" \n"
|
||||||
" .align 4 \n"
|
" .align 4 \n"
|
||||||
|
@ -283,8 +286,8 @@ void vClearInterruptMask( __attribute__( ( unused ) ) uint32_t ulMask ) /* __att
|
||||||
|
|
||||||
#if ( configENABLE_MPU == 1 )
|
#if ( configENABLE_MPU == 1 )
|
||||||
|
|
||||||
void PendSV_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
void PendSV_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
|
@ -438,111 +441,110 @@ void PendSV_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
" xRNRConst: .word 0xe000ed98 \n"
|
" xRNRConst: .word 0xe000ed98 \n"
|
||||||
" xRBARConst: .word 0xe000ed9c \n"
|
" xRBARConst: .word 0xe000ed9c \n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* configENABLE_MPU */
|
#else /* configENABLE_MPU */
|
||||||
|
|
||||||
void PendSV_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
void PendSV_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" .extern SecureContext_SaveContext \n"
|
" .extern SecureContext_SaveContext \n"
|
||||||
" .extern SecureContext_LoadContext \n"
|
" .extern SecureContext_LoadContext \n"
|
||||||
" \n"
|
" \n"
|
||||||
" ldr r3, xSecureContextConst \n"/* Read the location of xSecureContext i.e. &( xSecureContext ). */
|
" ldr r3, xSecureContextConst \n" /* Read the location of xSecureContext i.e. &( xSecureContext ). */
|
||||||
" ldr r0, [r3] \n"/* Read xSecureContext - Value of xSecureContext must be in r0 as it is used as a parameter later. */
|
" ldr r0, [r3] \n" /* Read xSecureContext - Value of xSecureContext must be in r0 as it is used as a parameter later. */
|
||||||
" ldr r3, pxCurrentTCBConst \n"/* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
" ldr r3, pxCurrentTCBConst \n" /* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
||||||
" ldr r1, [r3] \n"/* Read pxCurrentTCB - Value of pxCurrentTCB must be in r1 as it is used as a parameter later.*/
|
" ldr r1, [r3] \n" /* Read pxCurrentTCB - Value of pxCurrentTCB must be in r1 as it is used as a parameter later.*/
|
||||||
" mrs r2, psp \n"/* Read PSP in r2. */
|
" mrs r2, psp \n" /* Read PSP in r2. */
|
||||||
" \n"
|
" \n"
|
||||||
" cbz r0, save_ns_context \n"/* No secure context to save. */
|
" cbz r0, save_ns_context \n" /* No secure context to save. */
|
||||||
" push {r0-r2, r14} \n"
|
" push {r0-r2, r14} \n"
|
||||||
" bl SecureContext_SaveContext \n"/* Params are in r0 and r1. r0 = xSecureContext and r1 = pxCurrentTCB. */
|
" bl SecureContext_SaveContext \n" /* Params are in r0 and r1. r0 = xSecureContext and r1 = pxCurrentTCB. */
|
||||||
" pop {r0-r3} \n"/* LR is now in r3. */
|
" pop {r0-r3} \n" /* LR is now in r3. */
|
||||||
" mov lr, r3 \n"/* LR = r3. */
|
" mov lr, r3 \n" /* LR = r3. */
|
||||||
" lsls r1, r3, #25 \n"/* r1 = r3 << 25. Bit[6] of EXC_RETURN is 1 if secure stack was used, 0 if non-secure stack was used to store stack frame. */
|
" lsls r1, r3, #25 \n" /* r1 = r3 << 25. Bit[6] of EXC_RETURN is 1 if secure stack was used, 0 if non-secure stack was used to store stack frame. */
|
||||||
" bpl save_ns_context \n"/* bpl - branch if positive or zero. If r1 >= 0 ==> Bit[6] in EXC_RETURN is 0 i.e. non-secure stack was used. */
|
" bpl save_ns_context \n" /* bpl - branch if positive or zero. If r1 >= 0 ==> Bit[6] in EXC_RETURN is 0 i.e. non-secure stack was used. */
|
||||||
" ldr r3, pxCurrentTCBConst \n"/* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
" ldr r3, pxCurrentTCBConst \n" /* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
||||||
" ldr r1, [r3] \n"/* Read pxCurrentTCB. */
|
" ldr r1, [r3] \n" /* Read pxCurrentTCB. */
|
||||||
" subs r2, r2, #12 \n"/* Make space for xSecureContext, PSPLIM and LR on the stack. */
|
" subs r2, r2, #12 \n" /* Make space for xSecureContext, PSPLIM and LR on the stack. */
|
||||||
" str r2, [r1] \n"/* Save the new top of stack in TCB. */
|
" str r2, [r1] \n" /* Save the new top of stack in TCB. */
|
||||||
" mrs r1, psplim \n"/* r1 = PSPLIM. */
|
" mrs r1, psplim \n" /* r1 = PSPLIM. */
|
||||||
" mov r3, lr \n"/* r3 = LR/EXC_RETURN. */
|
" mov r3, lr \n" /* r3 = LR/EXC_RETURN. */
|
||||||
" stmia r2!, {r0, r1, r3} \n"/* Store xSecureContext, PSPLIM and LR on the stack. */
|
" stmia r2!, {r0, r1, r3} \n" /* Store xSecureContext, PSPLIM and LR on the stack. */
|
||||||
" b select_next_task \n"
|
" b select_next_task \n"
|
||||||
" \n"
|
" \n"
|
||||||
" save_ns_context: \n"
|
" save_ns_context: \n"
|
||||||
" ldr r3, pxCurrentTCBConst \n"/* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
" ldr r3, pxCurrentTCBConst \n" /* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
||||||
" ldr r1, [r3] \n"/* Read pxCurrentTCB. */
|
" ldr r1, [r3] \n" /* Read pxCurrentTCB. */
|
||||||
" subs r2, r2, #44 \n"/* Make space for xSecureContext, PSPLIM, LR and the remaining registers on the stack. */
|
" subs r2, r2, #44 \n" /* Make space for xSecureContext, PSPLIM, LR and the remaining registers on the stack. */
|
||||||
" str r2, [r1] \n"/* Save the new top of stack in TCB. */
|
" str r2, [r1] \n" /* Save the new top of stack in TCB. */
|
||||||
" mrs r1, psplim \n"/* r1 = PSPLIM. */
|
" mrs r1, psplim \n" /* r1 = PSPLIM. */
|
||||||
" mov r3, lr \n"/* r3 = LR/EXC_RETURN. */
|
" mov r3, lr \n" /* r3 = LR/EXC_RETURN. */
|
||||||
" stmia r2!, {r0, r1, r3-r7} \n"/* Store xSecureContext, PSPLIM, LR and the low registers that are not saved automatically. */
|
" stmia r2!, {r0, r1, r3-r7} \n" /* Store xSecureContext, PSPLIM, LR and the low registers that are not saved automatically. */
|
||||||
" mov r4, r8 \n"/* r4 = r8. */
|
" mov r4, r8 \n" /* r4 = r8. */
|
||||||
" mov r5, r9 \n"/* r5 = r9. */
|
" mov r5, r9 \n" /* r5 = r9. */
|
||||||
" mov r6, r10 \n"/* r6 = r10. */
|
" mov r6, r10 \n" /* r6 = r10. */
|
||||||
" mov r7, r11 \n"/* r7 = r11. */
|
" mov r7, r11 \n" /* r7 = r11. */
|
||||||
" stmia r2!, {r4-r7} \n"/* Store the high registers that are not saved automatically. */
|
" stmia r2!, {r4-r7} \n" /* Store the high registers that are not saved automatically. */
|
||||||
" \n"
|
" \n"
|
||||||
" select_next_task: \n"
|
" select_next_task: \n"
|
||||||
" cpsid i \n"
|
" cpsid i \n"
|
||||||
" bl vTaskSwitchContext \n"
|
" bl vTaskSwitchContext \n"
|
||||||
" cpsie i \n"
|
" cpsie i \n"
|
||||||
" \n"
|
" \n"
|
||||||
" ldr r3, pxCurrentTCBConst \n"/* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
" ldr r3, pxCurrentTCBConst \n" /* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
||||||
" ldr r1, [r3] \n"/* Read pxCurrentTCB. */
|
" ldr r1, [r3] \n" /* Read pxCurrentTCB. */
|
||||||
" ldr r2, [r1] \n"/* The first item in pxCurrentTCB is the task top of stack. r2 now points to the top of stack. */
|
" ldr r2, [r1] \n" /* The first item in pxCurrentTCB is the task top of stack. r2 now points to the top of stack. */
|
||||||
" \n"
|
" \n"
|
||||||
" ldmia r2!, {r0, r1, r4} \n"/* Read from stack - r0 = xSecureContext, r1 = PSPLIM and r4 = LR. */
|
" ldmia r2!, {r0, r1, r4} \n" /* Read from stack - r0 = xSecureContext, r1 = PSPLIM and r4 = LR. */
|
||||||
" msr psplim, r1 \n"/* Restore the PSPLIM register value for the task. */
|
" msr psplim, r1 \n" /* Restore the PSPLIM register value for the task. */
|
||||||
" mov lr, r4 \n"/* LR = r4. */
|
" mov lr, r4 \n" /* LR = r4. */
|
||||||
" ldr r3, xSecureContextConst \n"/* Read the location of xSecureContext i.e. &( xSecureContext ). */
|
" ldr r3, xSecureContextConst \n" /* Read the location of xSecureContext i.e. &( xSecureContext ). */
|
||||||
" str r0, [r3] \n"/* Restore the task's xSecureContext. */
|
" str r0, [r3] \n" /* Restore the task's xSecureContext. */
|
||||||
" cbz r0, restore_ns_context \n"/* If there is no secure context for the task, restore the non-secure context. */
|
" cbz r0, restore_ns_context \n" /* If there is no secure context for the task, restore the non-secure context. */
|
||||||
" ldr r3, pxCurrentTCBConst \n"/* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
" ldr r3, pxCurrentTCBConst \n" /* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
||||||
" ldr r1, [r3] \n"/* Read pxCurrentTCB. */
|
" ldr r1, [r3] \n" /* Read pxCurrentTCB. */
|
||||||
" push {r2, r4} \n"
|
" push {r2, r4} \n"
|
||||||
" bl SecureContext_LoadContext \n"/* Restore the secure context. Params are in r0 and r1. r0 = xSecureContext and r1 = pxCurrentTCB. */
|
" bl SecureContext_LoadContext \n" /* Restore the secure context. Params are in r0 and r1. r0 = xSecureContext and r1 = pxCurrentTCB. */
|
||||||
" pop {r2, r4} \n"
|
" pop {r2, r4} \n"
|
||||||
" mov lr, r4 \n"/* LR = r4. */
|
" mov lr, r4 \n" /* LR = r4. */
|
||||||
" lsls r1, r4, #25 \n"/* r1 = r4 << 25. Bit[6] of EXC_RETURN is 1 if secure stack was used, 0 if non-secure stack was used to store stack frame. */
|
" lsls r1, r4, #25 \n" /* r1 = r4 << 25. Bit[6] of EXC_RETURN is 1 if secure stack was used, 0 if non-secure stack was used to store stack frame. */
|
||||||
" bpl restore_ns_context \n"/* bpl - branch if positive or zero. If r1 >= 0 ==> Bit[6] in EXC_RETURN is 0 i.e. non-secure stack was used. */
|
" bpl restore_ns_context \n" /* bpl - branch if positive or zero. If r1 >= 0 ==> Bit[6] in EXC_RETURN is 0 i.e. non-secure stack was used. */
|
||||||
" msr psp, r2 \n"/* Remember the new top of stack for the task. */
|
" msr psp, r2 \n" /* Remember the new top of stack for the task. */
|
||||||
" bx lr \n"
|
" bx lr \n"
|
||||||
" \n"
|
" \n"
|
||||||
" restore_ns_context: \n"
|
" restore_ns_context: \n"
|
||||||
" adds r2, r2, #16 \n"/* Move to the high registers. */
|
" adds r2, r2, #16 \n" /* Move to the high registers. */
|
||||||
" ldmia r2!, {r4-r7} \n"/* Restore the high registers that are not automatically restored. */
|
" ldmia r2!, {r4-r7} \n" /* Restore the high registers that are not automatically restored. */
|
||||||
" mov r8, r4 \n"/* r8 = r4. */
|
" mov r8, r4 \n" /* r8 = r4. */
|
||||||
" mov r9, r5 \n"/* r9 = r5. */
|
" mov r9, r5 \n" /* r9 = r5. */
|
||||||
" mov r10, r6 \n"/* r10 = r6. */
|
" mov r10, r6 \n" /* r10 = r6. */
|
||||||
" mov r11, r7 \n"/* r11 = r7. */
|
" mov r11, r7 \n" /* r11 = r7. */
|
||||||
" msr psp, r2 \n"/* Remember the new top of stack for the task. */
|
" msr psp, r2 \n" /* Remember the new top of stack for the task. */
|
||||||
" subs r2, r2, #32 \n"/* Go back to the low registers. */
|
" subs r2, r2, #32 \n" /* Go back to the low registers. */
|
||||||
" ldmia r2!, {r4-r7} \n"/* Restore the low registers that are not automatically restored. */
|
" ldmia r2!, {r4-r7} \n" /* Restore the low registers that are not automatically restored. */
|
||||||
" bx lr \n"
|
" bx lr \n"
|
||||||
" \n"
|
" \n"
|
||||||
" .align 4 \n"
|
" .align 4 \n"
|
||||||
"pxCurrentTCBConst: .word pxCurrentTCB \n"
|
"pxCurrentTCBConst: .word pxCurrentTCB \n"
|
||||||
"xSecureContextConst: .word xSecureContext \n"
|
"xSecureContextConst: .word xSecureContext \n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* configENABLE_MPU */
|
#endif /* configENABLE_MPU */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
||||||
|
|
||||||
void SVC_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
void SVC_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
".syntax unified \n"
|
".syntax unified \n"
|
||||||
".extern vPortSVCHandler_C \n"
|
".extern vPortSVCHandler_C \n"
|
||||||
".extern vSystemCallEnter \n"
|
".extern vSystemCallEnter \n"
|
||||||
".extern vSystemCallEnter_1 \n"
|
|
||||||
".extern vSystemCallExit \n"
|
".extern vSystemCallExit \n"
|
||||||
" \n"
|
" \n"
|
||||||
"movs r0, #4 \n"
|
"movs r0, #4 \n"
|
||||||
|
@ -557,34 +559,30 @@ void SVC_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
" b route_svc \n"
|
" b route_svc \n"
|
||||||
" \n"
|
" \n"
|
||||||
"route_svc: \n"
|
"route_svc: \n"
|
||||||
" ldr r2, [r0, #24] \n"
|
" ldr r3, [r0, #24] \n"
|
||||||
" subs r2, #2 \n"
|
" subs r3, #2 \n"
|
||||||
" ldrb r3, [r2, #0] \n"
|
" ldrb r2, [r3, #0] \n"
|
||||||
" cmp r3, %0 \n"
|
" cmp r2, %0 \n"
|
||||||
" beq system_call_enter \n"
|
" blt system_call_enter \n"
|
||||||
" cmp r3, %1 \n"
|
" cmp r2, %1 \n"
|
||||||
" beq system_call_enter_1 \n"
|
|
||||||
" cmp r3, %2 \n"
|
|
||||||
" beq system_call_exit \n"
|
" beq system_call_exit \n"
|
||||||
" b vPortSVCHandler_C \n"
|
" b vPortSVCHandler_C \n"
|
||||||
" \n"
|
" \n"
|
||||||
"system_call_enter: \n"
|
"system_call_enter: \n"
|
||||||
" b vSystemCallEnter \n"
|
" b vSystemCallEnter \n"
|
||||||
"system_call_enter_1: \n"
|
|
||||||
" b vSystemCallEnter_1 \n"
|
|
||||||
"system_call_exit: \n"
|
"system_call_exit: \n"
|
||||||
" b vSystemCallExit \n"
|
" b vSystemCallExit \n"
|
||||||
" \n"
|
" \n"
|
||||||
: /* No outputs. */
|
: /* No outputs. */
|
||||||
:"i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT )
|
: "i" ( NUM_SYSTEM_CALLS ), "i" ( portSVC_SYSTEM_CALL_EXIT )
|
||||||
: "r0", "r1", "r2", "r3", "memory"
|
: "r0", "r1", "r2", "r3", "memory"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
#else /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
||||||
|
|
||||||
void SVC_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
void SVC_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
|
@ -604,7 +602,7 @@ void SVC_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
" .align 4 \n"
|
" .align 4 \n"
|
||||||
"svchandler_address_const: .word vPortSVCHandler_C \n"
|
"svchandler_address_const: .word vPortSVCHandler_C \n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
#endif /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
@ -615,8 +613,8 @@ void vPortAllocateSecureContext( uint32_t ulSecureStackSize ) /* __attribute__ (
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" svc %0 \n"/* Secure context is allocated in the supervisor call. */
|
" svc %0 \n" /* Secure context is allocated in the supervisor call. */
|
||||||
" bx lr \n"/* Return. */
|
" bx lr \n" /* Return. */
|
||||||
::"i" ( portSVC_ALLOCATE_SECURE_CONTEXT ) : "memory"
|
::"i" ( portSVC_ALLOCATE_SECURE_CONTEXT ) : "memory"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -628,14 +626,14 @@ void vPortFreeSecureContext( uint32_t * pulTCB ) /* __attribute__ (( naked )) PR
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" ldr r2, [r0] \n"/* The first item in the TCB is the top of the stack. */
|
" ldr r2, [r0] \n" /* The first item in the TCB is the top of the stack. */
|
||||||
" ldr r1, [r2] \n"/* The first item on the stack is the task's xSecureContext. */
|
" ldr r1, [r2] \n" /* The first item on the stack is the task's xSecureContext. */
|
||||||
" cmp r1, #0 \n"/* Raise svc if task's xSecureContext is not NULL. */
|
" cmp r1, #0 \n" /* Raise svc if task's xSecureContext is not NULL. */
|
||||||
" bne free_secure_context \n"/* Branch if r1 != 0. */
|
" bne free_secure_context \n" /* Branch if r1 != 0. */
|
||||||
" bx lr \n"/* There is no secure context (xSecureContext is NULL). */
|
" bx lr \n" /* There is no secure context (xSecureContext is NULL). */
|
||||||
" free_secure_context: \n"
|
" free_secure_context: \n"
|
||||||
" svc %0 \n"/* Secure context is freed in the supervisor call. */
|
" svc %0 \n" /* Secure context is freed in the supervisor call. */
|
||||||
" bx lr \n"/* Return. */
|
" bx lr \n" /* Return. */
|
||||||
::"i" ( portSVC_FREE_SECURE_CONTEXT ) : "memory"
|
::"i" ( portSVC_FREE_SECURE_CONTEXT ) : "memory"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
@ -36,6 +36,9 @@
|
||||||
/* Portasm includes. */
|
/* Portasm includes. */
|
||||||
#include "portasm.h"
|
#include "portasm.h"
|
||||||
|
|
||||||
|
/* System call numbers includes. */
|
||||||
|
#include "mpu_syscall_numbers.h"
|
||||||
|
|
||||||
/* MPU_WRAPPERS_INCLUDED_FROM_API_FILE is needed to be defined only for the
|
/* MPU_WRAPPERS_INCLUDED_FROM_API_FILE is needed to be defined only for the
|
||||||
* header files. */
|
* header files. */
|
||||||
#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE
|
#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE
|
||||||
|
@ -46,8 +49,8 @@
|
||||||
|
|
||||||
#if ( configENABLE_MPU == 1 )
|
#if ( configENABLE_MPU == 1 )
|
||||||
|
|
||||||
void vRestoreContextOfFirstTask( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
void vRestoreContextOfFirstTask( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
|
@ -140,33 +143,33 @@ void vRestoreContextOfFirstTask( void ) /* __attribute__ (( naked )) PRIVILEGED_
|
||||||
" xRNRConst2: .word 0xe000ed98 \n"
|
" xRNRConst2: .word 0xe000ed98 \n"
|
||||||
" xRBARConst2: .word 0xe000ed9c \n"
|
" xRBARConst2: .word 0xe000ed9c \n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* configENABLE_MPU */
|
#else /* configENABLE_MPU */
|
||||||
|
|
||||||
void vRestoreContextOfFirstTask( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
void vRestoreContextOfFirstTask( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" ldr r2, pxCurrentTCBConst2 \n"/* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
" ldr r2, pxCurrentTCBConst2 \n" /* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
||||||
" ldr r1, [r2] \n"/* Read pxCurrentTCB. */
|
" ldr r1, [r2] \n" /* Read pxCurrentTCB. */
|
||||||
" ldr r0, [r1] \n"/* Read top of stack from TCB - The first item in pxCurrentTCB is the task top of stack. */
|
" ldr r0, [r1] \n" /* Read top of stack from TCB - The first item in pxCurrentTCB is the task top of stack. */
|
||||||
" \n"
|
" \n"
|
||||||
" ldm r0!, {r1-r2} \n"/* Read from stack - r1 = PSPLIM and r2 = EXC_RETURN. */
|
" ldm r0!, {r1-r2} \n" /* Read from stack - r1 = PSPLIM and r2 = EXC_RETURN. */
|
||||||
" msr psplim, r1 \n"/* Set this task's PSPLIM value. */
|
" msr psplim, r1 \n" /* Set this task's PSPLIM value. */
|
||||||
" movs r1, #2 \n"/* r1 = 2. */
|
" movs r1, #2 \n" /* r1 = 2. */
|
||||||
" msr CONTROL, r1 \n"/* Switch to use PSP in the thread mode. */
|
" msr CONTROL, r1 \n" /* Switch to use PSP in the thread mode. */
|
||||||
" adds r0, #32 \n"/* Discard everything up to r0. */
|
" adds r0, #32 \n" /* Discard everything up to r0. */
|
||||||
" msr psp, r0 \n"/* This is now the new top of stack to use in the task. */
|
" msr psp, r0 \n" /* This is now the new top of stack to use in the task. */
|
||||||
" isb \n"
|
" isb \n"
|
||||||
" bx r2 \n"/* Finally, branch to EXC_RETURN. */
|
" bx r2 \n" /* Finally, branch to EXC_RETURN. */
|
||||||
" \n"
|
" \n"
|
||||||
" .align 4 \n"
|
" .align 4 \n"
|
||||||
"pxCurrentTCBConst2: .word pxCurrentTCB \n"
|
"pxCurrentTCBConst2: .word pxCurrentTCB \n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* configENABLE_MPU */
|
#endif /* configENABLE_MPU */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
@ -177,15 +180,15 @@ BaseType_t xIsPrivileged( void ) /* __attribute__ (( naked )) */
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" mrs r0, control \n"/* r0 = CONTROL. */
|
" mrs r0, control \n" /* r0 = CONTROL. */
|
||||||
" movs r1, #1 \n"/* r1 = 1. */
|
" movs r1, #1 \n" /* r1 = 1. */
|
||||||
" tst r0, r1 \n"/* Perform r0 & r1 (bitwise AND) and update the conditions flag. */
|
" tst r0, r1 \n" /* Perform r0 & r1 (bitwise AND) and update the conditions flag. */
|
||||||
" beq running_privileged \n"/* If the result of previous AND operation was 0, branch. */
|
" beq running_privileged \n" /* If the result of previous AND operation was 0, branch. */
|
||||||
" movs r0, #0 \n"/* CONTROL[0]!=0. Return false to indicate that the processor is not privileged. */
|
" movs r0, #0 \n" /* CONTROL[0]!=0. Return false to indicate that the processor is not privileged. */
|
||||||
" bx lr \n"/* Return. */
|
" bx lr \n" /* Return. */
|
||||||
" running_privileged: \n"
|
" running_privileged: \n"
|
||||||
" movs r0, #1 \n"/* CONTROL[0]==0. Return true to indicate that the processor is privileged. */
|
" movs r0, #1 \n" /* CONTROL[0]==0. Return true to indicate that the processor is privileged. */
|
||||||
" bx lr \n"/* Return. */
|
" bx lr \n" /* Return. */
|
||||||
" \n"
|
" \n"
|
||||||
" .align 4 \n"
|
" .align 4 \n"
|
||||||
::: "r0", "r1", "memory"
|
::: "r0", "r1", "memory"
|
||||||
|
@ -199,11 +202,11 @@ void vRaisePrivilege( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" mrs r0, control \n"/* Read the CONTROL register. */
|
" mrs r0, control \n" /* Read the CONTROL register. */
|
||||||
" movs r1, #1 \n"/* r1 = 1. */
|
" movs r1, #1 \n" /* r1 = 1. */
|
||||||
" bics r0, r1 \n"/* Clear the bit 0. */
|
" bics r0, r1 \n" /* Clear the bit 0. */
|
||||||
" msr control, r0 \n"/* Write back the new CONTROL value. */
|
" msr control, r0 \n" /* Write back the new CONTROL value. */
|
||||||
" bx lr \n"/* Return to the caller. */
|
" bx lr \n" /* Return to the caller. */
|
||||||
::: "r0", "r1", "memory"
|
::: "r0", "r1", "memory"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -215,11 +218,11 @@ void vResetPrivilege( void ) /* __attribute__ (( naked )) */
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" mrs r0, control \n"/* r0 = CONTROL. */
|
" mrs r0, control \n" /* r0 = CONTROL. */
|
||||||
" movs r1, #1 \n"/* r1 = 1. */
|
" movs r1, #1 \n" /* r1 = 1. */
|
||||||
" orrs r0, r1 \n"/* r0 = r0 | r1. */
|
" orrs r0, r1 \n" /* r0 = r0 | r1. */
|
||||||
" msr control, r0 \n"/* CONTROL = r0. */
|
" msr control, r0 \n" /* CONTROL = r0. */
|
||||||
" bx lr \n"/* Return to the caller. */
|
" bx lr \n" /* Return to the caller. */
|
||||||
::: "r0", "r1", "memory"
|
::: "r0", "r1", "memory"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -231,14 +234,14 @@ void vStartFirstTask( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" ldr r0, xVTORConst \n"/* Use the NVIC offset register to locate the stack. */
|
" ldr r0, xVTORConst \n" /* Use the NVIC offset register to locate the stack. */
|
||||||
" ldr r0, [r0] \n"/* Read the VTOR register which gives the address of vector table. */
|
" ldr r0, [r0] \n" /* Read the VTOR register which gives the address of vector table. */
|
||||||
" ldr r0, [r0] \n"/* The first entry in vector table is stack pointer. */
|
" ldr r0, [r0] \n" /* The first entry in vector table is stack pointer. */
|
||||||
" msr msp, r0 \n"/* Set the MSP back to the start of the stack. */
|
" msr msp, r0 \n" /* Set the MSP back to the start of the stack. */
|
||||||
" cpsie i \n"/* Globally enable interrupts. */
|
" cpsie i \n" /* Globally enable interrupts. */
|
||||||
" dsb \n"
|
" dsb \n"
|
||||||
" isb \n"
|
" isb \n"
|
||||||
" svc %0 \n"/* System call to start the first task. */
|
" svc %0 \n" /* System call to start the first task. */
|
||||||
" nop \n"
|
" nop \n"
|
||||||
" \n"
|
" \n"
|
||||||
" .align 4 \n"
|
" .align 4 \n"
|
||||||
|
@ -277,8 +280,8 @@ void vClearInterruptMask( __attribute__( ( unused ) ) uint32_t ulMask ) /* __att
|
||||||
|
|
||||||
#if ( configENABLE_MPU == 1 )
|
#if ( configENABLE_MPU == 1 )
|
||||||
|
|
||||||
void PendSV_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
void PendSV_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
|
@ -401,68 +404,67 @@ void PendSV_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
" xRNRConst: .word 0xe000ed98 \n"
|
" xRNRConst: .word 0xe000ed98 \n"
|
||||||
" xRBARConst: .word 0xe000ed9c \n"
|
" xRBARConst: .word 0xe000ed9c \n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* configENABLE_MPU */
|
#else /* configENABLE_MPU */
|
||||||
|
|
||||||
void PendSV_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
void PendSV_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" mrs r0, psp \n"/* Read PSP in r0. */
|
" mrs r0, psp \n" /* Read PSP in r0. */
|
||||||
" ldr r2, pxCurrentTCBConst \n"/* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
" ldr r2, pxCurrentTCBConst \n" /* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
||||||
" ldr r1, [r2] \n"/* Read pxCurrentTCB. */
|
" ldr r1, [r2] \n" /* Read pxCurrentTCB. */
|
||||||
" subs r0, r0, #40 \n"/* Make space for PSPLIM, LR and the remaining registers on the stack. */
|
" subs r0, r0, #40 \n" /* Make space for PSPLIM, LR and the remaining registers on the stack. */
|
||||||
" str r0, [r1] \n"/* Save the new top of stack in TCB. */
|
" str r0, [r1] \n" /* Save the new top of stack in TCB. */
|
||||||
" mrs r2, psplim \n"/* r2 = PSPLIM. */
|
" mrs r2, psplim \n" /* r2 = PSPLIM. */
|
||||||
" mov r3, lr \n"/* r3 = LR/EXC_RETURN. */
|
" mov r3, lr \n" /* r3 = LR/EXC_RETURN. */
|
||||||
" stmia r0!, {r2-r7} \n"/* Store on the stack - PSPLIM, LR and low registers that are not automatically saved. */
|
" stmia r0!, {r2-r7} \n" /* Store on the stack - PSPLIM, LR and low registers that are not automatically saved. */
|
||||||
" mov r4, r8 \n"/* r4 = r8. */
|
" mov r4, r8 \n" /* r4 = r8. */
|
||||||
" mov r5, r9 \n"/* r5 = r9. */
|
" mov r5, r9 \n" /* r5 = r9. */
|
||||||
" mov r6, r10 \n"/* r6 = r10. */
|
" mov r6, r10 \n" /* r6 = r10. */
|
||||||
" mov r7, r11 \n"/* r7 = r11. */
|
" mov r7, r11 \n" /* r7 = r11. */
|
||||||
" stmia r0!, {r4-r7} \n"/* Store the high registers that are not saved automatically. */
|
" stmia r0!, {r4-r7} \n" /* Store the high registers that are not saved automatically. */
|
||||||
" \n"
|
" \n"
|
||||||
" cpsid i \n"
|
" cpsid i \n"
|
||||||
" bl vTaskSwitchContext \n"
|
" bl vTaskSwitchContext \n"
|
||||||
" cpsie i \n"
|
" cpsie i \n"
|
||||||
" \n"
|
" \n"
|
||||||
" ldr r2, pxCurrentTCBConst \n"/* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
" ldr r2, pxCurrentTCBConst \n" /* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
||||||
" ldr r1, [r2] \n"/* Read pxCurrentTCB. */
|
" ldr r1, [r2] \n" /* Read pxCurrentTCB. */
|
||||||
" ldr r0, [r1] \n"/* The first item in pxCurrentTCB is the task top of stack. r0 now points to the top of stack. */
|
" ldr r0, [r1] \n" /* The first item in pxCurrentTCB is the task top of stack. r0 now points to the top of stack. */
|
||||||
" \n"
|
" \n"
|
||||||
" adds r0, r0, #24 \n"/* Move to the high registers. */
|
" adds r0, r0, #24 \n" /* Move to the high registers. */
|
||||||
" ldmia r0!, {r4-r7} \n"/* Restore the high registers that are not automatically restored. */
|
" ldmia r0!, {r4-r7} \n" /* Restore the high registers that are not automatically restored. */
|
||||||
" mov r8, r4 \n"/* r8 = r4. */
|
" mov r8, r4 \n" /* r8 = r4. */
|
||||||
" mov r9, r5 \n"/* r9 = r5. */
|
" mov r9, r5 \n" /* r9 = r5. */
|
||||||
" mov r10, r6 \n"/* r10 = r6. */
|
" mov r10, r6 \n" /* r10 = r6. */
|
||||||
" mov r11, r7 \n"/* r11 = r7. */
|
" mov r11, r7 \n" /* r11 = r7. */
|
||||||
" msr psp, r0 \n"/* Remember the new top of stack for the task. */
|
" msr psp, r0 \n" /* Remember the new top of stack for the task. */
|
||||||
" subs r0, r0, #40 \n"/* Move to the starting of the saved context. */
|
" subs r0, r0, #40 \n" /* Move to the starting of the saved context. */
|
||||||
" ldmia r0!, {r2-r7} \n"/* Read from stack - r2 = PSPLIM, r3 = LR and r4-r7 restored. */
|
" ldmia r0!, {r2-r7} \n" /* Read from stack - r2 = PSPLIM, r3 = LR and r4-r7 restored. */
|
||||||
" msr psplim, r2 \n"/* Restore the PSPLIM register value for the task. */
|
" msr psplim, r2 \n" /* Restore the PSPLIM register value for the task. */
|
||||||
" bx r3 \n"
|
" bx r3 \n"
|
||||||
" \n"
|
" \n"
|
||||||
" .align 4 \n"
|
" .align 4 \n"
|
||||||
"pxCurrentTCBConst: .word pxCurrentTCB \n"
|
"pxCurrentTCBConst: .word pxCurrentTCB \n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* configENABLE_MPU */
|
#endif /* configENABLE_MPU */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
||||||
|
|
||||||
void SVC_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
void SVC_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
".syntax unified \n"
|
".syntax unified \n"
|
||||||
".extern vPortSVCHandler_C \n"
|
".extern vPortSVCHandler_C \n"
|
||||||
".extern vSystemCallEnter \n"
|
".extern vSystemCallEnter \n"
|
||||||
".extern vSystemCallEnter_1 \n"
|
|
||||||
".extern vSystemCallExit \n"
|
".extern vSystemCallExit \n"
|
||||||
" \n"
|
" \n"
|
||||||
"movs r0, #4 \n"
|
"movs r0, #4 \n"
|
||||||
|
@ -477,34 +479,30 @@ void SVC_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
" b route_svc \n"
|
" b route_svc \n"
|
||||||
" \n"
|
" \n"
|
||||||
"route_svc: \n"
|
"route_svc: \n"
|
||||||
" ldr r2, [r0, #24] \n"
|
" ldr r3, [r0, #24] \n"
|
||||||
" subs r2, #2 \n"
|
" subs r3, #2 \n"
|
||||||
" ldrb r3, [r2, #0] \n"
|
" ldrb r2, [r3, #0] \n"
|
||||||
" cmp r3, %0 \n"
|
" cmp r2, %0 \n"
|
||||||
" beq system_call_enter \n"
|
" blt system_call_enter \n"
|
||||||
" cmp r3, %1 \n"
|
" cmp r2, %1 \n"
|
||||||
" beq system_call_enter_1 \n"
|
|
||||||
" cmp r3, %2 \n"
|
|
||||||
" beq system_call_exit \n"
|
" beq system_call_exit \n"
|
||||||
" b vPortSVCHandler_C \n"
|
" b vPortSVCHandler_C \n"
|
||||||
" \n"
|
" \n"
|
||||||
"system_call_enter: \n"
|
"system_call_enter: \n"
|
||||||
" b vSystemCallEnter \n"
|
" b vSystemCallEnter \n"
|
||||||
"system_call_enter_1: \n"
|
|
||||||
" b vSystemCallEnter_1 \n"
|
|
||||||
"system_call_exit: \n"
|
"system_call_exit: \n"
|
||||||
" b vSystemCallExit \n"
|
" b vSystemCallExit \n"
|
||||||
" \n"
|
" \n"
|
||||||
: /* No outputs. */
|
: /* No outputs. */
|
||||||
:"i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT )
|
: "i" ( NUM_SYSTEM_CALLS ), "i" ( portSVC_SYSTEM_CALL_EXIT )
|
||||||
: "r0", "r1", "r2", "r3", "memory"
|
: "r0", "r1", "r2", "r3", "memory"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
#else /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
||||||
|
|
||||||
void SVC_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
void SVC_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
|
@ -524,7 +522,7 @@ void SVC_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
" .align 4 \n"
|
" .align 4 \n"
|
||||||
"svchandler_address_const: .word vPortSVCHandler_C \n"
|
"svchandler_address_const: .word vPortSVCHandler_C \n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
#endif /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
@ -36,14 +36,17 @@
|
||||||
/* Portasm includes. */
|
/* Portasm includes. */
|
||||||
#include "portasm.h"
|
#include "portasm.h"
|
||||||
|
|
||||||
|
/* System call numbers includes. */
|
||||||
|
#include "mpu_syscall_numbers.h"
|
||||||
|
|
||||||
/* MPU_WRAPPERS_INCLUDED_FROM_API_FILE is needed to be defined only for the
|
/* MPU_WRAPPERS_INCLUDED_FROM_API_FILE is needed to be defined only for the
|
||||||
* header files. */
|
* header files. */
|
||||||
#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE
|
#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE
|
||||||
|
|
||||||
#if ( configENABLE_MPU == 1 )
|
#if ( configENABLE_MPU == 1 )
|
||||||
|
|
||||||
void vRestoreContextOfFirstTask( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
void vRestoreContextOfFirstTask( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
|
@ -121,12 +124,12 @@ void vRestoreContextOfFirstTask( void ) /* __attribute__ (( naked )) PRIVILEGED_
|
||||||
" xRNRConst2: .word 0xe000ed98 \n"
|
" xRNRConst2: .word 0xe000ed98 \n"
|
||||||
" xRBARConst2: .word 0xe000ed9c \n"
|
" xRBARConst2: .word 0xe000ed9c \n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* configENABLE_MPU */
|
#else /* configENABLE_MPU */
|
||||||
|
|
||||||
void vRestoreContextOfFirstTask( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
void vRestoreContextOfFirstTask( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
|
@ -151,7 +154,7 @@ void vRestoreContextOfFirstTask( void ) /* __attribute__ (( naked )) PRIVILEGED_
|
||||||
"pxCurrentTCBConst2: .word pxCurrentTCB \n"
|
"pxCurrentTCBConst2: .word pxCurrentTCB \n"
|
||||||
"xSecureContextConst2: .word xSecureContext \n"
|
"xSecureContextConst2: .word xSecureContext \n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* configENABLE_MPU */
|
#endif /* configENABLE_MPU */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
@ -162,12 +165,12 @@ BaseType_t xIsPrivileged( void ) /* __attribute__ (( naked )) */
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" mrs r0, control \n"/* r0 = CONTROL. */
|
" mrs r0, control \n" /* r0 = CONTROL. */
|
||||||
" tst r0, #1 \n"/* Perform r0 & 1 (bitwise AND) and update the conditions flag. */
|
" tst r0, #1 \n" /* Perform r0 & 1 (bitwise AND) and update the conditions flag. */
|
||||||
" ite ne \n"
|
" ite ne \n"
|
||||||
" movne r0, #0 \n"/* CONTROL[0]!=0. Return false to indicate that the processor is not privileged. */
|
" movne r0, #0 \n" /* CONTROL[0]!=0. Return false to indicate that the processor is not privileged. */
|
||||||
" moveq r0, #1 \n"/* CONTROL[0]==0. Return true to indicate that the processor is privileged. */
|
" moveq r0, #1 \n" /* CONTROL[0]==0. Return true to indicate that the processor is privileged. */
|
||||||
" bx lr \n"/* Return. */
|
" bx lr \n" /* Return. */
|
||||||
" \n"
|
" \n"
|
||||||
" .align 4 \n"
|
" .align 4 \n"
|
||||||
::: "r0", "memory"
|
::: "r0", "memory"
|
||||||
|
@ -181,10 +184,10 @@ void vRaisePrivilege( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" mrs r0, control \n"/* Read the CONTROL register. */
|
" mrs r0, control \n" /* Read the CONTROL register. */
|
||||||
" bic r0, #1 \n"/* Clear the bit 0. */
|
" bic r0, #1 \n" /* Clear the bit 0. */
|
||||||
" msr control, r0 \n"/* Write back the new CONTROL value. */
|
" msr control, r0 \n" /* Write back the new CONTROL value. */
|
||||||
" bx lr \n"/* Return to the caller. */
|
" bx lr \n" /* Return to the caller. */
|
||||||
::: "r0", "memory"
|
::: "r0", "memory"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -196,10 +199,10 @@ void vResetPrivilege( void ) /* __attribute__ (( naked )) */
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" mrs r0, control \n"/* r0 = CONTROL. */
|
" mrs r0, control \n" /* r0 = CONTROL. */
|
||||||
" orr r0, #1 \n"/* r0 = r0 | 1. */
|
" orr r0, #1 \n" /* r0 = r0 | 1. */
|
||||||
" msr control, r0 \n"/* CONTROL = r0. */
|
" msr control, r0 \n" /* CONTROL = r0. */
|
||||||
" bx lr \n"/* Return to the caller. */
|
" bx lr \n" /* Return to the caller. */
|
||||||
::: "r0", "memory"
|
::: "r0", "memory"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -211,15 +214,15 @@ void vStartFirstTask( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" ldr r0, xVTORConst \n"/* Use the NVIC offset register to locate the stack. */
|
" ldr r0, xVTORConst \n" /* Use the NVIC offset register to locate the stack. */
|
||||||
" ldr r0, [r0] \n"/* Read the VTOR register which gives the address of vector table. */
|
" ldr r0, [r0] \n" /* Read the VTOR register which gives the address of vector table. */
|
||||||
" ldr r0, [r0] \n"/* The first entry in vector table is stack pointer. */
|
" ldr r0, [r0] \n" /* The first entry in vector table is stack pointer. */
|
||||||
" msr msp, r0 \n"/* Set the MSP back to the start of the stack. */
|
" msr msp, r0 \n" /* Set the MSP back to the start of the stack. */
|
||||||
" cpsie i \n"/* Globally enable interrupts. */
|
" cpsie i \n" /* Globally enable interrupts. */
|
||||||
" cpsie f \n"
|
" cpsie f \n"
|
||||||
" dsb \n"
|
" dsb \n"
|
||||||
" isb \n"
|
" isb \n"
|
||||||
" svc %0 \n"/* System call to start the first task. */
|
" svc %0 \n" /* System call to start the first task. */
|
||||||
" nop \n"
|
" nop \n"
|
||||||
" \n"
|
" \n"
|
||||||
" .align 4 \n"
|
" .align 4 \n"
|
||||||
|
@ -235,12 +238,12 @@ uint32_t ulSetInterruptMask( void ) /* __attribute__(( naked )) PRIVILEGED_FUNCT
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" mrs r0, basepri \n"/* r0 = basepri. Return original basepri value. */
|
" mrs r0, basepri \n" /* r0 = basepri. Return original basepri value. */
|
||||||
" mov r1, %0 \n"/* r1 = configMAX_SYSCALL_INTERRUPT_PRIORITY. */
|
" mov r1, %0 \n" /* r1 = configMAX_SYSCALL_INTERRUPT_PRIORITY. */
|
||||||
" msr basepri, r1 \n"/* Disable interrupts upto configMAX_SYSCALL_INTERRUPT_PRIORITY. */
|
" msr basepri, r1 \n" /* Disable interrupts upto configMAX_SYSCALL_INTERRUPT_PRIORITY. */
|
||||||
" dsb \n"
|
" dsb \n"
|
||||||
" isb \n"
|
" isb \n"
|
||||||
" bx lr \n"/* Return. */
|
" bx lr \n" /* Return. */
|
||||||
::"i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY ) : "memory"
|
::"i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY ) : "memory"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -252,10 +255,10 @@ void vClearInterruptMask( __attribute__( ( unused ) ) uint32_t ulMask ) /* __att
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" msr basepri, r0 \n"/* basepri = ulMask. */
|
" msr basepri, r0 \n" /* basepri = ulMask. */
|
||||||
" dsb \n"
|
" dsb \n"
|
||||||
" isb \n"
|
" isb \n"
|
||||||
" bx lr \n"/* Return. */
|
" bx lr \n" /* Return. */
|
||||||
::: "memory"
|
::: "memory"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -263,8 +266,8 @@ void vClearInterruptMask( __attribute__( ( unused ) ) uint32_t ulMask ) /* __att
|
||||||
|
|
||||||
#if ( configENABLE_MPU == 1 )
|
#if ( configENABLE_MPU == 1 )
|
||||||
|
|
||||||
void PendSV_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
void PendSV_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
|
@ -411,96 +414,96 @@ void PendSV_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
" xRBARConst: .word 0xe000ed9c \n"
|
" xRBARConst: .word 0xe000ed9c \n"
|
||||||
::"i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY )
|
::"i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY )
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* configENABLE_MPU */
|
#else /* configENABLE_MPU */
|
||||||
|
|
||||||
void PendSV_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
void PendSV_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" .extern SecureContext_SaveContext \n"
|
" .extern SecureContext_SaveContext \n"
|
||||||
" .extern SecureContext_LoadContext \n"
|
" .extern SecureContext_LoadContext \n"
|
||||||
" \n"
|
" \n"
|
||||||
" ldr r3, xSecureContextConst \n"/* Read the location of xSecureContext i.e. &( xSecureContext ). */
|
" ldr r3, xSecureContextConst \n" /* Read the location of xSecureContext i.e. &( xSecureContext ). */
|
||||||
" ldr r0, [r3] \n"/* Read xSecureContext - Value of xSecureContext must be in r0 as it is used as a parameter later. */
|
" ldr r0, [r3] \n" /* Read xSecureContext - Value of xSecureContext must be in r0 as it is used as a parameter later. */
|
||||||
" ldr r3, pxCurrentTCBConst \n"/* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
" ldr r3, pxCurrentTCBConst \n" /* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
||||||
" ldr r1, [r3] \n"/* Read pxCurrentTCB - Value of pxCurrentTCB must be in r1 as it is used as a parameter later. */
|
" ldr r1, [r3] \n" /* Read pxCurrentTCB - Value of pxCurrentTCB must be in r1 as it is used as a parameter later. */
|
||||||
" mrs r2, psp \n"/* Read PSP in r2. */
|
" mrs r2, psp \n" /* Read PSP in r2. */
|
||||||
" \n"
|
" \n"
|
||||||
" cbz r0, save_ns_context \n"/* No secure context to save. */
|
" cbz r0, save_ns_context \n" /* No secure context to save. */
|
||||||
" push {r0-r2, r14} \n"
|
" push {r0-r2, r14} \n"
|
||||||
" bl SecureContext_SaveContext \n"/* Params are in r0 and r1. r0 = xSecureContext and r1 = pxCurrentTCB. */
|
" bl SecureContext_SaveContext \n" /* Params are in r0 and r1. r0 = xSecureContext and r1 = pxCurrentTCB. */
|
||||||
" pop {r0-r3} \n"/* LR is now in r3. */
|
" pop {r0-r3} \n" /* LR is now in r3. */
|
||||||
" mov lr, r3 \n"/* LR = r3. */
|
" mov lr, r3 \n" /* LR = r3. */
|
||||||
" lsls r1, r3, #25 \n"/* r1 = r3 << 25. Bit[6] of EXC_RETURN is 1 if secure stack was used, 0 if non-secure stack was used to store stack frame. */
|
" lsls r1, r3, #25 \n" /* r1 = r3 << 25. Bit[6] of EXC_RETURN is 1 if secure stack was used, 0 if non-secure stack was used to store stack frame. */
|
||||||
" bpl save_ns_context \n"/* bpl - branch if positive or zero. If r1 >= 0 ==> Bit[6] in EXC_RETURN is 0 i.e. non-secure stack was used. */
|
" bpl save_ns_context \n" /* bpl - branch if positive or zero. If r1 >= 0 ==> Bit[6] in EXC_RETURN is 0 i.e. non-secure stack was used. */
|
||||||
" \n"
|
" \n"
|
||||||
" ldr r3, pxCurrentTCBConst \n"/* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
" ldr r3, pxCurrentTCBConst \n" /* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
||||||
" ldr r1, [r3] \n"/* Read pxCurrentTCB.*/
|
" ldr r1, [r3] \n" /* Read pxCurrentTCB.*/
|
||||||
" subs r2, r2, #12 \n"/* Make space for xSecureContext, PSPLIM and LR on the stack. */
|
" subs r2, r2, #12 \n" /* Make space for xSecureContext, PSPLIM and LR on the stack. */
|
||||||
" str r2, [r1] \n"/* Save the new top of stack in TCB. */
|
" str r2, [r1] \n" /* Save the new top of stack in TCB. */
|
||||||
" mrs r1, psplim \n"/* r1 = PSPLIM. */
|
" mrs r1, psplim \n" /* r1 = PSPLIM. */
|
||||||
" mov r3, lr \n"/* r3 = LR/EXC_RETURN. */
|
" mov r3, lr \n" /* r3 = LR/EXC_RETURN. */
|
||||||
" stmia r2!, {r0, r1, r3} \n"/* Store xSecureContext, PSPLIM and LR on the stack. */
|
" stmia r2!, {r0, r1, r3} \n" /* Store xSecureContext, PSPLIM and LR on the stack. */
|
||||||
" b select_next_task \n"
|
" b select_next_task \n"
|
||||||
" \n"
|
" \n"
|
||||||
" save_ns_context: \n"
|
" save_ns_context: \n"
|
||||||
" ldr r3, pxCurrentTCBConst \n"/* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
" ldr r3, pxCurrentTCBConst \n" /* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
||||||
" ldr r1, [r3] \n"/* Read pxCurrentTCB. */
|
" ldr r1, [r3] \n" /* Read pxCurrentTCB. */
|
||||||
#if ( ( configENABLE_FPU == 1 ) || ( configENABLE_MVE == 1 ) )
|
#if ( ( configENABLE_FPU == 1 ) || ( configENABLE_MVE == 1 ) )
|
||||||
" tst lr, #0x10 \n"/* Test Bit[4] in LR. Bit[4] of EXC_RETURN is 0 if the Extended Stack Frame is in use. */
|
" tst lr, #0x10 \n" /* Test Bit[4] in LR. Bit[4] of EXC_RETURN is 0 if the Extended Stack Frame is in use. */
|
||||||
" it eq \n"
|
" it eq \n"
|
||||||
" vstmdbeq r2!, {s16-s31} \n"/* Store the additional FP context registers which are not saved automatically. */
|
" vstmdbeq r2!, {s16-s31} \n" /* Store the additional FP context registers which are not saved automatically. */
|
||||||
#endif /* configENABLE_FPU || configENABLE_MVE */
|
#endif /* configENABLE_FPU || configENABLE_MVE */
|
||||||
" subs r2, r2, #44 \n"/* Make space for xSecureContext, PSPLIM, LR and the remaining registers on the stack. */
|
" subs r2, r2, #44 \n" /* Make space for xSecureContext, PSPLIM, LR and the remaining registers on the stack. */
|
||||||
" str r2, [r1] \n"/* Save the new top of stack in TCB. */
|
" str r2, [r1] \n" /* Save the new top of stack in TCB. */
|
||||||
" adds r2, r2, #12 \n"/* r2 = r2 + 12. */
|
" adds r2, r2, #12 \n" /* r2 = r2 + 12. */
|
||||||
" stm r2, {r4-r11} \n"/* Store the registers that are not saved automatically. */
|
" stm r2, {r4-r11} \n" /* Store the registers that are not saved automatically. */
|
||||||
" mrs r1, psplim \n"/* r1 = PSPLIM. */
|
" mrs r1, psplim \n" /* r1 = PSPLIM. */
|
||||||
" mov r3, lr \n"/* r3 = LR/EXC_RETURN. */
|
" mov r3, lr \n" /* r3 = LR/EXC_RETURN. */
|
||||||
" subs r2, r2, #12 \n"/* r2 = r2 - 12. */
|
" subs r2, r2, #12 \n" /* r2 = r2 - 12. */
|
||||||
" stmia r2!, {r0, r1, r3} \n"/* Store xSecureContext, PSPLIM and LR on the stack. */
|
" stmia r2!, {r0, r1, r3} \n" /* Store xSecureContext, PSPLIM and LR on the stack. */
|
||||||
" \n"
|
" \n"
|
||||||
" select_next_task: \n"
|
" select_next_task: \n"
|
||||||
" mov r0, %0 \n"/* r0 = configMAX_SYSCALL_INTERRUPT_PRIORITY */
|
" mov r0, %0 \n" /* r0 = configMAX_SYSCALL_INTERRUPT_PRIORITY */
|
||||||
" msr basepri, r0 \n"/* Disable interrupts upto configMAX_SYSCALL_INTERRUPT_PRIORITY. */
|
" msr basepri, r0 \n" /* Disable interrupts upto configMAX_SYSCALL_INTERRUPT_PRIORITY. */
|
||||||
" dsb \n"
|
" dsb \n"
|
||||||
" isb \n"
|
" isb \n"
|
||||||
" bl vTaskSwitchContext \n"
|
" bl vTaskSwitchContext \n"
|
||||||
" mov r0, #0 \n"/* r0 = 0. */
|
" mov r0, #0 \n" /* r0 = 0. */
|
||||||
" msr basepri, r0 \n"/* Enable interrupts. */
|
" msr basepri, r0 \n" /* Enable interrupts. */
|
||||||
" \n"
|
" \n"
|
||||||
" ldr r3, pxCurrentTCBConst \n"/* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
" ldr r3, pxCurrentTCBConst \n" /* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
||||||
" ldr r1, [r3] \n"/* Read pxCurrentTCB. */
|
" ldr r1, [r3] \n" /* Read pxCurrentTCB. */
|
||||||
" ldr r2, [r1] \n"/* The first item in pxCurrentTCB is the task top of stack. r2 now points to the top of stack. */
|
" ldr r2, [r1] \n" /* The first item in pxCurrentTCB is the task top of stack. r2 now points to the top of stack. */
|
||||||
" \n"
|
" \n"
|
||||||
" ldmia r2!, {r0, r1, r4} \n"/* Read from stack - r0 = xSecureContext, r1 = PSPLIM and r4 = LR. */
|
" ldmia r2!, {r0, r1, r4} \n" /* Read from stack - r0 = xSecureContext, r1 = PSPLIM and r4 = LR. */
|
||||||
" msr psplim, r1 \n"/* Restore the PSPLIM register value for the task. */
|
" msr psplim, r1 \n" /* Restore the PSPLIM register value for the task. */
|
||||||
" mov lr, r4 \n"/* LR = r4. */
|
" mov lr, r4 \n" /* LR = r4. */
|
||||||
" ldr r3, xSecureContextConst \n"/* Read the location of xSecureContext i.e. &( xSecureContext ). */
|
" ldr r3, xSecureContextConst \n" /* Read the location of xSecureContext i.e. &( xSecureContext ). */
|
||||||
" str r0, [r3] \n"/* Restore the task's xSecureContext. */
|
" str r0, [r3] \n" /* Restore the task's xSecureContext. */
|
||||||
" cbz r0, restore_ns_context \n"/* If there is no secure context for the task, restore the non-secure context. */
|
" cbz r0, restore_ns_context \n" /* If there is no secure context for the task, restore the non-secure context. */
|
||||||
" ldr r3, pxCurrentTCBConst \n"/* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
" ldr r3, pxCurrentTCBConst \n" /* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
||||||
" ldr r1, [r3] \n"/* Read pxCurrentTCB. */
|
" ldr r1, [r3] \n" /* Read pxCurrentTCB. */
|
||||||
" push {r2, r4} \n"
|
" push {r2, r4} \n"
|
||||||
" bl SecureContext_LoadContext \n"/* Restore the secure context. Params are in r0 and r1. r0 = xSecureContext and r1 = pxCurrentTCB. */
|
" bl SecureContext_LoadContext \n" /* Restore the secure context. Params are in r0 and r1. r0 = xSecureContext and r1 = pxCurrentTCB. */
|
||||||
" pop {r2, r4} \n"
|
" pop {r2, r4} \n"
|
||||||
" mov lr, r4 \n"/* LR = r4. */
|
" mov lr, r4 \n" /* LR = r4. */
|
||||||
" lsls r1, r4, #25 \n"/* r1 = r4 << 25. Bit[6] of EXC_RETURN is 1 if secure stack was used, 0 if non-secure stack was used to store stack frame. */
|
" lsls r1, r4, #25 \n" /* r1 = r4 << 25. Bit[6] of EXC_RETURN is 1 if secure stack was used, 0 if non-secure stack was used to store stack frame. */
|
||||||
" bpl restore_ns_context \n"/* bpl - branch if positive or zero. If r1 >= 0 ==> Bit[6] in EXC_RETURN is 0 i.e. non-secure stack was used. */
|
" bpl restore_ns_context \n" /* bpl - branch if positive or zero. If r1 >= 0 ==> Bit[6] in EXC_RETURN is 0 i.e. non-secure stack was used. */
|
||||||
" msr psp, r2 \n"/* Remember the new top of stack for the task. */
|
" msr psp, r2 \n" /* Remember the new top of stack for the task. */
|
||||||
" bx lr \n"
|
" bx lr \n"
|
||||||
" \n"
|
" \n"
|
||||||
" restore_ns_context: \n"
|
" restore_ns_context: \n"
|
||||||
" ldmia r2!, {r4-r11} \n"/* Restore the registers that are not automatically restored. */
|
" ldmia r2!, {r4-r11} \n" /* Restore the registers that are not automatically restored. */
|
||||||
#if ( ( configENABLE_FPU == 1 ) || ( configENABLE_MVE == 1 ) )
|
#if ( ( configENABLE_FPU == 1 ) || ( configENABLE_MVE == 1 ) )
|
||||||
" tst lr, #0x10 \n"/* Test Bit[4] in LR. Bit[4] of EXC_RETURN is 0 if the Extended Stack Frame is in use. */
|
" tst lr, #0x10 \n" /* Test Bit[4] in LR. Bit[4] of EXC_RETURN is 0 if the Extended Stack Frame is in use. */
|
||||||
" it eq \n"
|
" it eq \n"
|
||||||
" vldmiaeq r2!, {s16-s31} \n"/* Restore the additional FP context registers which are not restored automatically. */
|
" vldmiaeq r2!, {s16-s31} \n" /* Restore the additional FP context registers which are not restored automatically. */
|
||||||
#endif /* configENABLE_FPU || configENABLE_MVE */
|
#endif /* configENABLE_FPU || configENABLE_MVE */
|
||||||
" msr psp, r2 \n"/* Remember the new top of stack for the task. */
|
" msr psp, r2 \n" /* Remember the new top of stack for the task. */
|
||||||
" bx lr \n"
|
" bx lr \n"
|
||||||
" \n"
|
" \n"
|
||||||
" .align 4 \n"
|
" .align 4 \n"
|
||||||
|
@ -508,21 +511,20 @@ void PendSV_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
"xSecureContextConst: .word xSecureContext \n"
|
"xSecureContextConst: .word xSecureContext \n"
|
||||||
::"i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY )
|
::"i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY )
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* configENABLE_MPU */
|
#endif /* configENABLE_MPU */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
||||||
|
|
||||||
void SVC_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
void SVC_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
".syntax unified \n"
|
".syntax unified \n"
|
||||||
".extern vPortSVCHandler_C \n"
|
".extern vPortSVCHandler_C \n"
|
||||||
".extern vSystemCallEnter \n"
|
".extern vSystemCallEnter \n"
|
||||||
".extern vSystemCallEnter_1 \n"
|
|
||||||
".extern vSystemCallExit \n"
|
".extern vSystemCallExit \n"
|
||||||
" \n"
|
" \n"
|
||||||
"tst lr, #4 \n"
|
"tst lr, #4 \n"
|
||||||
|
@ -533,10 +535,8 @@ void SVC_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
"ldr r1, [r0, #24] \n"
|
"ldr r1, [r0, #24] \n"
|
||||||
"ldrb r2, [r1, #-2] \n"
|
"ldrb r2, [r1, #-2] \n"
|
||||||
"cmp r2, %0 \n"
|
"cmp r2, %0 \n"
|
||||||
"beq syscall_enter \n"
|
"blt syscall_enter \n"
|
||||||
"cmp r2, %1 \n"
|
"cmp r2, %1 \n"
|
||||||
"beq syscall_enter_1 \n"
|
|
||||||
"cmp r2, %2 \n"
|
|
||||||
"beq syscall_exit \n"
|
"beq syscall_exit \n"
|
||||||
"b vPortSVCHandler_C \n"
|
"b vPortSVCHandler_C \n"
|
||||||
" \n"
|
" \n"
|
||||||
|
@ -544,24 +544,20 @@ void SVC_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
" mov r1, lr \n"
|
" mov r1, lr \n"
|
||||||
" b vSystemCallEnter \n"
|
" b vSystemCallEnter \n"
|
||||||
" \n"
|
" \n"
|
||||||
"syscall_enter_1: \n"
|
|
||||||
" mov r1, lr \n"
|
|
||||||
" b vSystemCallEnter_1 \n"
|
|
||||||
" \n"
|
|
||||||
"syscall_exit: \n"
|
"syscall_exit: \n"
|
||||||
" mov r1, lr \n"
|
" mov r1, lr \n"
|
||||||
" b vSystemCallExit \n"
|
" b vSystemCallExit \n"
|
||||||
" \n"
|
" \n"
|
||||||
: /* No outputs. */
|
: /* No outputs. */
|
||||||
:"i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT )
|
: "i" ( NUM_SYSTEM_CALLS ), "i" ( portSVC_SYSTEM_CALL_EXIT )
|
||||||
: "r0", "r1", "r2", "memory"
|
: "r0", "r1", "r2", "memory"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
#else /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
||||||
|
|
||||||
void SVC_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
void SVC_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
|
@ -576,7 +572,7 @@ void SVC_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
" .align 4 \n"
|
" .align 4 \n"
|
||||||
"svchandler_address_const: .word vPortSVCHandler_C \n"
|
"svchandler_address_const: .word vPortSVCHandler_C \n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
#endif /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
@ -587,8 +583,8 @@ void vPortAllocateSecureContext( uint32_t ulSecureStackSize ) /* __attribute__ (
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" svc %0 \n"/* Secure context is allocated in the supervisor call. */
|
" svc %0 \n" /* Secure context is allocated in the supervisor call. */
|
||||||
" bx lr \n"/* Return. */
|
" bx lr \n" /* Return. */
|
||||||
::"i" ( portSVC_ALLOCATE_SECURE_CONTEXT ) : "memory"
|
::"i" ( portSVC_ALLOCATE_SECURE_CONTEXT ) : "memory"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -600,12 +596,12 @@ void vPortFreeSecureContext( uint32_t * pulTCB ) /* __attribute__ (( naked )) PR
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" ldr r2, [r0] \n"/* The first item in the TCB is the top of the stack. */
|
" ldr r2, [r0] \n" /* The first item in the TCB is the top of the stack. */
|
||||||
" ldr r1, [r2] \n"/* The first item on the stack is the task's xSecureContext. */
|
" ldr r1, [r2] \n" /* The first item on the stack is the task's xSecureContext. */
|
||||||
" cmp r1, #0 \n"/* Raise svc if task's xSecureContext is not NULL. */
|
" cmp r1, #0 \n" /* Raise svc if task's xSecureContext is not NULL. */
|
||||||
" it ne \n"
|
" it ne \n"
|
||||||
" svcne %0 \n"/* Secure context is freed in the supervisor call. */
|
" svcne %0 \n" /* Secure context is freed in the supervisor call. */
|
||||||
" bx lr \n"/* Return. */
|
" bx lr \n" /* Return. */
|
||||||
::"i" ( portSVC_FREE_SECURE_CONTEXT ) : "memory"
|
::"i" ( portSVC_FREE_SECURE_CONTEXT ) : "memory"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
@ -36,14 +36,17 @@
|
||||||
/* Portasm includes. */
|
/* Portasm includes. */
|
||||||
#include "portasm.h"
|
#include "portasm.h"
|
||||||
|
|
||||||
|
/* System call numbers includes. */
|
||||||
|
#include "mpu_syscall_numbers.h"
|
||||||
|
|
||||||
/* MPU_WRAPPERS_INCLUDED_FROM_API_FILE is needed to be defined only for the
|
/* MPU_WRAPPERS_INCLUDED_FROM_API_FILE is needed to be defined only for the
|
||||||
* header files. */
|
* header files. */
|
||||||
#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE
|
#undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE
|
||||||
|
|
||||||
#if ( configENABLE_MPU == 1 )
|
#if ( configENABLE_MPU == 1 )
|
||||||
|
|
||||||
void vRestoreContextOfFirstTask( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
void vRestoreContextOfFirstTask( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
|
@ -118,35 +121,35 @@ void vRestoreContextOfFirstTask( void ) /* __attribute__ (( naked )) PRIVILEGED_
|
||||||
" xRNRConst2: .word 0xe000ed98 \n"
|
" xRNRConst2: .word 0xe000ed98 \n"
|
||||||
" xRBARConst2: .word 0xe000ed9c \n"
|
" xRBARConst2: .word 0xe000ed9c \n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* configENABLE_MPU */
|
#else /* configENABLE_MPU */
|
||||||
|
|
||||||
void vRestoreContextOfFirstTask( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
void vRestoreContextOfFirstTask( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" ldr r2, pxCurrentTCBConst2 \n"/* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
" ldr r2, pxCurrentTCBConst2 \n" /* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
||||||
" ldr r1, [r2] \n"/* Read pxCurrentTCB. */
|
" ldr r1, [r2] \n" /* Read pxCurrentTCB. */
|
||||||
" ldr r0, [r1] \n"/* Read top of stack from TCB - The first item in pxCurrentTCB is the task top of stack. */
|
" ldr r0, [r1] \n" /* Read top of stack from TCB - The first item in pxCurrentTCB is the task top of stack. */
|
||||||
" \n"
|
" \n"
|
||||||
" ldm r0!, {r1-r2} \n"/* Read from stack - r1 = PSPLIM and r2 = EXC_RETURN. */
|
" ldm r0!, {r1-r2} \n" /* Read from stack - r1 = PSPLIM and r2 = EXC_RETURN. */
|
||||||
" msr psplim, r1 \n"/* Set this task's PSPLIM value. */
|
" msr psplim, r1 \n" /* Set this task's PSPLIM value. */
|
||||||
" movs r1, #2 \n"/* r1 = 2. */
|
" movs r1, #2 \n" /* r1 = 2. */
|
||||||
" msr CONTROL, r1 \n"/* Switch to use PSP in the thread mode. */
|
" msr CONTROL, r1 \n" /* Switch to use PSP in the thread mode. */
|
||||||
" adds r0, #32 \n"/* Discard everything up to r0. */
|
" adds r0, #32 \n" /* Discard everything up to r0. */
|
||||||
" msr psp, r0 \n"/* This is now the new top of stack to use in the task. */
|
" msr psp, r0 \n" /* This is now the new top of stack to use in the task. */
|
||||||
" isb \n"
|
" isb \n"
|
||||||
" mov r0, #0 \n"
|
" mov r0, #0 \n"
|
||||||
" msr basepri, r0 \n"/* Ensure that interrupts are enabled when the first task starts. */
|
" msr basepri, r0 \n" /* Ensure that interrupts are enabled when the first task starts. */
|
||||||
" bx r2 \n"/* Finally, branch to EXC_RETURN. */
|
" bx r2 \n" /* Finally, branch to EXC_RETURN. */
|
||||||
" \n"
|
" \n"
|
||||||
" .align 4 \n"
|
" .align 4 \n"
|
||||||
"pxCurrentTCBConst2: .word pxCurrentTCB \n"
|
"pxCurrentTCBConst2: .word pxCurrentTCB \n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* configENABLE_MPU */
|
#endif /* configENABLE_MPU */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
@ -157,12 +160,12 @@ BaseType_t xIsPrivileged( void ) /* __attribute__ (( naked )) */
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" mrs r0, control \n"/* r0 = CONTROL. */
|
" mrs r0, control \n" /* r0 = CONTROL. */
|
||||||
" tst r0, #1 \n"/* Perform r0 & 1 (bitwise AND) and update the conditions flag. */
|
" tst r0, #1 \n" /* Perform r0 & 1 (bitwise AND) and update the conditions flag. */
|
||||||
" ite ne \n"
|
" ite ne \n"
|
||||||
" movne r0, #0 \n"/* CONTROL[0]!=0. Return false to indicate that the processor is not privileged. */
|
" movne r0, #0 \n" /* CONTROL[0]!=0. Return false to indicate that the processor is not privileged. */
|
||||||
" moveq r0, #1 \n"/* CONTROL[0]==0. Return true to indicate that the processor is privileged. */
|
" moveq r0, #1 \n" /* CONTROL[0]==0. Return true to indicate that the processor is privileged. */
|
||||||
" bx lr \n"/* Return. */
|
" bx lr \n" /* Return. */
|
||||||
" \n"
|
" \n"
|
||||||
" .align 4 \n"
|
" .align 4 \n"
|
||||||
::: "r0", "memory"
|
::: "r0", "memory"
|
||||||
|
@ -176,10 +179,10 @@ void vRaisePrivilege( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" mrs r0, control \n"/* Read the CONTROL register. */
|
" mrs r0, control \n" /* Read the CONTROL register. */
|
||||||
" bic r0, #1 \n"/* Clear the bit 0. */
|
" bic r0, #1 \n" /* Clear the bit 0. */
|
||||||
" msr control, r0 \n"/* Write back the new CONTROL value. */
|
" msr control, r0 \n" /* Write back the new CONTROL value. */
|
||||||
" bx lr \n"/* Return to the caller. */
|
" bx lr \n" /* Return to the caller. */
|
||||||
::: "r0", "memory"
|
::: "r0", "memory"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -191,10 +194,10 @@ void vResetPrivilege( void ) /* __attribute__ (( naked )) */
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" mrs r0, control \n"/* r0 = CONTROL. */
|
" mrs r0, control \n" /* r0 = CONTROL. */
|
||||||
" orr r0, #1 \n"/* r0 = r0 | 1. */
|
" orr r0, #1 \n" /* r0 = r0 | 1. */
|
||||||
" msr control, r0 \n"/* CONTROL = r0. */
|
" msr control, r0 \n" /* CONTROL = r0. */
|
||||||
" bx lr \n"/* Return to the caller. */
|
" bx lr \n" /* Return to the caller. */
|
||||||
::: "r0", "memory"
|
::: "r0", "memory"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -206,15 +209,15 @@ void vStartFirstTask( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" ldr r0, xVTORConst \n"/* Use the NVIC offset register to locate the stack. */
|
" ldr r0, xVTORConst \n" /* Use the NVIC offset register to locate the stack. */
|
||||||
" ldr r0, [r0] \n"/* Read the VTOR register which gives the address of vector table. */
|
" ldr r0, [r0] \n" /* Read the VTOR register which gives the address of vector table. */
|
||||||
" ldr r0, [r0] \n"/* The first entry in vector table is stack pointer. */
|
" ldr r0, [r0] \n" /* The first entry in vector table is stack pointer. */
|
||||||
" msr msp, r0 \n"/* Set the MSP back to the start of the stack. */
|
" msr msp, r0 \n" /* Set the MSP back to the start of the stack. */
|
||||||
" cpsie i \n"/* Globally enable interrupts. */
|
" cpsie i \n" /* Globally enable interrupts. */
|
||||||
" cpsie f \n"
|
" cpsie f \n"
|
||||||
" dsb \n"
|
" dsb \n"
|
||||||
" isb \n"
|
" isb \n"
|
||||||
" svc %0 \n"/* System call to start the first task. */
|
" svc %0 \n" /* System call to start the first task. */
|
||||||
" nop \n"
|
" nop \n"
|
||||||
" \n"
|
" \n"
|
||||||
" .align 4 \n"
|
" .align 4 \n"
|
||||||
|
@ -230,12 +233,12 @@ uint32_t ulSetInterruptMask( void ) /* __attribute__(( naked )) PRIVILEGED_FUNCT
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" mrs r0, basepri \n"/* r0 = basepri. Return original basepri value. */
|
" mrs r0, basepri \n" /* r0 = basepri. Return original basepri value. */
|
||||||
" mov r1, %0 \n"/* r1 = configMAX_SYSCALL_INTERRUPT_PRIORITY. */
|
" mov r1, %0 \n" /* r1 = configMAX_SYSCALL_INTERRUPT_PRIORITY. */
|
||||||
" msr basepri, r1 \n"/* Disable interrupts upto configMAX_SYSCALL_INTERRUPT_PRIORITY. */
|
" msr basepri, r1 \n" /* Disable interrupts upto configMAX_SYSCALL_INTERRUPT_PRIORITY. */
|
||||||
" dsb \n"
|
" dsb \n"
|
||||||
" isb \n"
|
" isb \n"
|
||||||
" bx lr \n"/* Return. */
|
" bx lr \n" /* Return. */
|
||||||
::"i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY ) : "memory"
|
::"i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY ) : "memory"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -247,10 +250,10 @@ void vClearInterruptMask( __attribute__( ( unused ) ) uint32_t ulMask ) /* __att
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" msr basepri, r0 \n"/* basepri = ulMask. */
|
" msr basepri, r0 \n" /* basepri = ulMask. */
|
||||||
" dsb \n"
|
" dsb \n"
|
||||||
" isb \n"
|
" isb \n"
|
||||||
" bx lr \n"/* Return. */
|
" bx lr \n" /* Return. */
|
||||||
::: "memory"
|
::: "memory"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -258,8 +261,8 @@ void vClearInterruptMask( __attribute__( ( unused ) ) uint32_t ulMask ) /* __att
|
||||||
|
|
||||||
#if ( configENABLE_MPU == 1 )
|
#if ( configENABLE_MPU == 1 )
|
||||||
|
|
||||||
void PendSV_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
void PendSV_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
|
@ -375,75 +378,74 @@ void PendSV_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
" xRBARConst: .word 0xe000ed9c \n"
|
" xRBARConst: .word 0xe000ed9c \n"
|
||||||
::"i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY )
|
::"i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY )
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* configENABLE_MPU */
|
#else /* configENABLE_MPU */
|
||||||
|
|
||||||
void PendSV_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
void PendSV_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
" \n"
|
" \n"
|
||||||
" mrs r0, psp \n"/* Read PSP in r0. */
|
" mrs r0, psp \n" /* Read PSP in r0. */
|
||||||
" \n"
|
" \n"
|
||||||
#if ( ( configENABLE_FPU == 1 ) || ( configENABLE_MVE == 1 ) )
|
#if ( ( configENABLE_FPU == 1 ) || ( configENABLE_MVE == 1 ) )
|
||||||
" tst lr, #0x10 \n"/* Test Bit[4] in LR. Bit[4] of EXC_RETURN is 0 if the Extended Stack Frame is in use. */
|
" tst lr, #0x10 \n" /* Test Bit[4] in LR. Bit[4] of EXC_RETURN is 0 if the Extended Stack Frame is in use. */
|
||||||
" it eq \n"
|
" it eq \n"
|
||||||
" vstmdbeq r0!, {s16-s31} \n"/* Store the additional FP context registers which are not saved automatically. */
|
" vstmdbeq r0!, {s16-s31} \n" /* Store the additional FP context registers which are not saved automatically. */
|
||||||
#endif /* configENABLE_FPU || configENABLE_MVE */
|
#endif /* configENABLE_FPU || configENABLE_MVE */
|
||||||
" \n"
|
" \n"
|
||||||
" mrs r2, psplim \n"/* r2 = PSPLIM. */
|
" mrs r2, psplim \n" /* r2 = PSPLIM. */
|
||||||
" mov r3, lr \n"/* r3 = LR/EXC_RETURN. */
|
" mov r3, lr \n" /* r3 = LR/EXC_RETURN. */
|
||||||
" stmdb r0!, {r2-r11} \n"/* Store on the stack - PSPLIM, LR and registers that are not automatically saved. */
|
" stmdb r0!, {r2-r11} \n" /* Store on the stack - PSPLIM, LR and registers that are not automatically saved. */
|
||||||
" \n"
|
" \n"
|
||||||
" ldr r2, pxCurrentTCBConst \n"/* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
" ldr r2, pxCurrentTCBConst \n" /* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
||||||
" ldr r1, [r2] \n"/* Read pxCurrentTCB. */
|
" ldr r1, [r2] \n" /* Read pxCurrentTCB. */
|
||||||
" str r0, [r1] \n"/* Save the new top of stack in TCB. */
|
" str r0, [r1] \n" /* Save the new top of stack in TCB. */
|
||||||
" \n"
|
" \n"
|
||||||
" mov r0, %0 \n"/* r0 = configMAX_SYSCALL_INTERRUPT_PRIORITY */
|
" mov r0, %0 \n" /* r0 = configMAX_SYSCALL_INTERRUPT_PRIORITY */
|
||||||
" msr basepri, r0 \n"/* Disable interrupts upto configMAX_SYSCALL_INTERRUPT_PRIORITY. */
|
" msr basepri, r0 \n" /* Disable interrupts upto configMAX_SYSCALL_INTERRUPT_PRIORITY. */
|
||||||
" dsb \n"
|
" dsb \n"
|
||||||
" isb \n"
|
" isb \n"
|
||||||
" bl vTaskSwitchContext \n"
|
" bl vTaskSwitchContext \n"
|
||||||
" mov r0, #0 \n"/* r0 = 0. */
|
" mov r0, #0 \n" /* r0 = 0. */
|
||||||
" msr basepri, r0 \n"/* Enable interrupts. */
|
" msr basepri, r0 \n" /* Enable interrupts. */
|
||||||
" \n"
|
" \n"
|
||||||
" ldr r2, pxCurrentTCBConst \n"/* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
" ldr r2, pxCurrentTCBConst \n" /* Read the location of pxCurrentTCB i.e. &( pxCurrentTCB ). */
|
||||||
" ldr r1, [r2] \n"/* Read pxCurrentTCB. */
|
" ldr r1, [r2] \n" /* Read pxCurrentTCB. */
|
||||||
" ldr r0, [r1] \n"/* The first item in pxCurrentTCB is the task top of stack. r0 now points to the top of stack. */
|
" ldr r0, [r1] \n" /* The first item in pxCurrentTCB is the task top of stack. r0 now points to the top of stack. */
|
||||||
" \n"
|
" \n"
|
||||||
" ldmia r0!, {r2-r11} \n"/* Read from stack - r2 = PSPLIM, r3 = LR and r4-r11 restored. */
|
" ldmia r0!, {r2-r11} \n" /* Read from stack - r2 = PSPLIM, r3 = LR and r4-r11 restored. */
|
||||||
" \n"
|
" \n"
|
||||||
#if ( ( configENABLE_FPU == 1 ) || ( configENABLE_MVE == 1 ) )
|
#if ( ( configENABLE_FPU == 1 ) || ( configENABLE_MVE == 1 ) )
|
||||||
" tst r3, #0x10 \n"/* Test Bit[4] in LR. Bit[4] of EXC_RETURN is 0 if the Extended Stack Frame is in use. */
|
" tst r3, #0x10 \n" /* Test Bit[4] in LR. Bit[4] of EXC_RETURN is 0 if the Extended Stack Frame is in use. */
|
||||||
" it eq \n"
|
" it eq \n"
|
||||||
" vldmiaeq r0!, {s16-s31} \n"/* Restore the additional FP context registers which are not restored automatically. */
|
" vldmiaeq r0!, {s16-s31} \n" /* Restore the additional FP context registers which are not restored automatically. */
|
||||||
#endif /* configENABLE_FPU || configENABLE_MVE */
|
#endif /* configENABLE_FPU || configENABLE_MVE */
|
||||||
" \n"
|
" \n"
|
||||||
" msr psplim, r2 \n"/* Restore the PSPLIM register value for the task. */
|
" msr psplim, r2 \n" /* Restore the PSPLIM register value for the task. */
|
||||||
" msr psp, r0 \n"/* Remember the new top of stack for the task. */
|
" msr psp, r0 \n" /* Remember the new top of stack for the task. */
|
||||||
" bx r3 \n"
|
" bx r3 \n"
|
||||||
" \n"
|
" \n"
|
||||||
" .align 4 \n"
|
" .align 4 \n"
|
||||||
"pxCurrentTCBConst: .word pxCurrentTCB \n"
|
"pxCurrentTCBConst: .word pxCurrentTCB \n"
|
||||||
::"i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY )
|
::"i" ( configMAX_SYSCALL_INTERRUPT_PRIORITY )
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* configENABLE_MPU */
|
#endif /* configENABLE_MPU */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
||||||
|
|
||||||
void SVC_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
void SVC_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
".syntax unified \n"
|
".syntax unified \n"
|
||||||
".extern vPortSVCHandler_C \n"
|
".extern vPortSVCHandler_C \n"
|
||||||
".extern vSystemCallEnter \n"
|
".extern vSystemCallEnter \n"
|
||||||
".extern vSystemCallEnter_1 \n"
|
|
||||||
".extern vSystemCallExit \n"
|
".extern vSystemCallExit \n"
|
||||||
" \n"
|
" \n"
|
||||||
"tst lr, #4 \n"
|
"tst lr, #4 \n"
|
||||||
|
@ -454,10 +456,8 @@ void SVC_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
"ldr r1, [r0, #24] \n"
|
"ldr r1, [r0, #24] \n"
|
||||||
"ldrb r2, [r1, #-2] \n"
|
"ldrb r2, [r1, #-2] \n"
|
||||||
"cmp r2, %0 \n"
|
"cmp r2, %0 \n"
|
||||||
"beq syscall_enter \n"
|
"blt syscall_enter \n"
|
||||||
"cmp r2, %1 \n"
|
"cmp r2, %1 \n"
|
||||||
"beq syscall_enter_1 \n"
|
|
||||||
"cmp r2, %2 \n"
|
|
||||||
"beq syscall_exit \n"
|
"beq syscall_exit \n"
|
||||||
"b vPortSVCHandler_C \n"
|
"b vPortSVCHandler_C \n"
|
||||||
" \n"
|
" \n"
|
||||||
|
@ -465,24 +465,20 @@ void SVC_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
" mov r1, lr \n"
|
" mov r1, lr \n"
|
||||||
" b vSystemCallEnter \n"
|
" b vSystemCallEnter \n"
|
||||||
" \n"
|
" \n"
|
||||||
"syscall_enter_1: \n"
|
|
||||||
" mov r1, lr \n"
|
|
||||||
" b vSystemCallEnter_1 \n"
|
|
||||||
" \n"
|
|
||||||
"syscall_exit: \n"
|
"syscall_exit: \n"
|
||||||
" mov r1, lr \n"
|
" mov r1, lr \n"
|
||||||
" b vSystemCallExit \n"
|
" b vSystemCallExit \n"
|
||||||
" \n"
|
" \n"
|
||||||
: /* No outputs. */
|
: /* No outputs. */
|
||||||
:"i" ( portSVC_SYSTEM_CALL_ENTER ), "i" ( portSVC_SYSTEM_CALL_ENTER_1 ), "i" ( portSVC_SYSTEM_CALL_EXIT )
|
: "i" ( NUM_SYSTEM_CALLS ), "i" ( portSVC_SYSTEM_CALL_EXIT )
|
||||||
: "r0", "r1", "r2", "memory"
|
: "r0", "r1", "r2", "memory"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
#else /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
||||||
|
|
||||||
void SVC_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
void SVC_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
{
|
{
|
||||||
__asm volatile
|
__asm volatile
|
||||||
(
|
(
|
||||||
" .syntax unified \n"
|
" .syntax unified \n"
|
||||||
|
@ -497,7 +493,7 @@ void SVC_Handler( void ) /* __attribute__ (( naked )) PRIVILEGED_FUNCTION */
|
||||||
" .align 4 \n"
|
" .align 4 \n"
|
||||||
"svchandler_address_const: .word vPortSVCHandler_C \n"
|
"svchandler_address_const: .word vPortSVCHandler_C \n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
#endif /* ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
@ -32,15 +32,12 @@
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
#include "FreeRTOSConfig.h"
|
#include "FreeRTOSConfig.h"
|
||||||
|
#include "mpu_syscall_numbers.h"
|
||||||
|
|
||||||
#ifndef configUSE_MPU_WRAPPERS_V1
|
#ifndef configUSE_MPU_WRAPPERS_V1
|
||||||
#define configUSE_MPU_WRAPPERS_V1 0
|
#define configUSE_MPU_WRAPPERS_V1 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* These must be in sync with portmacro.h. */
|
|
||||||
#define portSVC_SYSTEM_CALL_ENTER 4 /* System calls with upto 4 parameters. */
|
|
||||||
#define portSVC_SYSTEM_CALL_ENTER_1 5 /* System calls with 5 parameters. */
|
|
||||||
#define portSVC_SYSTEM_CALL_EXIT 6
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
||||||
|
@ -57,10 +54,7 @@ MPU_xTaskDelayUntil:
|
||||||
b MPU_xTaskDelayUntilImpl
|
b MPU_xTaskDelayUntilImpl
|
||||||
MPU_xTaskDelayUntil_Unpriv:
|
MPU_xTaskDelayUntil_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskDelayUntil
|
||||||
bl MPU_xTaskDelayUntilImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskAbortDelay
|
PUBLIC MPU_xTaskAbortDelay
|
||||||
|
@ -75,10 +69,7 @@ MPU_xTaskAbortDelay:
|
||||||
b MPU_xTaskAbortDelayImpl
|
b MPU_xTaskAbortDelayImpl
|
||||||
MPU_xTaskAbortDelay_Unpriv:
|
MPU_xTaskAbortDelay_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskAbortDelay
|
||||||
bl MPU_xTaskAbortDelayImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskDelay
|
PUBLIC MPU_vTaskDelay
|
||||||
|
@ -93,10 +84,7 @@ MPU_vTaskDelay:
|
||||||
b MPU_vTaskDelayImpl
|
b MPU_vTaskDelayImpl
|
||||||
MPU_vTaskDelay_Unpriv:
|
MPU_vTaskDelay_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskDelay
|
||||||
bl MPU_vTaskDelayImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxTaskPriorityGet
|
PUBLIC MPU_uxTaskPriorityGet
|
||||||
|
@ -111,10 +99,7 @@ MPU_uxTaskPriorityGet:
|
||||||
b MPU_uxTaskPriorityGetImpl
|
b MPU_uxTaskPriorityGetImpl
|
||||||
MPU_uxTaskPriorityGet_Unpriv:
|
MPU_uxTaskPriorityGet_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxTaskPriorityGet
|
||||||
bl MPU_uxTaskPriorityGetImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_eTaskGetState
|
PUBLIC MPU_eTaskGetState
|
||||||
|
@ -129,10 +114,7 @@ MPU_eTaskGetState:
|
||||||
b MPU_eTaskGetStateImpl
|
b MPU_eTaskGetStateImpl
|
||||||
MPU_eTaskGetState_Unpriv:
|
MPU_eTaskGetState_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_eTaskGetState
|
||||||
bl MPU_eTaskGetStateImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskGetInfo
|
PUBLIC MPU_vTaskGetInfo
|
||||||
|
@ -147,10 +129,7 @@ MPU_vTaskGetInfo:
|
||||||
b MPU_vTaskGetInfoImpl
|
b MPU_vTaskGetInfoImpl
|
||||||
MPU_vTaskGetInfo_Unpriv:
|
MPU_vTaskGetInfo_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskGetInfo
|
||||||
bl MPU_vTaskGetInfoImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGetIdleTaskHandle
|
PUBLIC MPU_xTaskGetIdleTaskHandle
|
||||||
|
@ -165,10 +144,7 @@ MPU_xTaskGetIdleTaskHandle:
|
||||||
b MPU_xTaskGetIdleTaskHandleImpl
|
b MPU_xTaskGetIdleTaskHandleImpl
|
||||||
MPU_xTaskGetIdleTaskHandle_Unpriv:
|
MPU_xTaskGetIdleTaskHandle_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskGetIdleTaskHandle
|
||||||
bl MPU_xTaskGetIdleTaskHandleImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskSuspend
|
PUBLIC MPU_vTaskSuspend
|
||||||
|
@ -183,10 +159,7 @@ MPU_vTaskSuspend:
|
||||||
b MPU_vTaskSuspendImpl
|
b MPU_vTaskSuspendImpl
|
||||||
MPU_vTaskSuspend_Unpriv:
|
MPU_vTaskSuspend_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskSuspend
|
||||||
bl MPU_vTaskSuspendImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskResume
|
PUBLIC MPU_vTaskResume
|
||||||
|
@ -201,10 +174,7 @@ MPU_vTaskResume:
|
||||||
b MPU_vTaskResumeImpl
|
b MPU_vTaskResumeImpl
|
||||||
MPU_vTaskResume_Unpriv:
|
MPU_vTaskResume_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskResume
|
||||||
bl MPU_vTaskResumeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGetTickCount
|
PUBLIC MPU_xTaskGetTickCount
|
||||||
|
@ -219,10 +189,7 @@ MPU_xTaskGetTickCount:
|
||||||
b MPU_xTaskGetTickCountImpl
|
b MPU_xTaskGetTickCountImpl
|
||||||
MPU_xTaskGetTickCount_Unpriv:
|
MPU_xTaskGetTickCount_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskGetTickCount
|
||||||
bl MPU_xTaskGetTickCountImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxTaskGetNumberOfTasks
|
PUBLIC MPU_uxTaskGetNumberOfTasks
|
||||||
|
@ -237,10 +204,7 @@ MPU_uxTaskGetNumberOfTasks:
|
||||||
b MPU_uxTaskGetNumberOfTasksImpl
|
b MPU_uxTaskGetNumberOfTasksImpl
|
||||||
MPU_uxTaskGetNumberOfTasks_Unpriv:
|
MPU_uxTaskGetNumberOfTasks_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxTaskGetNumberOfTasks
|
||||||
bl MPU_uxTaskGetNumberOfTasksImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_pcTaskGetName
|
PUBLIC MPU_pcTaskGetName
|
||||||
|
@ -255,10 +219,7 @@ MPU_pcTaskGetName:
|
||||||
b MPU_pcTaskGetNameImpl
|
b MPU_pcTaskGetNameImpl
|
||||||
MPU_pcTaskGetName_Unpriv:
|
MPU_pcTaskGetName_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_pcTaskGetName
|
||||||
bl MPU_pcTaskGetNameImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_ulTaskGetRunTimeCounter
|
PUBLIC MPU_ulTaskGetRunTimeCounter
|
||||||
|
@ -273,10 +234,7 @@ MPU_ulTaskGetRunTimeCounter:
|
||||||
b MPU_ulTaskGetRunTimeCounterImpl
|
b MPU_ulTaskGetRunTimeCounterImpl
|
||||||
MPU_ulTaskGetRunTimeCounter_Unpriv:
|
MPU_ulTaskGetRunTimeCounter_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_ulTaskGetRunTimeCounter
|
||||||
bl MPU_ulTaskGetRunTimeCounterImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_ulTaskGetRunTimePercent
|
PUBLIC MPU_ulTaskGetRunTimePercent
|
||||||
|
@ -291,10 +249,7 @@ MPU_ulTaskGetRunTimePercent:
|
||||||
b MPU_ulTaskGetRunTimePercentImpl
|
b MPU_ulTaskGetRunTimePercentImpl
|
||||||
MPU_ulTaskGetRunTimePercent_Unpriv:
|
MPU_ulTaskGetRunTimePercent_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_ulTaskGetRunTimePercent
|
||||||
bl MPU_ulTaskGetRunTimePercentImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_ulTaskGetIdleRunTimePercent
|
PUBLIC MPU_ulTaskGetIdleRunTimePercent
|
||||||
|
@ -309,10 +264,7 @@ MPU_ulTaskGetIdleRunTimePercent:
|
||||||
b MPU_ulTaskGetIdleRunTimePercentImpl
|
b MPU_ulTaskGetIdleRunTimePercentImpl
|
||||||
MPU_ulTaskGetIdleRunTimePercent_Unpriv:
|
MPU_ulTaskGetIdleRunTimePercent_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_ulTaskGetIdleRunTimePercent
|
||||||
bl MPU_ulTaskGetIdleRunTimePercentImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_ulTaskGetIdleRunTimeCounter
|
PUBLIC MPU_ulTaskGetIdleRunTimeCounter
|
||||||
|
@ -327,10 +279,7 @@ MPU_ulTaskGetIdleRunTimeCounter:
|
||||||
b MPU_ulTaskGetIdleRunTimeCounterImpl
|
b MPU_ulTaskGetIdleRunTimeCounterImpl
|
||||||
MPU_ulTaskGetIdleRunTimeCounter_Unpriv:
|
MPU_ulTaskGetIdleRunTimeCounter_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_ulTaskGetIdleRunTimeCounter
|
||||||
bl MPU_ulTaskGetIdleRunTimeCounterImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskSetApplicationTaskTag
|
PUBLIC MPU_vTaskSetApplicationTaskTag
|
||||||
|
@ -345,10 +294,7 @@ MPU_vTaskSetApplicationTaskTag:
|
||||||
b MPU_vTaskSetApplicationTaskTagImpl
|
b MPU_vTaskSetApplicationTaskTagImpl
|
||||||
MPU_vTaskSetApplicationTaskTag_Unpriv:
|
MPU_vTaskSetApplicationTaskTag_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskSetApplicationTaskTag
|
||||||
bl MPU_vTaskSetApplicationTaskTagImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGetApplicationTaskTag
|
PUBLIC MPU_xTaskGetApplicationTaskTag
|
||||||
|
@ -363,10 +309,7 @@ MPU_xTaskGetApplicationTaskTag:
|
||||||
b MPU_xTaskGetApplicationTaskTagImpl
|
b MPU_xTaskGetApplicationTaskTagImpl
|
||||||
MPU_xTaskGetApplicationTaskTag_Unpriv:
|
MPU_xTaskGetApplicationTaskTag_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskGetApplicationTaskTag
|
||||||
bl MPU_xTaskGetApplicationTaskTagImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskSetThreadLocalStoragePointer
|
PUBLIC MPU_vTaskSetThreadLocalStoragePointer
|
||||||
|
@ -381,10 +324,7 @@ MPU_vTaskSetThreadLocalStoragePointer:
|
||||||
b MPU_vTaskSetThreadLocalStoragePointerImpl
|
b MPU_vTaskSetThreadLocalStoragePointerImpl
|
||||||
MPU_vTaskSetThreadLocalStoragePointer_Unpriv:
|
MPU_vTaskSetThreadLocalStoragePointer_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskSetThreadLocalStoragePointer
|
||||||
bl MPU_vTaskSetThreadLocalStoragePointerImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_pvTaskGetThreadLocalStoragePointer
|
PUBLIC MPU_pvTaskGetThreadLocalStoragePointer
|
||||||
|
@ -399,10 +339,7 @@ MPU_pvTaskGetThreadLocalStoragePointer:
|
||||||
b MPU_pvTaskGetThreadLocalStoragePointerImpl
|
b MPU_pvTaskGetThreadLocalStoragePointerImpl
|
||||||
MPU_pvTaskGetThreadLocalStoragePointer_Unpriv:
|
MPU_pvTaskGetThreadLocalStoragePointer_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_pvTaskGetThreadLocalStoragePointer
|
||||||
bl MPU_pvTaskGetThreadLocalStoragePointerImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxTaskGetSystemState
|
PUBLIC MPU_uxTaskGetSystemState
|
||||||
|
@ -417,10 +354,7 @@ MPU_uxTaskGetSystemState:
|
||||||
b MPU_uxTaskGetSystemStateImpl
|
b MPU_uxTaskGetSystemStateImpl
|
||||||
MPU_uxTaskGetSystemState_Unpriv:
|
MPU_uxTaskGetSystemState_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxTaskGetSystemState
|
||||||
bl MPU_uxTaskGetSystemStateImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxTaskGetStackHighWaterMark
|
PUBLIC MPU_uxTaskGetStackHighWaterMark
|
||||||
|
@ -435,10 +369,7 @@ MPU_uxTaskGetStackHighWaterMark:
|
||||||
b MPU_uxTaskGetStackHighWaterMarkImpl
|
b MPU_uxTaskGetStackHighWaterMarkImpl
|
||||||
MPU_uxTaskGetStackHighWaterMark_Unpriv:
|
MPU_uxTaskGetStackHighWaterMark_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxTaskGetStackHighWaterMark
|
||||||
bl MPU_uxTaskGetStackHighWaterMarkImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxTaskGetStackHighWaterMark2
|
PUBLIC MPU_uxTaskGetStackHighWaterMark2
|
||||||
|
@ -453,10 +384,7 @@ MPU_uxTaskGetStackHighWaterMark2:
|
||||||
b MPU_uxTaskGetStackHighWaterMark2Impl
|
b MPU_uxTaskGetStackHighWaterMark2Impl
|
||||||
MPU_uxTaskGetStackHighWaterMark2_Unpriv:
|
MPU_uxTaskGetStackHighWaterMark2_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxTaskGetStackHighWaterMark2
|
||||||
bl MPU_uxTaskGetStackHighWaterMark2Impl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGetCurrentTaskHandle
|
PUBLIC MPU_xTaskGetCurrentTaskHandle
|
||||||
|
@ -471,10 +399,7 @@ MPU_xTaskGetCurrentTaskHandle:
|
||||||
b MPU_xTaskGetCurrentTaskHandleImpl
|
b MPU_xTaskGetCurrentTaskHandleImpl
|
||||||
MPU_xTaskGetCurrentTaskHandle_Unpriv:
|
MPU_xTaskGetCurrentTaskHandle_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskGetCurrentTaskHandle
|
||||||
bl MPU_xTaskGetCurrentTaskHandleImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGetSchedulerState
|
PUBLIC MPU_xTaskGetSchedulerState
|
||||||
|
@ -489,10 +414,7 @@ MPU_xTaskGetSchedulerState:
|
||||||
b MPU_xTaskGetSchedulerStateImpl
|
b MPU_xTaskGetSchedulerStateImpl
|
||||||
MPU_xTaskGetSchedulerState_Unpriv:
|
MPU_xTaskGetSchedulerState_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskGetSchedulerState
|
||||||
bl MPU_xTaskGetSchedulerStateImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskSetTimeOutState
|
PUBLIC MPU_vTaskSetTimeOutState
|
||||||
|
@ -507,10 +429,7 @@ MPU_vTaskSetTimeOutState:
|
||||||
b MPU_vTaskSetTimeOutStateImpl
|
b MPU_vTaskSetTimeOutStateImpl
|
||||||
MPU_vTaskSetTimeOutState_Unpriv:
|
MPU_vTaskSetTimeOutState_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskSetTimeOutState
|
||||||
bl MPU_vTaskSetTimeOutStateImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskCheckForTimeOut
|
PUBLIC MPU_xTaskCheckForTimeOut
|
||||||
|
@ -525,14 +444,11 @@ MPU_xTaskCheckForTimeOut:
|
||||||
b MPU_xTaskCheckForTimeOutImpl
|
b MPU_xTaskCheckForTimeOutImpl
|
||||||
MPU_xTaskCheckForTimeOut_Unpriv:
|
MPU_xTaskCheckForTimeOut_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskCheckForTimeOut
|
||||||
bl MPU_xTaskCheckForTimeOutImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGenericNotify
|
PUBLIC MPU_xTaskGenericNotifyEntry
|
||||||
MPU_xTaskGenericNotify:
|
MPU_xTaskGenericNotifyEntry:
|
||||||
push {r0, r1}
|
push {r0, r1}
|
||||||
mrs r0, control
|
mrs r0, control
|
||||||
movs r1, #1
|
movs r1, #1
|
||||||
|
@ -543,14 +459,11 @@ MPU_xTaskGenericNotify:
|
||||||
b MPU_xTaskGenericNotifyImpl
|
b MPU_xTaskGenericNotifyImpl
|
||||||
MPU_xTaskGenericNotify_Unpriv:
|
MPU_xTaskGenericNotify_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER_1
|
svc #SYSTEM_CALL_xTaskGenericNotify
|
||||||
bl MPU_xTaskGenericNotifyImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGenericNotifyWait
|
PUBLIC MPU_xTaskGenericNotifyWaitEntry
|
||||||
MPU_xTaskGenericNotifyWait:
|
MPU_xTaskGenericNotifyWaitEntry:
|
||||||
push {r0, r1}
|
push {r0, r1}
|
||||||
mrs r0, control
|
mrs r0, control
|
||||||
movs r1, #1
|
movs r1, #1
|
||||||
|
@ -561,10 +474,7 @@ MPU_xTaskGenericNotifyWait:
|
||||||
b MPU_xTaskGenericNotifyWaitImpl
|
b MPU_xTaskGenericNotifyWaitImpl
|
||||||
MPU_xTaskGenericNotifyWait_Unpriv:
|
MPU_xTaskGenericNotifyWait_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER_1
|
svc #SYSTEM_CALL_xTaskGenericNotifyWait
|
||||||
bl MPU_xTaskGenericNotifyWaitImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_ulTaskGenericNotifyTake
|
PUBLIC MPU_ulTaskGenericNotifyTake
|
||||||
|
@ -579,10 +489,7 @@ MPU_ulTaskGenericNotifyTake:
|
||||||
b MPU_ulTaskGenericNotifyTakeImpl
|
b MPU_ulTaskGenericNotifyTakeImpl
|
||||||
MPU_ulTaskGenericNotifyTake_Unpriv:
|
MPU_ulTaskGenericNotifyTake_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_ulTaskGenericNotifyTake
|
||||||
bl MPU_ulTaskGenericNotifyTakeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGenericNotifyStateClear
|
PUBLIC MPU_xTaskGenericNotifyStateClear
|
||||||
|
@ -597,10 +504,7 @@ MPU_xTaskGenericNotifyStateClear:
|
||||||
b MPU_xTaskGenericNotifyStateClearImpl
|
b MPU_xTaskGenericNotifyStateClearImpl
|
||||||
MPU_xTaskGenericNotifyStateClear_Unpriv:
|
MPU_xTaskGenericNotifyStateClear_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskGenericNotifyStateClear
|
||||||
bl MPU_xTaskGenericNotifyStateClearImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_ulTaskGenericNotifyValueClear
|
PUBLIC MPU_ulTaskGenericNotifyValueClear
|
||||||
|
@ -615,10 +519,7 @@ MPU_ulTaskGenericNotifyValueClear:
|
||||||
b MPU_ulTaskGenericNotifyValueClearImpl
|
b MPU_ulTaskGenericNotifyValueClearImpl
|
||||||
MPU_ulTaskGenericNotifyValueClear_Unpriv:
|
MPU_ulTaskGenericNotifyValueClear_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_ulTaskGenericNotifyValueClear
|
||||||
bl MPU_ulTaskGenericNotifyValueClearImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueGenericSend
|
PUBLIC MPU_xQueueGenericSend
|
||||||
|
@ -633,10 +534,7 @@ MPU_xQueueGenericSend:
|
||||||
b MPU_xQueueGenericSendImpl
|
b MPU_xQueueGenericSendImpl
|
||||||
MPU_xQueueGenericSend_Unpriv:
|
MPU_xQueueGenericSend_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueGenericSend
|
||||||
bl MPU_xQueueGenericSendImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxQueueMessagesWaiting
|
PUBLIC MPU_uxQueueMessagesWaiting
|
||||||
|
@ -651,10 +549,7 @@ MPU_uxQueueMessagesWaiting:
|
||||||
b MPU_uxQueueMessagesWaitingImpl
|
b MPU_uxQueueMessagesWaitingImpl
|
||||||
MPU_uxQueueMessagesWaiting_Unpriv:
|
MPU_uxQueueMessagesWaiting_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxQueueMessagesWaiting
|
||||||
bl MPU_uxQueueMessagesWaitingImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxQueueSpacesAvailable
|
PUBLIC MPU_uxQueueSpacesAvailable
|
||||||
|
@ -669,10 +564,7 @@ MPU_uxQueueSpacesAvailable:
|
||||||
b MPU_uxQueueSpacesAvailableImpl
|
b MPU_uxQueueSpacesAvailableImpl
|
||||||
MPU_uxQueueSpacesAvailable_Unpriv:
|
MPU_uxQueueSpacesAvailable_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxQueueSpacesAvailable
|
||||||
bl MPU_uxQueueSpacesAvailableImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueReceive
|
PUBLIC MPU_xQueueReceive
|
||||||
|
@ -687,10 +579,7 @@ MPU_xQueueReceive:
|
||||||
b MPU_xQueueReceiveImpl
|
b MPU_xQueueReceiveImpl
|
||||||
MPU_xQueueReceive_Unpriv:
|
MPU_xQueueReceive_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueReceive
|
||||||
bl MPU_xQueueReceiveImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueuePeek
|
PUBLIC MPU_xQueuePeek
|
||||||
|
@ -705,10 +594,7 @@ MPU_xQueuePeek:
|
||||||
b MPU_xQueuePeekImpl
|
b MPU_xQueuePeekImpl
|
||||||
MPU_xQueuePeek_Unpriv:
|
MPU_xQueuePeek_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueuePeek
|
||||||
bl MPU_xQueuePeekImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueSemaphoreTake
|
PUBLIC MPU_xQueueSemaphoreTake
|
||||||
|
@ -723,10 +609,7 @@ MPU_xQueueSemaphoreTake:
|
||||||
b MPU_xQueueSemaphoreTakeImpl
|
b MPU_xQueueSemaphoreTakeImpl
|
||||||
MPU_xQueueSemaphoreTake_Unpriv:
|
MPU_xQueueSemaphoreTake_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueSemaphoreTake
|
||||||
bl MPU_xQueueSemaphoreTakeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueGetMutexHolder
|
PUBLIC MPU_xQueueGetMutexHolder
|
||||||
|
@ -741,10 +624,7 @@ MPU_xQueueGetMutexHolder:
|
||||||
b MPU_xQueueGetMutexHolderImpl
|
b MPU_xQueueGetMutexHolderImpl
|
||||||
MPU_xQueueGetMutexHolder_Unpriv:
|
MPU_xQueueGetMutexHolder_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueGetMutexHolder
|
||||||
bl MPU_xQueueGetMutexHolderImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueTakeMutexRecursive
|
PUBLIC MPU_xQueueTakeMutexRecursive
|
||||||
|
@ -759,10 +639,7 @@ MPU_xQueueTakeMutexRecursive:
|
||||||
b MPU_xQueueTakeMutexRecursiveImpl
|
b MPU_xQueueTakeMutexRecursiveImpl
|
||||||
MPU_xQueueTakeMutexRecursive_Unpriv:
|
MPU_xQueueTakeMutexRecursive_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueTakeMutexRecursive
|
||||||
bl MPU_xQueueTakeMutexRecursiveImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueGiveMutexRecursive
|
PUBLIC MPU_xQueueGiveMutexRecursive
|
||||||
|
@ -777,10 +654,7 @@ MPU_xQueueGiveMutexRecursive:
|
||||||
b MPU_xQueueGiveMutexRecursiveImpl
|
b MPU_xQueueGiveMutexRecursiveImpl
|
||||||
MPU_xQueueGiveMutexRecursive_Unpriv:
|
MPU_xQueueGiveMutexRecursive_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueGiveMutexRecursive
|
||||||
bl MPU_xQueueGiveMutexRecursiveImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueSelectFromSet
|
PUBLIC MPU_xQueueSelectFromSet
|
||||||
|
@ -795,10 +669,7 @@ MPU_xQueueSelectFromSet:
|
||||||
b MPU_xQueueSelectFromSetImpl
|
b MPU_xQueueSelectFromSetImpl
|
||||||
MPU_xQueueSelectFromSet_Unpriv:
|
MPU_xQueueSelectFromSet_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueSelectFromSet
|
||||||
bl MPU_xQueueSelectFromSetImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueAddToSet
|
PUBLIC MPU_xQueueAddToSet
|
||||||
|
@ -813,10 +684,7 @@ MPU_xQueueAddToSet:
|
||||||
b MPU_xQueueAddToSetImpl
|
b MPU_xQueueAddToSetImpl
|
||||||
MPU_xQueueAddToSet_Unpriv:
|
MPU_xQueueAddToSet_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueAddToSet
|
||||||
bl MPU_xQueueAddToSetImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vQueueAddToRegistry
|
PUBLIC MPU_vQueueAddToRegistry
|
||||||
|
@ -831,10 +699,7 @@ MPU_vQueueAddToRegistry:
|
||||||
b MPU_vQueueAddToRegistryImpl
|
b MPU_vQueueAddToRegistryImpl
|
||||||
MPU_vQueueAddToRegistry_Unpriv:
|
MPU_vQueueAddToRegistry_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vQueueAddToRegistry
|
||||||
bl MPU_vQueueAddToRegistryImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vQueueUnregisterQueue
|
PUBLIC MPU_vQueueUnregisterQueue
|
||||||
|
@ -849,10 +714,7 @@ MPU_vQueueUnregisterQueue:
|
||||||
b MPU_vQueueUnregisterQueueImpl
|
b MPU_vQueueUnregisterQueueImpl
|
||||||
MPU_vQueueUnregisterQueue_Unpriv:
|
MPU_vQueueUnregisterQueue_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vQueueUnregisterQueue
|
||||||
bl MPU_vQueueUnregisterQueueImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_pcQueueGetName
|
PUBLIC MPU_pcQueueGetName
|
||||||
|
@ -867,10 +729,7 @@ MPU_pcQueueGetName:
|
||||||
b MPU_pcQueueGetNameImpl
|
b MPU_pcQueueGetNameImpl
|
||||||
MPU_pcQueueGetName_Unpriv:
|
MPU_pcQueueGetName_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_pcQueueGetName
|
||||||
bl MPU_pcQueueGetNameImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_pvTimerGetTimerID
|
PUBLIC MPU_pvTimerGetTimerID
|
||||||
|
@ -885,10 +744,7 @@ MPU_pvTimerGetTimerID:
|
||||||
b MPU_pvTimerGetTimerIDImpl
|
b MPU_pvTimerGetTimerIDImpl
|
||||||
MPU_pvTimerGetTimerID_Unpriv:
|
MPU_pvTimerGetTimerID_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_pvTimerGetTimerID
|
||||||
bl MPU_pvTimerGetTimerIDImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTimerSetTimerID
|
PUBLIC MPU_vTimerSetTimerID
|
||||||
|
@ -903,10 +759,7 @@ MPU_vTimerSetTimerID:
|
||||||
b MPU_vTimerSetTimerIDImpl
|
b MPU_vTimerSetTimerIDImpl
|
||||||
MPU_vTimerSetTimerID_Unpriv:
|
MPU_vTimerSetTimerID_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTimerSetTimerID
|
||||||
bl MPU_vTimerSetTimerIDImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTimerIsTimerActive
|
PUBLIC MPU_xTimerIsTimerActive
|
||||||
|
@ -921,10 +774,7 @@ MPU_xTimerIsTimerActive:
|
||||||
b MPU_xTimerIsTimerActiveImpl
|
b MPU_xTimerIsTimerActiveImpl
|
||||||
MPU_xTimerIsTimerActive_Unpriv:
|
MPU_xTimerIsTimerActive_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTimerIsTimerActive
|
||||||
bl MPU_xTimerIsTimerActiveImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTimerGetTimerDaemonTaskHandle
|
PUBLIC MPU_xTimerGetTimerDaemonTaskHandle
|
||||||
|
@ -939,14 +789,11 @@ MPU_xTimerGetTimerDaemonTaskHandle:
|
||||||
b MPU_xTimerGetTimerDaemonTaskHandleImpl
|
b MPU_xTimerGetTimerDaemonTaskHandleImpl
|
||||||
MPU_xTimerGetTimerDaemonTaskHandle_Unpriv:
|
MPU_xTimerGetTimerDaemonTaskHandle_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTimerGetTimerDaemonTaskHandle
|
||||||
bl MPU_xTimerGetTimerDaemonTaskHandleImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTimerGenericCommand
|
PUBLIC MPU_xTimerGenericCommandEntry
|
||||||
MPU_xTimerGenericCommand:
|
MPU_xTimerGenericCommandEntry:
|
||||||
push {r0, r1}
|
push {r0, r1}
|
||||||
/* This function can be called from ISR also and therefore, we need a check
|
/* This function can be called from ISR also and therefore, we need a check
|
||||||
* to take privileged path, if called from ISR. */
|
* to take privileged path, if called from ISR. */
|
||||||
|
@ -959,13 +806,10 @@ MPU_xTimerGenericCommand:
|
||||||
beq MPU_xTimerGenericCommand_Priv
|
beq MPU_xTimerGenericCommand_Priv
|
||||||
MPU_xTimerGenericCommand_Unpriv:
|
MPU_xTimerGenericCommand_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER_1
|
svc #SYSTEM_CALL_xTimerGenericCommand
|
||||||
bl MPU_xTimerGenericCommandImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
MPU_xTimerGenericCommand_Priv:
|
MPU_xTimerGenericCommand_Priv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
b MPU_xTimerGenericCommandImpl
|
b MPU_xTimerGenericCommandPrivImpl
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -981,10 +825,7 @@ MPU_pcTimerGetName:
|
||||||
b MPU_pcTimerGetNameImpl
|
b MPU_pcTimerGetNameImpl
|
||||||
MPU_pcTimerGetName_Unpriv:
|
MPU_pcTimerGetName_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_pcTimerGetName
|
||||||
bl MPU_pcTimerGetNameImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTimerSetReloadMode
|
PUBLIC MPU_vTimerSetReloadMode
|
||||||
|
@ -999,10 +840,7 @@ MPU_vTimerSetReloadMode:
|
||||||
b MPU_vTimerSetReloadModeImpl
|
b MPU_vTimerSetReloadModeImpl
|
||||||
MPU_vTimerSetReloadMode_Unpriv:
|
MPU_vTimerSetReloadMode_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTimerSetReloadMode
|
||||||
bl MPU_vTimerSetReloadModeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTimerGetReloadMode
|
PUBLIC MPU_xTimerGetReloadMode
|
||||||
|
@ -1017,10 +855,7 @@ MPU_xTimerGetReloadMode:
|
||||||
b MPU_xTimerGetReloadModeImpl
|
b MPU_xTimerGetReloadModeImpl
|
||||||
MPU_xTimerGetReloadMode_Unpriv:
|
MPU_xTimerGetReloadMode_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTimerGetReloadMode
|
||||||
bl MPU_xTimerGetReloadModeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxTimerGetReloadMode
|
PUBLIC MPU_uxTimerGetReloadMode
|
||||||
|
@ -1035,10 +870,7 @@ MPU_uxTimerGetReloadMode:
|
||||||
b MPU_uxTimerGetReloadModeImpl
|
b MPU_uxTimerGetReloadModeImpl
|
||||||
MPU_uxTimerGetReloadMode_Unpriv:
|
MPU_uxTimerGetReloadMode_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxTimerGetReloadMode
|
||||||
bl MPU_uxTimerGetReloadModeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTimerGetPeriod
|
PUBLIC MPU_xTimerGetPeriod
|
||||||
|
@ -1053,10 +885,7 @@ MPU_xTimerGetPeriod:
|
||||||
b MPU_xTimerGetPeriodImpl
|
b MPU_xTimerGetPeriodImpl
|
||||||
MPU_xTimerGetPeriod_Unpriv:
|
MPU_xTimerGetPeriod_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTimerGetPeriod
|
||||||
bl MPU_xTimerGetPeriodImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTimerGetExpiryTime
|
PUBLIC MPU_xTimerGetExpiryTime
|
||||||
|
@ -1071,14 +900,11 @@ MPU_xTimerGetExpiryTime:
|
||||||
b MPU_xTimerGetExpiryTimeImpl
|
b MPU_xTimerGetExpiryTimeImpl
|
||||||
MPU_xTimerGetExpiryTime_Unpriv:
|
MPU_xTimerGetExpiryTime_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTimerGetExpiryTime
|
||||||
bl MPU_xTimerGetExpiryTimeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xEventGroupWaitBits
|
PUBLIC MPU_xEventGroupWaitBitsEntry
|
||||||
MPU_xEventGroupWaitBits:
|
MPU_xEventGroupWaitBitsEntry:
|
||||||
push {r0, r1}
|
push {r0, r1}
|
||||||
mrs r0, control
|
mrs r0, control
|
||||||
movs r1, #1
|
movs r1, #1
|
||||||
|
@ -1089,10 +915,7 @@ MPU_xEventGroupWaitBits:
|
||||||
b MPU_xEventGroupWaitBitsImpl
|
b MPU_xEventGroupWaitBitsImpl
|
||||||
MPU_xEventGroupWaitBits_Unpriv:
|
MPU_xEventGroupWaitBits_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER_1
|
svc #SYSTEM_CALL_xEventGroupWaitBits
|
||||||
bl MPU_xEventGroupWaitBitsImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xEventGroupClearBits
|
PUBLIC MPU_xEventGroupClearBits
|
||||||
|
@ -1107,10 +930,7 @@ MPU_xEventGroupClearBits:
|
||||||
b MPU_xEventGroupClearBitsImpl
|
b MPU_xEventGroupClearBitsImpl
|
||||||
MPU_xEventGroupClearBits_Unpriv:
|
MPU_xEventGroupClearBits_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xEventGroupClearBits
|
||||||
bl MPU_xEventGroupClearBitsImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xEventGroupSetBits
|
PUBLIC MPU_xEventGroupSetBits
|
||||||
|
@ -1125,10 +945,7 @@ MPU_xEventGroupSetBits:
|
||||||
b MPU_xEventGroupSetBitsImpl
|
b MPU_xEventGroupSetBitsImpl
|
||||||
MPU_xEventGroupSetBits_Unpriv:
|
MPU_xEventGroupSetBits_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xEventGroupSetBits
|
||||||
bl MPU_xEventGroupSetBitsImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xEventGroupSync
|
PUBLIC MPU_xEventGroupSync
|
||||||
|
@ -1143,10 +960,7 @@ MPU_xEventGroupSync:
|
||||||
b MPU_xEventGroupSyncImpl
|
b MPU_xEventGroupSyncImpl
|
||||||
MPU_xEventGroupSync_Unpriv:
|
MPU_xEventGroupSync_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xEventGroupSync
|
||||||
bl MPU_xEventGroupSyncImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxEventGroupGetNumber
|
PUBLIC MPU_uxEventGroupGetNumber
|
||||||
|
@ -1161,10 +975,7 @@ MPU_uxEventGroupGetNumber:
|
||||||
b MPU_uxEventGroupGetNumberImpl
|
b MPU_uxEventGroupGetNumberImpl
|
||||||
MPU_uxEventGroupGetNumber_Unpriv:
|
MPU_uxEventGroupGetNumber_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxEventGroupGetNumber
|
||||||
bl MPU_uxEventGroupGetNumberImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vEventGroupSetNumber
|
PUBLIC MPU_vEventGroupSetNumber
|
||||||
|
@ -1179,10 +990,7 @@ MPU_vEventGroupSetNumber:
|
||||||
b MPU_vEventGroupSetNumberImpl
|
b MPU_vEventGroupSetNumberImpl
|
||||||
MPU_vEventGroupSetNumber_Unpriv:
|
MPU_vEventGroupSetNumber_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vEventGroupSetNumber
|
||||||
bl MPU_vEventGroupSetNumberImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferSend
|
PUBLIC MPU_xStreamBufferSend
|
||||||
|
@ -1197,10 +1005,7 @@ MPU_xStreamBufferSend:
|
||||||
b MPU_xStreamBufferSendImpl
|
b MPU_xStreamBufferSendImpl
|
||||||
MPU_xStreamBufferSend_Unpriv:
|
MPU_xStreamBufferSend_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferSend
|
||||||
bl MPU_xStreamBufferSendImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferReceive
|
PUBLIC MPU_xStreamBufferReceive
|
||||||
|
@ -1215,10 +1020,7 @@ MPU_xStreamBufferReceive:
|
||||||
b MPU_xStreamBufferReceiveImpl
|
b MPU_xStreamBufferReceiveImpl
|
||||||
MPU_xStreamBufferReceive_Unpriv:
|
MPU_xStreamBufferReceive_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferReceive
|
||||||
bl MPU_xStreamBufferReceiveImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferIsFull
|
PUBLIC MPU_xStreamBufferIsFull
|
||||||
|
@ -1233,10 +1035,7 @@ MPU_xStreamBufferIsFull:
|
||||||
b MPU_xStreamBufferIsFullImpl
|
b MPU_xStreamBufferIsFullImpl
|
||||||
MPU_xStreamBufferIsFull_Unpriv:
|
MPU_xStreamBufferIsFull_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferIsFull
|
||||||
bl MPU_xStreamBufferIsFullImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferIsEmpty
|
PUBLIC MPU_xStreamBufferIsEmpty
|
||||||
|
@ -1251,10 +1050,7 @@ MPU_xStreamBufferIsEmpty:
|
||||||
b MPU_xStreamBufferIsEmptyImpl
|
b MPU_xStreamBufferIsEmptyImpl
|
||||||
MPU_xStreamBufferIsEmpty_Unpriv:
|
MPU_xStreamBufferIsEmpty_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferIsEmpty
|
||||||
bl MPU_xStreamBufferIsEmptyImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferSpacesAvailable
|
PUBLIC MPU_xStreamBufferSpacesAvailable
|
||||||
|
@ -1269,10 +1065,7 @@ MPU_xStreamBufferSpacesAvailable:
|
||||||
b MPU_xStreamBufferSpacesAvailableImpl
|
b MPU_xStreamBufferSpacesAvailableImpl
|
||||||
MPU_xStreamBufferSpacesAvailable_Unpriv:
|
MPU_xStreamBufferSpacesAvailable_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferSpacesAvailable
|
||||||
bl MPU_xStreamBufferSpacesAvailableImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferBytesAvailable
|
PUBLIC MPU_xStreamBufferBytesAvailable
|
||||||
|
@ -1287,10 +1080,7 @@ MPU_xStreamBufferBytesAvailable:
|
||||||
b MPU_xStreamBufferBytesAvailableImpl
|
b MPU_xStreamBufferBytesAvailableImpl
|
||||||
MPU_xStreamBufferBytesAvailable_Unpriv:
|
MPU_xStreamBufferBytesAvailable_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferBytesAvailable
|
||||||
bl MPU_xStreamBufferBytesAvailableImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferSetTriggerLevel
|
PUBLIC MPU_xStreamBufferSetTriggerLevel
|
||||||
|
@ -1305,10 +1095,7 @@ MPU_xStreamBufferSetTriggerLevel:
|
||||||
b MPU_xStreamBufferSetTriggerLevelImpl
|
b MPU_xStreamBufferSetTriggerLevelImpl
|
||||||
MPU_xStreamBufferSetTriggerLevel_Unpriv:
|
MPU_xStreamBufferSetTriggerLevel_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferSetTriggerLevel
|
||||||
bl MPU_xStreamBufferSetTriggerLevelImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferNextMessageLengthBytes
|
PUBLIC MPU_xStreamBufferNextMessageLengthBytes
|
||||||
|
@ -1323,10 +1110,7 @@ MPU_xStreamBufferNextMessageLengthBytes:
|
||||||
b MPU_xStreamBufferNextMessageLengthBytesImpl
|
b MPU_xStreamBufferNextMessageLengthBytesImpl
|
||||||
MPU_xStreamBufferNextMessageLengthBytes_Unpriv:
|
MPU_xStreamBufferNextMessageLengthBytes_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferNextMessageLengthBytes
|
||||||
bl MPU_xStreamBufferNextMessageLengthBytesImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/* Default weak implementations in case one is not available from
|
/* Default weak implementations in case one is not available from
|
||||||
|
@ -1532,9 +1316,9 @@ MPU_xTimerIsTimerActiveImpl:
|
||||||
MPU_xTimerGetTimerDaemonTaskHandleImpl:
|
MPU_xTimerGetTimerDaemonTaskHandleImpl:
|
||||||
b MPU_xTimerGetTimerDaemonTaskHandleImpl
|
b MPU_xTimerGetTimerDaemonTaskHandleImpl
|
||||||
|
|
||||||
PUBWEAK MPU_xTimerGenericCommandImpl
|
PUBWEAK MPU_xTimerGenericCommandPrivImpl
|
||||||
MPU_xTimerGenericCommandImpl:
|
MPU_xTimerGenericCommandPrivImpl:
|
||||||
b MPU_xTimerGenericCommandImpl
|
b MPU_xTimerGenericCommandPrivImpl
|
||||||
|
|
||||||
PUBWEAK MPU_pcTimerGetNameImpl
|
PUBWEAK MPU_pcTimerGetNameImpl
|
||||||
MPU_pcTimerGetNameImpl:
|
MPU_pcTimerGetNameImpl:
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
@ -33,6 +33,9 @@ the code is included in C files but excluded by the preprocessor in assembly
|
||||||
files (__ICCARM__ is defined by the IAR C compiler but not by the IAR assembler. */
|
files (__ICCARM__ is defined by the IAR C compiler but not by the IAR assembler. */
|
||||||
#include "FreeRTOSConfig.h"
|
#include "FreeRTOSConfig.h"
|
||||||
|
|
||||||
|
/* System call numbers includes. */
|
||||||
|
#include "mpu_syscall_numbers.h"
|
||||||
|
|
||||||
#ifndef configUSE_MPU_WRAPPERS_V1
|
#ifndef configUSE_MPU_WRAPPERS_V1
|
||||||
#define configUSE_MPU_WRAPPERS_V1 0
|
#define configUSE_MPU_WRAPPERS_V1 0
|
||||||
#endif
|
#endif
|
||||||
|
@ -45,7 +48,6 @@ files (__ICCARM__ is defined by the IAR C compiler but not by the IAR assembler.
|
||||||
EXTERN SecureContext_LoadContext
|
EXTERN SecureContext_LoadContext
|
||||||
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
||||||
EXTERN vSystemCallEnter
|
EXTERN vSystemCallEnter
|
||||||
EXTERN vSystemCallEnter_1
|
|
||||||
EXTERN vSystemCallExit
|
EXTERN vSystemCallExit
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -95,7 +97,7 @@ vResetPrivilege:
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
vPortAllocateSecureContext:
|
vPortAllocateSecureContext:
|
||||||
svc 0 /* Secure context is allocated in the supervisor call. portSVC_ALLOCATE_SECURE_CONTEXT = 0. */
|
svc 100 /* Secure context is allocated in the supervisor call. portSVC_ALLOCATE_SECURE_CONTEXT = 100. */
|
||||||
bx lr /* Return. */
|
bx lr /* Return. */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -230,7 +232,7 @@ vStartFirstTask:
|
||||||
cpsie i /* Globally enable interrupts. */
|
cpsie i /* Globally enable interrupts. */
|
||||||
dsb
|
dsb
|
||||||
isb
|
isb
|
||||||
svc 2 /* System call to start the first task. portSVC_START_SCHEDULER = 2. */
|
svc 102 /* System call to start the first task. portSVC_START_SCHEDULER = 102. */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
ulSetInterruptMask:
|
ulSetInterruptMask:
|
||||||
|
@ -482,21 +484,17 @@ SVC_Handler:
|
||||||
b route_svc
|
b route_svc
|
||||||
|
|
||||||
route_svc:
|
route_svc:
|
||||||
ldr r2, [r0, #24]
|
ldr r3, [r0, #24]
|
||||||
subs r2, #2
|
subs r3, #2
|
||||||
ldrb r3, [r2, #0]
|
ldrb r2, [r3, #0]
|
||||||
cmp r3, #4 /* portSVC_SYSTEM_CALL_ENTER. */
|
cmp r2, #NUM_SYSTEM_CALLS
|
||||||
beq system_call_enter
|
blt system_call_enter
|
||||||
cmp r3, #5 /* portSVC_SYSTEM_CALL_ENTER_1. */
|
cmp r2, #104 /* portSVC_SYSTEM_CALL_EXIT. */
|
||||||
beq system_call_enter_1
|
|
||||||
cmp r3, #6 /* portSVC_SYSTEM_CALL_EXIT. */
|
|
||||||
beq system_call_exit
|
beq system_call_exit
|
||||||
b vPortSVCHandler_C
|
b vPortSVCHandler_C
|
||||||
|
|
||||||
system_call_enter:
|
system_call_enter:
|
||||||
b vSystemCallEnter
|
b vSystemCallEnter
|
||||||
system_call_enter_1:
|
|
||||||
b vSystemCallEnter_1
|
|
||||||
system_call_exit:
|
system_call_exit:
|
||||||
b vSystemCallExit
|
b vSystemCallExit
|
||||||
|
|
||||||
|
@ -523,7 +521,7 @@ vPortFreeSecureContext:
|
||||||
bne free_secure_context /* Branch if r1 != 0. */
|
bne free_secure_context /* Branch if r1 != 0. */
|
||||||
bx lr /* There is no secure context (xSecureContext is NULL). */
|
bx lr /* There is no secure context (xSecureContext is NULL). */
|
||||||
free_secure_context:
|
free_secure_context:
|
||||||
svc 1 /* Secure context is freed in the supervisor call. portSVC_FREE_SECURE_CONTEXT = 1. */
|
svc 101 /* Secure context is freed in the supervisor call. portSVC_FREE_SECURE_CONTEXT = 101. */
|
||||||
bx lr /* Return. */
|
bx lr /* Return. */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
@ -32,15 +32,12 @@
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
#include "FreeRTOSConfig.h"
|
#include "FreeRTOSConfig.h"
|
||||||
|
#include "mpu_syscall_numbers.h"
|
||||||
|
|
||||||
#ifndef configUSE_MPU_WRAPPERS_V1
|
#ifndef configUSE_MPU_WRAPPERS_V1
|
||||||
#define configUSE_MPU_WRAPPERS_V1 0
|
#define configUSE_MPU_WRAPPERS_V1 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* These must be in sync with portmacro.h. */
|
|
||||||
#define portSVC_SYSTEM_CALL_ENTER 4 /* System calls with upto 4 parameters. */
|
|
||||||
#define portSVC_SYSTEM_CALL_ENTER_1 5 /* System calls with 5 parameters. */
|
|
||||||
#define portSVC_SYSTEM_CALL_EXIT 6
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
||||||
|
@ -57,10 +54,7 @@ MPU_xTaskDelayUntil:
|
||||||
b MPU_xTaskDelayUntilImpl
|
b MPU_xTaskDelayUntilImpl
|
||||||
MPU_xTaskDelayUntil_Unpriv:
|
MPU_xTaskDelayUntil_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskDelayUntil
|
||||||
bl MPU_xTaskDelayUntilImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskAbortDelay
|
PUBLIC MPU_xTaskAbortDelay
|
||||||
|
@ -75,10 +69,7 @@ MPU_xTaskAbortDelay:
|
||||||
b MPU_xTaskAbortDelayImpl
|
b MPU_xTaskAbortDelayImpl
|
||||||
MPU_xTaskAbortDelay_Unpriv:
|
MPU_xTaskAbortDelay_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskAbortDelay
|
||||||
bl MPU_xTaskAbortDelayImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskDelay
|
PUBLIC MPU_vTaskDelay
|
||||||
|
@ -93,10 +84,7 @@ MPU_vTaskDelay:
|
||||||
b MPU_vTaskDelayImpl
|
b MPU_vTaskDelayImpl
|
||||||
MPU_vTaskDelay_Unpriv:
|
MPU_vTaskDelay_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskDelay
|
||||||
bl MPU_vTaskDelayImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxTaskPriorityGet
|
PUBLIC MPU_uxTaskPriorityGet
|
||||||
|
@ -111,10 +99,7 @@ MPU_uxTaskPriorityGet:
|
||||||
b MPU_uxTaskPriorityGetImpl
|
b MPU_uxTaskPriorityGetImpl
|
||||||
MPU_uxTaskPriorityGet_Unpriv:
|
MPU_uxTaskPriorityGet_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxTaskPriorityGet
|
||||||
bl MPU_uxTaskPriorityGetImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_eTaskGetState
|
PUBLIC MPU_eTaskGetState
|
||||||
|
@ -129,10 +114,7 @@ MPU_eTaskGetState:
|
||||||
b MPU_eTaskGetStateImpl
|
b MPU_eTaskGetStateImpl
|
||||||
MPU_eTaskGetState_Unpriv:
|
MPU_eTaskGetState_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_eTaskGetState
|
||||||
bl MPU_eTaskGetStateImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskGetInfo
|
PUBLIC MPU_vTaskGetInfo
|
||||||
|
@ -147,10 +129,7 @@ MPU_vTaskGetInfo:
|
||||||
b MPU_vTaskGetInfoImpl
|
b MPU_vTaskGetInfoImpl
|
||||||
MPU_vTaskGetInfo_Unpriv:
|
MPU_vTaskGetInfo_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskGetInfo
|
||||||
bl MPU_vTaskGetInfoImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGetIdleTaskHandle
|
PUBLIC MPU_xTaskGetIdleTaskHandle
|
||||||
|
@ -165,10 +144,7 @@ MPU_xTaskGetIdleTaskHandle:
|
||||||
b MPU_xTaskGetIdleTaskHandleImpl
|
b MPU_xTaskGetIdleTaskHandleImpl
|
||||||
MPU_xTaskGetIdleTaskHandle_Unpriv:
|
MPU_xTaskGetIdleTaskHandle_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskGetIdleTaskHandle
|
||||||
bl MPU_xTaskGetIdleTaskHandleImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskSuspend
|
PUBLIC MPU_vTaskSuspend
|
||||||
|
@ -183,10 +159,7 @@ MPU_vTaskSuspend:
|
||||||
b MPU_vTaskSuspendImpl
|
b MPU_vTaskSuspendImpl
|
||||||
MPU_vTaskSuspend_Unpriv:
|
MPU_vTaskSuspend_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskSuspend
|
||||||
bl MPU_vTaskSuspendImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskResume
|
PUBLIC MPU_vTaskResume
|
||||||
|
@ -201,10 +174,7 @@ MPU_vTaskResume:
|
||||||
b MPU_vTaskResumeImpl
|
b MPU_vTaskResumeImpl
|
||||||
MPU_vTaskResume_Unpriv:
|
MPU_vTaskResume_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskResume
|
||||||
bl MPU_vTaskResumeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGetTickCount
|
PUBLIC MPU_xTaskGetTickCount
|
||||||
|
@ -219,10 +189,7 @@ MPU_xTaskGetTickCount:
|
||||||
b MPU_xTaskGetTickCountImpl
|
b MPU_xTaskGetTickCountImpl
|
||||||
MPU_xTaskGetTickCount_Unpriv:
|
MPU_xTaskGetTickCount_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskGetTickCount
|
||||||
bl MPU_xTaskGetTickCountImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxTaskGetNumberOfTasks
|
PUBLIC MPU_uxTaskGetNumberOfTasks
|
||||||
|
@ -237,10 +204,7 @@ MPU_uxTaskGetNumberOfTasks:
|
||||||
b MPU_uxTaskGetNumberOfTasksImpl
|
b MPU_uxTaskGetNumberOfTasksImpl
|
||||||
MPU_uxTaskGetNumberOfTasks_Unpriv:
|
MPU_uxTaskGetNumberOfTasks_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxTaskGetNumberOfTasks
|
||||||
bl MPU_uxTaskGetNumberOfTasksImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_pcTaskGetName
|
PUBLIC MPU_pcTaskGetName
|
||||||
|
@ -255,10 +219,7 @@ MPU_pcTaskGetName:
|
||||||
b MPU_pcTaskGetNameImpl
|
b MPU_pcTaskGetNameImpl
|
||||||
MPU_pcTaskGetName_Unpriv:
|
MPU_pcTaskGetName_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_pcTaskGetName
|
||||||
bl MPU_pcTaskGetNameImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_ulTaskGetRunTimeCounter
|
PUBLIC MPU_ulTaskGetRunTimeCounter
|
||||||
|
@ -273,10 +234,7 @@ MPU_ulTaskGetRunTimeCounter:
|
||||||
b MPU_ulTaskGetRunTimeCounterImpl
|
b MPU_ulTaskGetRunTimeCounterImpl
|
||||||
MPU_ulTaskGetRunTimeCounter_Unpriv:
|
MPU_ulTaskGetRunTimeCounter_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_ulTaskGetRunTimeCounter
|
||||||
bl MPU_ulTaskGetRunTimeCounterImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_ulTaskGetRunTimePercent
|
PUBLIC MPU_ulTaskGetRunTimePercent
|
||||||
|
@ -291,10 +249,7 @@ MPU_ulTaskGetRunTimePercent:
|
||||||
b MPU_ulTaskGetRunTimePercentImpl
|
b MPU_ulTaskGetRunTimePercentImpl
|
||||||
MPU_ulTaskGetRunTimePercent_Unpriv:
|
MPU_ulTaskGetRunTimePercent_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_ulTaskGetRunTimePercent
|
||||||
bl MPU_ulTaskGetRunTimePercentImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_ulTaskGetIdleRunTimePercent
|
PUBLIC MPU_ulTaskGetIdleRunTimePercent
|
||||||
|
@ -309,10 +264,7 @@ MPU_ulTaskGetIdleRunTimePercent:
|
||||||
b MPU_ulTaskGetIdleRunTimePercentImpl
|
b MPU_ulTaskGetIdleRunTimePercentImpl
|
||||||
MPU_ulTaskGetIdleRunTimePercent_Unpriv:
|
MPU_ulTaskGetIdleRunTimePercent_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_ulTaskGetIdleRunTimePercent
|
||||||
bl MPU_ulTaskGetIdleRunTimePercentImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_ulTaskGetIdleRunTimeCounter
|
PUBLIC MPU_ulTaskGetIdleRunTimeCounter
|
||||||
|
@ -327,10 +279,7 @@ MPU_ulTaskGetIdleRunTimeCounter:
|
||||||
b MPU_ulTaskGetIdleRunTimeCounterImpl
|
b MPU_ulTaskGetIdleRunTimeCounterImpl
|
||||||
MPU_ulTaskGetIdleRunTimeCounter_Unpriv:
|
MPU_ulTaskGetIdleRunTimeCounter_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_ulTaskGetIdleRunTimeCounter
|
||||||
bl MPU_ulTaskGetIdleRunTimeCounterImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskSetApplicationTaskTag
|
PUBLIC MPU_vTaskSetApplicationTaskTag
|
||||||
|
@ -345,10 +294,7 @@ MPU_vTaskSetApplicationTaskTag:
|
||||||
b MPU_vTaskSetApplicationTaskTagImpl
|
b MPU_vTaskSetApplicationTaskTagImpl
|
||||||
MPU_vTaskSetApplicationTaskTag_Unpriv:
|
MPU_vTaskSetApplicationTaskTag_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskSetApplicationTaskTag
|
||||||
bl MPU_vTaskSetApplicationTaskTagImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGetApplicationTaskTag
|
PUBLIC MPU_xTaskGetApplicationTaskTag
|
||||||
|
@ -363,10 +309,7 @@ MPU_xTaskGetApplicationTaskTag:
|
||||||
b MPU_xTaskGetApplicationTaskTagImpl
|
b MPU_xTaskGetApplicationTaskTagImpl
|
||||||
MPU_xTaskGetApplicationTaskTag_Unpriv:
|
MPU_xTaskGetApplicationTaskTag_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskGetApplicationTaskTag
|
||||||
bl MPU_xTaskGetApplicationTaskTagImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskSetThreadLocalStoragePointer
|
PUBLIC MPU_vTaskSetThreadLocalStoragePointer
|
||||||
|
@ -381,10 +324,7 @@ MPU_vTaskSetThreadLocalStoragePointer:
|
||||||
b MPU_vTaskSetThreadLocalStoragePointerImpl
|
b MPU_vTaskSetThreadLocalStoragePointerImpl
|
||||||
MPU_vTaskSetThreadLocalStoragePointer_Unpriv:
|
MPU_vTaskSetThreadLocalStoragePointer_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskSetThreadLocalStoragePointer
|
||||||
bl MPU_vTaskSetThreadLocalStoragePointerImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_pvTaskGetThreadLocalStoragePointer
|
PUBLIC MPU_pvTaskGetThreadLocalStoragePointer
|
||||||
|
@ -399,10 +339,7 @@ MPU_pvTaskGetThreadLocalStoragePointer:
|
||||||
b MPU_pvTaskGetThreadLocalStoragePointerImpl
|
b MPU_pvTaskGetThreadLocalStoragePointerImpl
|
||||||
MPU_pvTaskGetThreadLocalStoragePointer_Unpriv:
|
MPU_pvTaskGetThreadLocalStoragePointer_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_pvTaskGetThreadLocalStoragePointer
|
||||||
bl MPU_pvTaskGetThreadLocalStoragePointerImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxTaskGetSystemState
|
PUBLIC MPU_uxTaskGetSystemState
|
||||||
|
@ -417,10 +354,7 @@ MPU_uxTaskGetSystemState:
|
||||||
b MPU_uxTaskGetSystemStateImpl
|
b MPU_uxTaskGetSystemStateImpl
|
||||||
MPU_uxTaskGetSystemState_Unpriv:
|
MPU_uxTaskGetSystemState_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxTaskGetSystemState
|
||||||
bl MPU_uxTaskGetSystemStateImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxTaskGetStackHighWaterMark
|
PUBLIC MPU_uxTaskGetStackHighWaterMark
|
||||||
|
@ -435,10 +369,7 @@ MPU_uxTaskGetStackHighWaterMark:
|
||||||
b MPU_uxTaskGetStackHighWaterMarkImpl
|
b MPU_uxTaskGetStackHighWaterMarkImpl
|
||||||
MPU_uxTaskGetStackHighWaterMark_Unpriv:
|
MPU_uxTaskGetStackHighWaterMark_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxTaskGetStackHighWaterMark
|
||||||
bl MPU_uxTaskGetStackHighWaterMarkImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxTaskGetStackHighWaterMark2
|
PUBLIC MPU_uxTaskGetStackHighWaterMark2
|
||||||
|
@ -453,10 +384,7 @@ MPU_uxTaskGetStackHighWaterMark2:
|
||||||
b MPU_uxTaskGetStackHighWaterMark2Impl
|
b MPU_uxTaskGetStackHighWaterMark2Impl
|
||||||
MPU_uxTaskGetStackHighWaterMark2_Unpriv:
|
MPU_uxTaskGetStackHighWaterMark2_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxTaskGetStackHighWaterMark2
|
||||||
bl MPU_uxTaskGetStackHighWaterMark2Impl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGetCurrentTaskHandle
|
PUBLIC MPU_xTaskGetCurrentTaskHandle
|
||||||
|
@ -471,10 +399,7 @@ MPU_xTaskGetCurrentTaskHandle:
|
||||||
b MPU_xTaskGetCurrentTaskHandleImpl
|
b MPU_xTaskGetCurrentTaskHandleImpl
|
||||||
MPU_xTaskGetCurrentTaskHandle_Unpriv:
|
MPU_xTaskGetCurrentTaskHandle_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskGetCurrentTaskHandle
|
||||||
bl MPU_xTaskGetCurrentTaskHandleImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGetSchedulerState
|
PUBLIC MPU_xTaskGetSchedulerState
|
||||||
|
@ -489,10 +414,7 @@ MPU_xTaskGetSchedulerState:
|
||||||
b MPU_xTaskGetSchedulerStateImpl
|
b MPU_xTaskGetSchedulerStateImpl
|
||||||
MPU_xTaskGetSchedulerState_Unpriv:
|
MPU_xTaskGetSchedulerState_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskGetSchedulerState
|
||||||
bl MPU_xTaskGetSchedulerStateImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskSetTimeOutState
|
PUBLIC MPU_vTaskSetTimeOutState
|
||||||
|
@ -507,10 +429,7 @@ MPU_vTaskSetTimeOutState:
|
||||||
b MPU_vTaskSetTimeOutStateImpl
|
b MPU_vTaskSetTimeOutStateImpl
|
||||||
MPU_vTaskSetTimeOutState_Unpriv:
|
MPU_vTaskSetTimeOutState_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskSetTimeOutState
|
||||||
bl MPU_vTaskSetTimeOutStateImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskCheckForTimeOut
|
PUBLIC MPU_xTaskCheckForTimeOut
|
||||||
|
@ -525,14 +444,11 @@ MPU_xTaskCheckForTimeOut:
|
||||||
b MPU_xTaskCheckForTimeOutImpl
|
b MPU_xTaskCheckForTimeOutImpl
|
||||||
MPU_xTaskCheckForTimeOut_Unpriv:
|
MPU_xTaskCheckForTimeOut_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskCheckForTimeOut
|
||||||
bl MPU_xTaskCheckForTimeOutImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGenericNotify
|
PUBLIC MPU_xTaskGenericNotifyEntry
|
||||||
MPU_xTaskGenericNotify:
|
MPU_xTaskGenericNotifyEntry:
|
||||||
push {r0, r1}
|
push {r0, r1}
|
||||||
mrs r0, control
|
mrs r0, control
|
||||||
movs r1, #1
|
movs r1, #1
|
||||||
|
@ -543,14 +459,11 @@ MPU_xTaskGenericNotify:
|
||||||
b MPU_xTaskGenericNotifyImpl
|
b MPU_xTaskGenericNotifyImpl
|
||||||
MPU_xTaskGenericNotify_Unpriv:
|
MPU_xTaskGenericNotify_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER_1
|
svc #SYSTEM_CALL_xTaskGenericNotify
|
||||||
bl MPU_xTaskGenericNotifyImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGenericNotifyWait
|
PUBLIC MPU_xTaskGenericNotifyWaitEntry
|
||||||
MPU_xTaskGenericNotifyWait:
|
MPU_xTaskGenericNotifyWaitEntry:
|
||||||
push {r0, r1}
|
push {r0, r1}
|
||||||
mrs r0, control
|
mrs r0, control
|
||||||
movs r1, #1
|
movs r1, #1
|
||||||
|
@ -561,10 +474,7 @@ MPU_xTaskGenericNotifyWait:
|
||||||
b MPU_xTaskGenericNotifyWaitImpl
|
b MPU_xTaskGenericNotifyWaitImpl
|
||||||
MPU_xTaskGenericNotifyWait_Unpriv:
|
MPU_xTaskGenericNotifyWait_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER_1
|
svc #SYSTEM_CALL_xTaskGenericNotifyWait
|
||||||
bl MPU_xTaskGenericNotifyWaitImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_ulTaskGenericNotifyTake
|
PUBLIC MPU_ulTaskGenericNotifyTake
|
||||||
|
@ -579,10 +489,7 @@ MPU_ulTaskGenericNotifyTake:
|
||||||
b MPU_ulTaskGenericNotifyTakeImpl
|
b MPU_ulTaskGenericNotifyTakeImpl
|
||||||
MPU_ulTaskGenericNotifyTake_Unpriv:
|
MPU_ulTaskGenericNotifyTake_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_ulTaskGenericNotifyTake
|
||||||
bl MPU_ulTaskGenericNotifyTakeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGenericNotifyStateClear
|
PUBLIC MPU_xTaskGenericNotifyStateClear
|
||||||
|
@ -597,10 +504,7 @@ MPU_xTaskGenericNotifyStateClear:
|
||||||
b MPU_xTaskGenericNotifyStateClearImpl
|
b MPU_xTaskGenericNotifyStateClearImpl
|
||||||
MPU_xTaskGenericNotifyStateClear_Unpriv:
|
MPU_xTaskGenericNotifyStateClear_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskGenericNotifyStateClear
|
||||||
bl MPU_xTaskGenericNotifyStateClearImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_ulTaskGenericNotifyValueClear
|
PUBLIC MPU_ulTaskGenericNotifyValueClear
|
||||||
|
@ -615,10 +519,7 @@ MPU_ulTaskGenericNotifyValueClear:
|
||||||
b MPU_ulTaskGenericNotifyValueClearImpl
|
b MPU_ulTaskGenericNotifyValueClearImpl
|
||||||
MPU_ulTaskGenericNotifyValueClear_Unpriv:
|
MPU_ulTaskGenericNotifyValueClear_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_ulTaskGenericNotifyValueClear
|
||||||
bl MPU_ulTaskGenericNotifyValueClearImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueGenericSend
|
PUBLIC MPU_xQueueGenericSend
|
||||||
|
@ -633,10 +534,7 @@ MPU_xQueueGenericSend:
|
||||||
b MPU_xQueueGenericSendImpl
|
b MPU_xQueueGenericSendImpl
|
||||||
MPU_xQueueGenericSend_Unpriv:
|
MPU_xQueueGenericSend_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueGenericSend
|
||||||
bl MPU_xQueueGenericSendImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxQueueMessagesWaiting
|
PUBLIC MPU_uxQueueMessagesWaiting
|
||||||
|
@ -651,10 +549,7 @@ MPU_uxQueueMessagesWaiting:
|
||||||
b MPU_uxQueueMessagesWaitingImpl
|
b MPU_uxQueueMessagesWaitingImpl
|
||||||
MPU_uxQueueMessagesWaiting_Unpriv:
|
MPU_uxQueueMessagesWaiting_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxQueueMessagesWaiting
|
||||||
bl MPU_uxQueueMessagesWaitingImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxQueueSpacesAvailable
|
PUBLIC MPU_uxQueueSpacesAvailable
|
||||||
|
@ -669,10 +564,7 @@ MPU_uxQueueSpacesAvailable:
|
||||||
b MPU_uxQueueSpacesAvailableImpl
|
b MPU_uxQueueSpacesAvailableImpl
|
||||||
MPU_uxQueueSpacesAvailable_Unpriv:
|
MPU_uxQueueSpacesAvailable_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxQueueSpacesAvailable
|
||||||
bl MPU_uxQueueSpacesAvailableImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueReceive
|
PUBLIC MPU_xQueueReceive
|
||||||
|
@ -687,10 +579,7 @@ MPU_xQueueReceive:
|
||||||
b MPU_xQueueReceiveImpl
|
b MPU_xQueueReceiveImpl
|
||||||
MPU_xQueueReceive_Unpriv:
|
MPU_xQueueReceive_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueReceive
|
||||||
bl MPU_xQueueReceiveImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueuePeek
|
PUBLIC MPU_xQueuePeek
|
||||||
|
@ -705,10 +594,7 @@ MPU_xQueuePeek:
|
||||||
b MPU_xQueuePeekImpl
|
b MPU_xQueuePeekImpl
|
||||||
MPU_xQueuePeek_Unpriv:
|
MPU_xQueuePeek_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueuePeek
|
||||||
bl MPU_xQueuePeekImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueSemaphoreTake
|
PUBLIC MPU_xQueueSemaphoreTake
|
||||||
|
@ -723,10 +609,7 @@ MPU_xQueueSemaphoreTake:
|
||||||
b MPU_xQueueSemaphoreTakeImpl
|
b MPU_xQueueSemaphoreTakeImpl
|
||||||
MPU_xQueueSemaphoreTake_Unpriv:
|
MPU_xQueueSemaphoreTake_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueSemaphoreTake
|
||||||
bl MPU_xQueueSemaphoreTakeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueGetMutexHolder
|
PUBLIC MPU_xQueueGetMutexHolder
|
||||||
|
@ -741,10 +624,7 @@ MPU_xQueueGetMutexHolder:
|
||||||
b MPU_xQueueGetMutexHolderImpl
|
b MPU_xQueueGetMutexHolderImpl
|
||||||
MPU_xQueueGetMutexHolder_Unpriv:
|
MPU_xQueueGetMutexHolder_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueGetMutexHolder
|
||||||
bl MPU_xQueueGetMutexHolderImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueTakeMutexRecursive
|
PUBLIC MPU_xQueueTakeMutexRecursive
|
||||||
|
@ -759,10 +639,7 @@ MPU_xQueueTakeMutexRecursive:
|
||||||
b MPU_xQueueTakeMutexRecursiveImpl
|
b MPU_xQueueTakeMutexRecursiveImpl
|
||||||
MPU_xQueueTakeMutexRecursive_Unpriv:
|
MPU_xQueueTakeMutexRecursive_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueTakeMutexRecursive
|
||||||
bl MPU_xQueueTakeMutexRecursiveImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueGiveMutexRecursive
|
PUBLIC MPU_xQueueGiveMutexRecursive
|
||||||
|
@ -777,10 +654,7 @@ MPU_xQueueGiveMutexRecursive:
|
||||||
b MPU_xQueueGiveMutexRecursiveImpl
|
b MPU_xQueueGiveMutexRecursiveImpl
|
||||||
MPU_xQueueGiveMutexRecursive_Unpriv:
|
MPU_xQueueGiveMutexRecursive_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueGiveMutexRecursive
|
||||||
bl MPU_xQueueGiveMutexRecursiveImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueSelectFromSet
|
PUBLIC MPU_xQueueSelectFromSet
|
||||||
|
@ -795,10 +669,7 @@ MPU_xQueueSelectFromSet:
|
||||||
b MPU_xQueueSelectFromSetImpl
|
b MPU_xQueueSelectFromSetImpl
|
||||||
MPU_xQueueSelectFromSet_Unpriv:
|
MPU_xQueueSelectFromSet_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueSelectFromSet
|
||||||
bl MPU_xQueueSelectFromSetImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueAddToSet
|
PUBLIC MPU_xQueueAddToSet
|
||||||
|
@ -813,10 +684,7 @@ MPU_xQueueAddToSet:
|
||||||
b MPU_xQueueAddToSetImpl
|
b MPU_xQueueAddToSetImpl
|
||||||
MPU_xQueueAddToSet_Unpriv:
|
MPU_xQueueAddToSet_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueAddToSet
|
||||||
bl MPU_xQueueAddToSetImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vQueueAddToRegistry
|
PUBLIC MPU_vQueueAddToRegistry
|
||||||
|
@ -831,10 +699,7 @@ MPU_vQueueAddToRegistry:
|
||||||
b MPU_vQueueAddToRegistryImpl
|
b MPU_vQueueAddToRegistryImpl
|
||||||
MPU_vQueueAddToRegistry_Unpriv:
|
MPU_vQueueAddToRegistry_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vQueueAddToRegistry
|
||||||
bl MPU_vQueueAddToRegistryImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vQueueUnregisterQueue
|
PUBLIC MPU_vQueueUnregisterQueue
|
||||||
|
@ -849,10 +714,7 @@ MPU_vQueueUnregisterQueue:
|
||||||
b MPU_vQueueUnregisterQueueImpl
|
b MPU_vQueueUnregisterQueueImpl
|
||||||
MPU_vQueueUnregisterQueue_Unpriv:
|
MPU_vQueueUnregisterQueue_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vQueueUnregisterQueue
|
||||||
bl MPU_vQueueUnregisterQueueImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_pcQueueGetName
|
PUBLIC MPU_pcQueueGetName
|
||||||
|
@ -867,10 +729,7 @@ MPU_pcQueueGetName:
|
||||||
b MPU_pcQueueGetNameImpl
|
b MPU_pcQueueGetNameImpl
|
||||||
MPU_pcQueueGetName_Unpriv:
|
MPU_pcQueueGetName_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_pcQueueGetName
|
||||||
bl MPU_pcQueueGetNameImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_pvTimerGetTimerID
|
PUBLIC MPU_pvTimerGetTimerID
|
||||||
|
@ -885,10 +744,7 @@ MPU_pvTimerGetTimerID:
|
||||||
b MPU_pvTimerGetTimerIDImpl
|
b MPU_pvTimerGetTimerIDImpl
|
||||||
MPU_pvTimerGetTimerID_Unpriv:
|
MPU_pvTimerGetTimerID_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_pvTimerGetTimerID
|
||||||
bl MPU_pvTimerGetTimerIDImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTimerSetTimerID
|
PUBLIC MPU_vTimerSetTimerID
|
||||||
|
@ -903,10 +759,7 @@ MPU_vTimerSetTimerID:
|
||||||
b MPU_vTimerSetTimerIDImpl
|
b MPU_vTimerSetTimerIDImpl
|
||||||
MPU_vTimerSetTimerID_Unpriv:
|
MPU_vTimerSetTimerID_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTimerSetTimerID
|
||||||
bl MPU_vTimerSetTimerIDImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTimerIsTimerActive
|
PUBLIC MPU_xTimerIsTimerActive
|
||||||
|
@ -921,10 +774,7 @@ MPU_xTimerIsTimerActive:
|
||||||
b MPU_xTimerIsTimerActiveImpl
|
b MPU_xTimerIsTimerActiveImpl
|
||||||
MPU_xTimerIsTimerActive_Unpriv:
|
MPU_xTimerIsTimerActive_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTimerIsTimerActive
|
||||||
bl MPU_xTimerIsTimerActiveImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTimerGetTimerDaemonTaskHandle
|
PUBLIC MPU_xTimerGetTimerDaemonTaskHandle
|
||||||
|
@ -939,14 +789,11 @@ MPU_xTimerGetTimerDaemonTaskHandle:
|
||||||
b MPU_xTimerGetTimerDaemonTaskHandleImpl
|
b MPU_xTimerGetTimerDaemonTaskHandleImpl
|
||||||
MPU_xTimerGetTimerDaemonTaskHandle_Unpriv:
|
MPU_xTimerGetTimerDaemonTaskHandle_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTimerGetTimerDaemonTaskHandle
|
||||||
bl MPU_xTimerGetTimerDaemonTaskHandleImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTimerGenericCommand
|
PUBLIC MPU_xTimerGenericCommandEntry
|
||||||
MPU_xTimerGenericCommand:
|
MPU_xTimerGenericCommandEntry:
|
||||||
push {r0, r1}
|
push {r0, r1}
|
||||||
/* This function can be called from ISR also and therefore, we need a check
|
/* This function can be called from ISR also and therefore, we need a check
|
||||||
* to take privileged path, if called from ISR. */
|
* to take privileged path, if called from ISR. */
|
||||||
|
@ -959,13 +806,10 @@ MPU_xTimerGenericCommand:
|
||||||
beq MPU_xTimerGenericCommand_Priv
|
beq MPU_xTimerGenericCommand_Priv
|
||||||
MPU_xTimerGenericCommand_Unpriv:
|
MPU_xTimerGenericCommand_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER_1
|
svc #SYSTEM_CALL_xTimerGenericCommand
|
||||||
bl MPU_xTimerGenericCommandImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
MPU_xTimerGenericCommand_Priv:
|
MPU_xTimerGenericCommand_Priv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
b MPU_xTimerGenericCommandImpl
|
b MPU_xTimerGenericCommandPrivImpl
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -981,10 +825,7 @@ MPU_pcTimerGetName:
|
||||||
b MPU_pcTimerGetNameImpl
|
b MPU_pcTimerGetNameImpl
|
||||||
MPU_pcTimerGetName_Unpriv:
|
MPU_pcTimerGetName_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_pcTimerGetName
|
||||||
bl MPU_pcTimerGetNameImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTimerSetReloadMode
|
PUBLIC MPU_vTimerSetReloadMode
|
||||||
|
@ -999,10 +840,7 @@ MPU_vTimerSetReloadMode:
|
||||||
b MPU_vTimerSetReloadModeImpl
|
b MPU_vTimerSetReloadModeImpl
|
||||||
MPU_vTimerSetReloadMode_Unpriv:
|
MPU_vTimerSetReloadMode_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTimerSetReloadMode
|
||||||
bl MPU_vTimerSetReloadModeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTimerGetReloadMode
|
PUBLIC MPU_xTimerGetReloadMode
|
||||||
|
@ -1017,10 +855,7 @@ MPU_xTimerGetReloadMode:
|
||||||
b MPU_xTimerGetReloadModeImpl
|
b MPU_xTimerGetReloadModeImpl
|
||||||
MPU_xTimerGetReloadMode_Unpriv:
|
MPU_xTimerGetReloadMode_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTimerGetReloadMode
|
||||||
bl MPU_xTimerGetReloadModeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxTimerGetReloadMode
|
PUBLIC MPU_uxTimerGetReloadMode
|
||||||
|
@ -1035,10 +870,7 @@ MPU_uxTimerGetReloadMode:
|
||||||
b MPU_uxTimerGetReloadModeImpl
|
b MPU_uxTimerGetReloadModeImpl
|
||||||
MPU_uxTimerGetReloadMode_Unpriv:
|
MPU_uxTimerGetReloadMode_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxTimerGetReloadMode
|
||||||
bl MPU_uxTimerGetReloadModeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTimerGetPeriod
|
PUBLIC MPU_xTimerGetPeriod
|
||||||
|
@ -1053,10 +885,7 @@ MPU_xTimerGetPeriod:
|
||||||
b MPU_xTimerGetPeriodImpl
|
b MPU_xTimerGetPeriodImpl
|
||||||
MPU_xTimerGetPeriod_Unpriv:
|
MPU_xTimerGetPeriod_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTimerGetPeriod
|
||||||
bl MPU_xTimerGetPeriodImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTimerGetExpiryTime
|
PUBLIC MPU_xTimerGetExpiryTime
|
||||||
|
@ -1071,14 +900,11 @@ MPU_xTimerGetExpiryTime:
|
||||||
b MPU_xTimerGetExpiryTimeImpl
|
b MPU_xTimerGetExpiryTimeImpl
|
||||||
MPU_xTimerGetExpiryTime_Unpriv:
|
MPU_xTimerGetExpiryTime_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTimerGetExpiryTime
|
||||||
bl MPU_xTimerGetExpiryTimeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xEventGroupWaitBits
|
PUBLIC MPU_xEventGroupWaitBitsEntry
|
||||||
MPU_xEventGroupWaitBits:
|
MPU_xEventGroupWaitBitsEntry:
|
||||||
push {r0, r1}
|
push {r0, r1}
|
||||||
mrs r0, control
|
mrs r0, control
|
||||||
movs r1, #1
|
movs r1, #1
|
||||||
|
@ -1089,10 +915,7 @@ MPU_xEventGroupWaitBits:
|
||||||
b MPU_xEventGroupWaitBitsImpl
|
b MPU_xEventGroupWaitBitsImpl
|
||||||
MPU_xEventGroupWaitBits_Unpriv:
|
MPU_xEventGroupWaitBits_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER_1
|
svc #SYSTEM_CALL_xEventGroupWaitBits
|
||||||
bl MPU_xEventGroupWaitBitsImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xEventGroupClearBits
|
PUBLIC MPU_xEventGroupClearBits
|
||||||
|
@ -1107,10 +930,7 @@ MPU_xEventGroupClearBits:
|
||||||
b MPU_xEventGroupClearBitsImpl
|
b MPU_xEventGroupClearBitsImpl
|
||||||
MPU_xEventGroupClearBits_Unpriv:
|
MPU_xEventGroupClearBits_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xEventGroupClearBits
|
||||||
bl MPU_xEventGroupClearBitsImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xEventGroupSetBits
|
PUBLIC MPU_xEventGroupSetBits
|
||||||
|
@ -1125,10 +945,7 @@ MPU_xEventGroupSetBits:
|
||||||
b MPU_xEventGroupSetBitsImpl
|
b MPU_xEventGroupSetBitsImpl
|
||||||
MPU_xEventGroupSetBits_Unpriv:
|
MPU_xEventGroupSetBits_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xEventGroupSetBits
|
||||||
bl MPU_xEventGroupSetBitsImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xEventGroupSync
|
PUBLIC MPU_xEventGroupSync
|
||||||
|
@ -1143,10 +960,7 @@ MPU_xEventGroupSync:
|
||||||
b MPU_xEventGroupSyncImpl
|
b MPU_xEventGroupSyncImpl
|
||||||
MPU_xEventGroupSync_Unpriv:
|
MPU_xEventGroupSync_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xEventGroupSync
|
||||||
bl MPU_xEventGroupSyncImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxEventGroupGetNumber
|
PUBLIC MPU_uxEventGroupGetNumber
|
||||||
|
@ -1161,10 +975,7 @@ MPU_uxEventGroupGetNumber:
|
||||||
b MPU_uxEventGroupGetNumberImpl
|
b MPU_uxEventGroupGetNumberImpl
|
||||||
MPU_uxEventGroupGetNumber_Unpriv:
|
MPU_uxEventGroupGetNumber_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxEventGroupGetNumber
|
||||||
bl MPU_uxEventGroupGetNumberImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vEventGroupSetNumber
|
PUBLIC MPU_vEventGroupSetNumber
|
||||||
|
@ -1179,10 +990,7 @@ MPU_vEventGroupSetNumber:
|
||||||
b MPU_vEventGroupSetNumberImpl
|
b MPU_vEventGroupSetNumberImpl
|
||||||
MPU_vEventGroupSetNumber_Unpriv:
|
MPU_vEventGroupSetNumber_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vEventGroupSetNumber
|
||||||
bl MPU_vEventGroupSetNumberImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferSend
|
PUBLIC MPU_xStreamBufferSend
|
||||||
|
@ -1197,10 +1005,7 @@ MPU_xStreamBufferSend:
|
||||||
b MPU_xStreamBufferSendImpl
|
b MPU_xStreamBufferSendImpl
|
||||||
MPU_xStreamBufferSend_Unpriv:
|
MPU_xStreamBufferSend_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferSend
|
||||||
bl MPU_xStreamBufferSendImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferReceive
|
PUBLIC MPU_xStreamBufferReceive
|
||||||
|
@ -1215,10 +1020,7 @@ MPU_xStreamBufferReceive:
|
||||||
b MPU_xStreamBufferReceiveImpl
|
b MPU_xStreamBufferReceiveImpl
|
||||||
MPU_xStreamBufferReceive_Unpriv:
|
MPU_xStreamBufferReceive_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferReceive
|
||||||
bl MPU_xStreamBufferReceiveImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferIsFull
|
PUBLIC MPU_xStreamBufferIsFull
|
||||||
|
@ -1233,10 +1035,7 @@ MPU_xStreamBufferIsFull:
|
||||||
b MPU_xStreamBufferIsFullImpl
|
b MPU_xStreamBufferIsFullImpl
|
||||||
MPU_xStreamBufferIsFull_Unpriv:
|
MPU_xStreamBufferIsFull_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferIsFull
|
||||||
bl MPU_xStreamBufferIsFullImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferIsEmpty
|
PUBLIC MPU_xStreamBufferIsEmpty
|
||||||
|
@ -1251,10 +1050,7 @@ MPU_xStreamBufferIsEmpty:
|
||||||
b MPU_xStreamBufferIsEmptyImpl
|
b MPU_xStreamBufferIsEmptyImpl
|
||||||
MPU_xStreamBufferIsEmpty_Unpriv:
|
MPU_xStreamBufferIsEmpty_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferIsEmpty
|
||||||
bl MPU_xStreamBufferIsEmptyImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferSpacesAvailable
|
PUBLIC MPU_xStreamBufferSpacesAvailable
|
||||||
|
@ -1269,10 +1065,7 @@ MPU_xStreamBufferSpacesAvailable:
|
||||||
b MPU_xStreamBufferSpacesAvailableImpl
|
b MPU_xStreamBufferSpacesAvailableImpl
|
||||||
MPU_xStreamBufferSpacesAvailable_Unpriv:
|
MPU_xStreamBufferSpacesAvailable_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferSpacesAvailable
|
||||||
bl MPU_xStreamBufferSpacesAvailableImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferBytesAvailable
|
PUBLIC MPU_xStreamBufferBytesAvailable
|
||||||
|
@ -1287,10 +1080,7 @@ MPU_xStreamBufferBytesAvailable:
|
||||||
b MPU_xStreamBufferBytesAvailableImpl
|
b MPU_xStreamBufferBytesAvailableImpl
|
||||||
MPU_xStreamBufferBytesAvailable_Unpriv:
|
MPU_xStreamBufferBytesAvailable_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferBytesAvailable
|
||||||
bl MPU_xStreamBufferBytesAvailableImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferSetTriggerLevel
|
PUBLIC MPU_xStreamBufferSetTriggerLevel
|
||||||
|
@ -1305,10 +1095,7 @@ MPU_xStreamBufferSetTriggerLevel:
|
||||||
b MPU_xStreamBufferSetTriggerLevelImpl
|
b MPU_xStreamBufferSetTriggerLevelImpl
|
||||||
MPU_xStreamBufferSetTriggerLevel_Unpriv:
|
MPU_xStreamBufferSetTriggerLevel_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferSetTriggerLevel
|
||||||
bl MPU_xStreamBufferSetTriggerLevelImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferNextMessageLengthBytes
|
PUBLIC MPU_xStreamBufferNextMessageLengthBytes
|
||||||
|
@ -1323,10 +1110,7 @@ MPU_xStreamBufferNextMessageLengthBytes:
|
||||||
b MPU_xStreamBufferNextMessageLengthBytesImpl
|
b MPU_xStreamBufferNextMessageLengthBytesImpl
|
||||||
MPU_xStreamBufferNextMessageLengthBytes_Unpriv:
|
MPU_xStreamBufferNextMessageLengthBytes_Unpriv:
|
||||||
pop {r0, r1}
|
pop {r0, r1}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferNextMessageLengthBytes
|
||||||
bl MPU_xStreamBufferNextMessageLengthBytesImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/* Default weak implementations in case one is not available from
|
/* Default weak implementations in case one is not available from
|
||||||
|
@ -1532,9 +1316,9 @@ MPU_xTimerIsTimerActiveImpl:
|
||||||
MPU_xTimerGetTimerDaemonTaskHandleImpl:
|
MPU_xTimerGetTimerDaemonTaskHandleImpl:
|
||||||
b MPU_xTimerGetTimerDaemonTaskHandleImpl
|
b MPU_xTimerGetTimerDaemonTaskHandleImpl
|
||||||
|
|
||||||
PUBWEAK MPU_xTimerGenericCommandImpl
|
PUBWEAK MPU_xTimerGenericCommandPrivImpl
|
||||||
MPU_xTimerGenericCommandImpl:
|
MPU_xTimerGenericCommandPrivImpl:
|
||||||
b MPU_xTimerGenericCommandImpl
|
b MPU_xTimerGenericCommandPrivImpl
|
||||||
|
|
||||||
PUBWEAK MPU_pcTimerGetNameImpl
|
PUBWEAK MPU_pcTimerGetNameImpl
|
||||||
MPU_pcTimerGetNameImpl:
|
MPU_pcTimerGetNameImpl:
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
@ -32,6 +32,9 @@ the code is included in C files but excluded by the preprocessor in assembly
|
||||||
files (__ICCARM__ is defined by the IAR C compiler but not by the IAR assembler. */
|
files (__ICCARM__ is defined by the IAR C compiler but not by the IAR assembler. */
|
||||||
#include "FreeRTOSConfig.h"
|
#include "FreeRTOSConfig.h"
|
||||||
|
|
||||||
|
/* System call numbers includes. */
|
||||||
|
#include "mpu_syscall_numbers.h"
|
||||||
|
|
||||||
#ifndef configUSE_MPU_WRAPPERS_V1
|
#ifndef configUSE_MPU_WRAPPERS_V1
|
||||||
#define configUSE_MPU_WRAPPERS_V1 0
|
#define configUSE_MPU_WRAPPERS_V1 0
|
||||||
#endif
|
#endif
|
||||||
|
@ -41,7 +44,6 @@ files (__ICCARM__ is defined by the IAR C compiler but not by the IAR assembler.
|
||||||
EXTERN vPortSVCHandler_C
|
EXTERN vPortSVCHandler_C
|
||||||
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
||||||
EXTERN vSystemCallEnter
|
EXTERN vSystemCallEnter
|
||||||
EXTERN vSystemCallEnter_1
|
|
||||||
EXTERN vSystemCallExit
|
EXTERN vSystemCallExit
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -216,7 +218,7 @@ vStartFirstTask:
|
||||||
cpsie i /* Globally enable interrupts. */
|
cpsie i /* Globally enable interrupts. */
|
||||||
dsb
|
dsb
|
||||||
isb
|
isb
|
||||||
svc 2 /* System call to start the first task. portSVC_START_SCHEDULER = 2. */
|
svc 102 /* System call to start the first task. portSVC_START_SCHEDULER = 102. */
|
||||||
nop
|
nop
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -401,21 +403,17 @@ SVC_Handler:
|
||||||
b route_svc
|
b route_svc
|
||||||
|
|
||||||
route_svc:
|
route_svc:
|
||||||
ldr r2, [r0, #24]
|
ldr r3, [r0, #24]
|
||||||
subs r2, #2
|
subs r3, #2
|
||||||
ldrb r3, [r2, #0]
|
ldrb r2, [r3, #0]
|
||||||
cmp r3, #4 /* portSVC_SYSTEM_CALL_ENTER. */
|
cmp r2, #NUM_SYSTEM_CALLS
|
||||||
beq system_call_enter
|
blt system_call_enter
|
||||||
cmp r3, #5 /* portSVC_SYSTEM_CALL_ENTER_1. */
|
cmp r2, #104 /* portSVC_SYSTEM_CALL_EXIT. */
|
||||||
beq system_call_enter_1
|
|
||||||
cmp r3, #6 /* portSVC_SYSTEM_CALL_EXIT. */
|
|
||||||
beq system_call_exit
|
beq system_call_exit
|
||||||
b vPortSVCHandler_C
|
b vPortSVCHandler_C
|
||||||
|
|
||||||
system_call_enter:
|
system_call_enter:
|
||||||
b vSystemCallEnter
|
b vSystemCallEnter
|
||||||
system_call_enter_1:
|
|
||||||
b vSystemCallEnter_1
|
|
||||||
system_call_exit:
|
system_call_exit:
|
||||||
b vSystemCallExit
|
b vSystemCallExit
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
@ -32,15 +32,12 @@
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
#include "FreeRTOSConfig.h"
|
#include "FreeRTOSConfig.h"
|
||||||
|
#include "mpu_syscall_numbers.h"
|
||||||
|
|
||||||
#ifndef configUSE_MPU_WRAPPERS_V1
|
#ifndef configUSE_MPU_WRAPPERS_V1
|
||||||
#define configUSE_MPU_WRAPPERS_V1 0
|
#define configUSE_MPU_WRAPPERS_V1 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* These must be in sync with portmacro.h. */
|
|
||||||
#define portSVC_SYSTEM_CALL_ENTER 4 /* System calls with upto 4 parameters. */
|
|
||||||
#define portSVC_SYSTEM_CALL_ENTER_1 5 /* System calls with 5 parameters. */
|
|
||||||
#define portSVC_SYSTEM_CALL_EXIT 6
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
||||||
|
@ -56,10 +53,7 @@ MPU_xTaskDelayUntil:
|
||||||
b MPU_xTaskDelayUntilImpl
|
b MPU_xTaskDelayUntilImpl
|
||||||
MPU_xTaskDelayUntil_Unpriv:
|
MPU_xTaskDelayUntil_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskDelayUntil
|
||||||
bl MPU_xTaskDelayUntilImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskAbortDelay
|
PUBLIC MPU_xTaskAbortDelay
|
||||||
|
@ -73,10 +67,7 @@ MPU_xTaskAbortDelay:
|
||||||
b MPU_xTaskAbortDelayImpl
|
b MPU_xTaskAbortDelayImpl
|
||||||
MPU_xTaskAbortDelay_Unpriv:
|
MPU_xTaskAbortDelay_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskAbortDelay
|
||||||
bl MPU_xTaskAbortDelayImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskDelay
|
PUBLIC MPU_vTaskDelay
|
||||||
|
@ -90,10 +81,7 @@ MPU_vTaskDelay:
|
||||||
b MPU_vTaskDelayImpl
|
b MPU_vTaskDelayImpl
|
||||||
MPU_vTaskDelay_Unpriv:
|
MPU_vTaskDelay_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskDelay
|
||||||
bl MPU_vTaskDelayImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxTaskPriorityGet
|
PUBLIC MPU_uxTaskPriorityGet
|
||||||
|
@ -107,10 +95,7 @@ MPU_uxTaskPriorityGet:
|
||||||
b MPU_uxTaskPriorityGetImpl
|
b MPU_uxTaskPriorityGetImpl
|
||||||
MPU_uxTaskPriorityGet_Unpriv:
|
MPU_uxTaskPriorityGet_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxTaskPriorityGet
|
||||||
bl MPU_uxTaskPriorityGetImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_eTaskGetState
|
PUBLIC MPU_eTaskGetState
|
||||||
|
@ -124,10 +109,7 @@ MPU_eTaskGetState:
|
||||||
b MPU_eTaskGetStateImpl
|
b MPU_eTaskGetStateImpl
|
||||||
MPU_eTaskGetState_Unpriv:
|
MPU_eTaskGetState_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_eTaskGetState
|
||||||
bl MPU_eTaskGetStateImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskGetInfo
|
PUBLIC MPU_vTaskGetInfo
|
||||||
|
@ -141,10 +123,7 @@ MPU_vTaskGetInfo:
|
||||||
b MPU_vTaskGetInfoImpl
|
b MPU_vTaskGetInfoImpl
|
||||||
MPU_vTaskGetInfo_Unpriv:
|
MPU_vTaskGetInfo_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskGetInfo
|
||||||
bl MPU_vTaskGetInfoImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGetIdleTaskHandle
|
PUBLIC MPU_xTaskGetIdleTaskHandle
|
||||||
|
@ -158,10 +137,7 @@ MPU_xTaskGetIdleTaskHandle:
|
||||||
b MPU_xTaskGetIdleTaskHandleImpl
|
b MPU_xTaskGetIdleTaskHandleImpl
|
||||||
MPU_xTaskGetIdleTaskHandle_Unpriv:
|
MPU_xTaskGetIdleTaskHandle_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskGetIdleTaskHandle
|
||||||
bl MPU_xTaskGetIdleTaskHandleImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskSuspend
|
PUBLIC MPU_vTaskSuspend
|
||||||
|
@ -175,10 +151,7 @@ MPU_vTaskSuspend:
|
||||||
b MPU_vTaskSuspendImpl
|
b MPU_vTaskSuspendImpl
|
||||||
MPU_vTaskSuspend_Unpriv:
|
MPU_vTaskSuspend_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskSuspend
|
||||||
bl MPU_vTaskSuspendImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskResume
|
PUBLIC MPU_vTaskResume
|
||||||
|
@ -192,10 +165,7 @@ MPU_vTaskResume:
|
||||||
b MPU_vTaskResumeImpl
|
b MPU_vTaskResumeImpl
|
||||||
MPU_vTaskResume_Unpriv:
|
MPU_vTaskResume_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskResume
|
||||||
bl MPU_vTaskResumeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGetTickCount
|
PUBLIC MPU_xTaskGetTickCount
|
||||||
|
@ -209,10 +179,7 @@ MPU_xTaskGetTickCount:
|
||||||
b MPU_xTaskGetTickCountImpl
|
b MPU_xTaskGetTickCountImpl
|
||||||
MPU_xTaskGetTickCount_Unpriv:
|
MPU_xTaskGetTickCount_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskGetTickCount
|
||||||
bl MPU_xTaskGetTickCountImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxTaskGetNumberOfTasks
|
PUBLIC MPU_uxTaskGetNumberOfTasks
|
||||||
|
@ -226,10 +193,7 @@ MPU_uxTaskGetNumberOfTasks:
|
||||||
b MPU_uxTaskGetNumberOfTasksImpl
|
b MPU_uxTaskGetNumberOfTasksImpl
|
||||||
MPU_uxTaskGetNumberOfTasks_Unpriv:
|
MPU_uxTaskGetNumberOfTasks_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxTaskGetNumberOfTasks
|
||||||
bl MPU_uxTaskGetNumberOfTasksImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_pcTaskGetName
|
PUBLIC MPU_pcTaskGetName
|
||||||
|
@ -243,10 +207,7 @@ MPU_pcTaskGetName:
|
||||||
b MPU_pcTaskGetNameImpl
|
b MPU_pcTaskGetNameImpl
|
||||||
MPU_pcTaskGetName_Unpriv:
|
MPU_pcTaskGetName_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_pcTaskGetName
|
||||||
bl MPU_pcTaskGetNameImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_ulTaskGetRunTimeCounter
|
PUBLIC MPU_ulTaskGetRunTimeCounter
|
||||||
|
@ -260,10 +221,7 @@ MPU_ulTaskGetRunTimeCounter:
|
||||||
b MPU_ulTaskGetRunTimeCounterImpl
|
b MPU_ulTaskGetRunTimeCounterImpl
|
||||||
MPU_ulTaskGetRunTimeCounter_Unpriv:
|
MPU_ulTaskGetRunTimeCounter_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_ulTaskGetRunTimeCounter
|
||||||
bl MPU_ulTaskGetRunTimeCounterImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_ulTaskGetRunTimePercent
|
PUBLIC MPU_ulTaskGetRunTimePercent
|
||||||
|
@ -277,10 +235,7 @@ MPU_ulTaskGetRunTimePercent:
|
||||||
b MPU_ulTaskGetRunTimePercentImpl
|
b MPU_ulTaskGetRunTimePercentImpl
|
||||||
MPU_ulTaskGetRunTimePercent_Unpriv:
|
MPU_ulTaskGetRunTimePercent_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_ulTaskGetRunTimePercent
|
||||||
bl MPU_ulTaskGetRunTimePercentImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_ulTaskGetIdleRunTimePercent
|
PUBLIC MPU_ulTaskGetIdleRunTimePercent
|
||||||
|
@ -294,10 +249,7 @@ MPU_ulTaskGetIdleRunTimePercent:
|
||||||
b MPU_ulTaskGetIdleRunTimePercentImpl
|
b MPU_ulTaskGetIdleRunTimePercentImpl
|
||||||
MPU_ulTaskGetIdleRunTimePercent_Unpriv:
|
MPU_ulTaskGetIdleRunTimePercent_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_ulTaskGetIdleRunTimePercent
|
||||||
bl MPU_ulTaskGetIdleRunTimePercentImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_ulTaskGetIdleRunTimeCounter
|
PUBLIC MPU_ulTaskGetIdleRunTimeCounter
|
||||||
|
@ -311,10 +263,7 @@ MPU_ulTaskGetIdleRunTimeCounter:
|
||||||
b MPU_ulTaskGetIdleRunTimeCounterImpl
|
b MPU_ulTaskGetIdleRunTimeCounterImpl
|
||||||
MPU_ulTaskGetIdleRunTimeCounter_Unpriv:
|
MPU_ulTaskGetIdleRunTimeCounter_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_ulTaskGetIdleRunTimeCounter
|
||||||
bl MPU_ulTaskGetIdleRunTimeCounterImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskSetApplicationTaskTag
|
PUBLIC MPU_vTaskSetApplicationTaskTag
|
||||||
|
@ -328,10 +277,7 @@ MPU_vTaskSetApplicationTaskTag:
|
||||||
b MPU_vTaskSetApplicationTaskTagImpl
|
b MPU_vTaskSetApplicationTaskTagImpl
|
||||||
MPU_vTaskSetApplicationTaskTag_Unpriv:
|
MPU_vTaskSetApplicationTaskTag_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskSetApplicationTaskTag
|
||||||
bl MPU_vTaskSetApplicationTaskTagImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGetApplicationTaskTag
|
PUBLIC MPU_xTaskGetApplicationTaskTag
|
||||||
|
@ -345,10 +291,7 @@ MPU_xTaskGetApplicationTaskTag:
|
||||||
b MPU_xTaskGetApplicationTaskTagImpl
|
b MPU_xTaskGetApplicationTaskTagImpl
|
||||||
MPU_xTaskGetApplicationTaskTag_Unpriv:
|
MPU_xTaskGetApplicationTaskTag_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskGetApplicationTaskTag
|
||||||
bl MPU_xTaskGetApplicationTaskTagImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskSetThreadLocalStoragePointer
|
PUBLIC MPU_vTaskSetThreadLocalStoragePointer
|
||||||
|
@ -362,10 +305,7 @@ MPU_vTaskSetThreadLocalStoragePointer:
|
||||||
b MPU_vTaskSetThreadLocalStoragePointerImpl
|
b MPU_vTaskSetThreadLocalStoragePointerImpl
|
||||||
MPU_vTaskSetThreadLocalStoragePointer_Unpriv:
|
MPU_vTaskSetThreadLocalStoragePointer_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskSetThreadLocalStoragePointer
|
||||||
bl MPU_vTaskSetThreadLocalStoragePointerImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_pvTaskGetThreadLocalStoragePointer
|
PUBLIC MPU_pvTaskGetThreadLocalStoragePointer
|
||||||
|
@ -379,10 +319,7 @@ MPU_pvTaskGetThreadLocalStoragePointer:
|
||||||
b MPU_pvTaskGetThreadLocalStoragePointerImpl
|
b MPU_pvTaskGetThreadLocalStoragePointerImpl
|
||||||
MPU_pvTaskGetThreadLocalStoragePointer_Unpriv:
|
MPU_pvTaskGetThreadLocalStoragePointer_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_pvTaskGetThreadLocalStoragePointer
|
||||||
bl MPU_pvTaskGetThreadLocalStoragePointerImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxTaskGetSystemState
|
PUBLIC MPU_uxTaskGetSystemState
|
||||||
|
@ -396,10 +333,7 @@ MPU_uxTaskGetSystemState:
|
||||||
b MPU_uxTaskGetSystemStateImpl
|
b MPU_uxTaskGetSystemStateImpl
|
||||||
MPU_uxTaskGetSystemState_Unpriv:
|
MPU_uxTaskGetSystemState_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxTaskGetSystemState
|
||||||
bl MPU_uxTaskGetSystemStateImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxTaskGetStackHighWaterMark
|
PUBLIC MPU_uxTaskGetStackHighWaterMark
|
||||||
|
@ -413,10 +347,7 @@ MPU_uxTaskGetStackHighWaterMark:
|
||||||
b MPU_uxTaskGetStackHighWaterMarkImpl
|
b MPU_uxTaskGetStackHighWaterMarkImpl
|
||||||
MPU_uxTaskGetStackHighWaterMark_Unpriv:
|
MPU_uxTaskGetStackHighWaterMark_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxTaskGetStackHighWaterMark
|
||||||
bl MPU_uxTaskGetStackHighWaterMarkImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxTaskGetStackHighWaterMark2
|
PUBLIC MPU_uxTaskGetStackHighWaterMark2
|
||||||
|
@ -430,10 +361,7 @@ MPU_uxTaskGetStackHighWaterMark2:
|
||||||
b MPU_uxTaskGetStackHighWaterMark2Impl
|
b MPU_uxTaskGetStackHighWaterMark2Impl
|
||||||
MPU_uxTaskGetStackHighWaterMark2_Unpriv:
|
MPU_uxTaskGetStackHighWaterMark2_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxTaskGetStackHighWaterMark2
|
||||||
bl MPU_uxTaskGetStackHighWaterMark2Impl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGetCurrentTaskHandle
|
PUBLIC MPU_xTaskGetCurrentTaskHandle
|
||||||
|
@ -447,10 +375,7 @@ MPU_xTaskGetCurrentTaskHandle:
|
||||||
b MPU_xTaskGetCurrentTaskHandleImpl
|
b MPU_xTaskGetCurrentTaskHandleImpl
|
||||||
MPU_xTaskGetCurrentTaskHandle_Unpriv:
|
MPU_xTaskGetCurrentTaskHandle_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskGetCurrentTaskHandle
|
||||||
bl MPU_xTaskGetCurrentTaskHandleImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGetSchedulerState
|
PUBLIC MPU_xTaskGetSchedulerState
|
||||||
|
@ -464,10 +389,7 @@ MPU_xTaskGetSchedulerState:
|
||||||
b MPU_xTaskGetSchedulerStateImpl
|
b MPU_xTaskGetSchedulerStateImpl
|
||||||
MPU_xTaskGetSchedulerState_Unpriv:
|
MPU_xTaskGetSchedulerState_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskGetSchedulerState
|
||||||
bl MPU_xTaskGetSchedulerStateImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskSetTimeOutState
|
PUBLIC MPU_vTaskSetTimeOutState
|
||||||
|
@ -481,10 +403,7 @@ MPU_vTaskSetTimeOutState:
|
||||||
b MPU_vTaskSetTimeOutStateImpl
|
b MPU_vTaskSetTimeOutStateImpl
|
||||||
MPU_vTaskSetTimeOutState_Unpriv:
|
MPU_vTaskSetTimeOutState_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskSetTimeOutState
|
||||||
bl MPU_vTaskSetTimeOutStateImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskCheckForTimeOut
|
PUBLIC MPU_xTaskCheckForTimeOut
|
||||||
|
@ -498,14 +417,11 @@ MPU_xTaskCheckForTimeOut:
|
||||||
b MPU_xTaskCheckForTimeOutImpl
|
b MPU_xTaskCheckForTimeOutImpl
|
||||||
MPU_xTaskCheckForTimeOut_Unpriv:
|
MPU_xTaskCheckForTimeOut_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskCheckForTimeOut
|
||||||
bl MPU_xTaskCheckForTimeOutImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGenericNotify
|
PUBLIC MPU_xTaskGenericNotifyEntry
|
||||||
MPU_xTaskGenericNotify:
|
MPU_xTaskGenericNotifyEntry:
|
||||||
push {r0}
|
push {r0}
|
||||||
mrs r0, control
|
mrs r0, control
|
||||||
tst r0, #1
|
tst r0, #1
|
||||||
|
@ -515,14 +431,11 @@ MPU_xTaskGenericNotify:
|
||||||
b MPU_xTaskGenericNotifyImpl
|
b MPU_xTaskGenericNotifyImpl
|
||||||
MPU_xTaskGenericNotify_Unpriv:
|
MPU_xTaskGenericNotify_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER_1
|
svc #SYSTEM_CALL_xTaskGenericNotify
|
||||||
bl MPU_xTaskGenericNotifyImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGenericNotifyWait
|
PUBLIC MPU_xTaskGenericNotifyWaitEntry
|
||||||
MPU_xTaskGenericNotifyWait:
|
MPU_xTaskGenericNotifyWaitEntry:
|
||||||
push {r0}
|
push {r0}
|
||||||
mrs r0, control
|
mrs r0, control
|
||||||
tst r0, #1
|
tst r0, #1
|
||||||
|
@ -532,10 +445,7 @@ MPU_xTaskGenericNotifyWait:
|
||||||
b MPU_xTaskGenericNotifyWaitImpl
|
b MPU_xTaskGenericNotifyWaitImpl
|
||||||
MPU_xTaskGenericNotifyWait_Unpriv:
|
MPU_xTaskGenericNotifyWait_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER_1
|
svc #SYSTEM_CALL_xTaskGenericNotifyWait
|
||||||
bl MPU_xTaskGenericNotifyWaitImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_ulTaskGenericNotifyTake
|
PUBLIC MPU_ulTaskGenericNotifyTake
|
||||||
|
@ -549,10 +459,7 @@ MPU_ulTaskGenericNotifyTake:
|
||||||
b MPU_ulTaskGenericNotifyTakeImpl
|
b MPU_ulTaskGenericNotifyTakeImpl
|
||||||
MPU_ulTaskGenericNotifyTake_Unpriv:
|
MPU_ulTaskGenericNotifyTake_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_ulTaskGenericNotifyTake
|
||||||
bl MPU_ulTaskGenericNotifyTakeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGenericNotifyStateClear
|
PUBLIC MPU_xTaskGenericNotifyStateClear
|
||||||
|
@ -566,10 +473,7 @@ MPU_xTaskGenericNotifyStateClear:
|
||||||
b MPU_xTaskGenericNotifyStateClearImpl
|
b MPU_xTaskGenericNotifyStateClearImpl
|
||||||
MPU_xTaskGenericNotifyStateClear_Unpriv:
|
MPU_xTaskGenericNotifyStateClear_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskGenericNotifyStateClear
|
||||||
bl MPU_xTaskGenericNotifyStateClearImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_ulTaskGenericNotifyValueClear
|
PUBLIC MPU_ulTaskGenericNotifyValueClear
|
||||||
|
@ -583,10 +487,7 @@ MPU_ulTaskGenericNotifyValueClear:
|
||||||
b MPU_ulTaskGenericNotifyValueClearImpl
|
b MPU_ulTaskGenericNotifyValueClearImpl
|
||||||
MPU_ulTaskGenericNotifyValueClear_Unpriv:
|
MPU_ulTaskGenericNotifyValueClear_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_ulTaskGenericNotifyValueClear
|
||||||
bl MPU_ulTaskGenericNotifyValueClearImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueGenericSend
|
PUBLIC MPU_xQueueGenericSend
|
||||||
|
@ -600,10 +501,7 @@ MPU_xQueueGenericSend:
|
||||||
b MPU_xQueueGenericSendImpl
|
b MPU_xQueueGenericSendImpl
|
||||||
MPU_xQueueGenericSend_Unpriv:
|
MPU_xQueueGenericSend_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueGenericSend
|
||||||
bl MPU_xQueueGenericSendImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxQueueMessagesWaiting
|
PUBLIC MPU_uxQueueMessagesWaiting
|
||||||
|
@ -617,10 +515,7 @@ MPU_uxQueueMessagesWaiting:
|
||||||
b MPU_uxQueueMessagesWaitingImpl
|
b MPU_uxQueueMessagesWaitingImpl
|
||||||
MPU_uxQueueMessagesWaiting_Unpriv:
|
MPU_uxQueueMessagesWaiting_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxQueueMessagesWaiting
|
||||||
bl MPU_uxQueueMessagesWaitingImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxQueueSpacesAvailable
|
PUBLIC MPU_uxQueueSpacesAvailable
|
||||||
|
@ -634,10 +529,7 @@ MPU_uxQueueSpacesAvailable:
|
||||||
b MPU_uxQueueSpacesAvailableImpl
|
b MPU_uxQueueSpacesAvailableImpl
|
||||||
MPU_uxQueueSpacesAvailable_Unpriv:
|
MPU_uxQueueSpacesAvailable_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxQueueSpacesAvailable
|
||||||
bl MPU_uxQueueSpacesAvailableImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueReceive
|
PUBLIC MPU_xQueueReceive
|
||||||
|
@ -651,10 +543,7 @@ MPU_xQueueReceive:
|
||||||
b MPU_xQueueReceiveImpl
|
b MPU_xQueueReceiveImpl
|
||||||
MPU_xQueueReceive_Unpriv:
|
MPU_xQueueReceive_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueReceive
|
||||||
bl MPU_xQueueReceiveImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueuePeek
|
PUBLIC MPU_xQueuePeek
|
||||||
|
@ -668,10 +557,7 @@ MPU_xQueuePeek:
|
||||||
b MPU_xQueuePeekImpl
|
b MPU_xQueuePeekImpl
|
||||||
MPU_xQueuePeek_Unpriv:
|
MPU_xQueuePeek_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueuePeek
|
||||||
bl MPU_xQueuePeekImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueSemaphoreTake
|
PUBLIC MPU_xQueueSemaphoreTake
|
||||||
|
@ -685,10 +571,7 @@ MPU_xQueueSemaphoreTake:
|
||||||
b MPU_xQueueSemaphoreTakeImpl
|
b MPU_xQueueSemaphoreTakeImpl
|
||||||
MPU_xQueueSemaphoreTake_Unpriv:
|
MPU_xQueueSemaphoreTake_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueSemaphoreTake
|
||||||
bl MPU_xQueueSemaphoreTakeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueGetMutexHolder
|
PUBLIC MPU_xQueueGetMutexHolder
|
||||||
|
@ -702,10 +585,7 @@ MPU_xQueueGetMutexHolder:
|
||||||
b MPU_xQueueGetMutexHolderImpl
|
b MPU_xQueueGetMutexHolderImpl
|
||||||
MPU_xQueueGetMutexHolder_Unpriv:
|
MPU_xQueueGetMutexHolder_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueGetMutexHolder
|
||||||
bl MPU_xQueueGetMutexHolderImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueTakeMutexRecursive
|
PUBLIC MPU_xQueueTakeMutexRecursive
|
||||||
|
@ -719,10 +599,7 @@ MPU_xQueueTakeMutexRecursive:
|
||||||
b MPU_xQueueTakeMutexRecursiveImpl
|
b MPU_xQueueTakeMutexRecursiveImpl
|
||||||
MPU_xQueueTakeMutexRecursive_Unpriv:
|
MPU_xQueueTakeMutexRecursive_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueTakeMutexRecursive
|
||||||
bl MPU_xQueueTakeMutexRecursiveImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueGiveMutexRecursive
|
PUBLIC MPU_xQueueGiveMutexRecursive
|
||||||
|
@ -736,10 +613,7 @@ MPU_xQueueGiveMutexRecursive:
|
||||||
b MPU_xQueueGiveMutexRecursiveImpl
|
b MPU_xQueueGiveMutexRecursiveImpl
|
||||||
MPU_xQueueGiveMutexRecursive_Unpriv:
|
MPU_xQueueGiveMutexRecursive_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueGiveMutexRecursive
|
||||||
bl MPU_xQueueGiveMutexRecursiveImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueSelectFromSet
|
PUBLIC MPU_xQueueSelectFromSet
|
||||||
|
@ -753,10 +627,7 @@ MPU_xQueueSelectFromSet:
|
||||||
b MPU_xQueueSelectFromSetImpl
|
b MPU_xQueueSelectFromSetImpl
|
||||||
MPU_xQueueSelectFromSet_Unpriv:
|
MPU_xQueueSelectFromSet_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueSelectFromSet
|
||||||
bl MPU_xQueueSelectFromSetImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueAddToSet
|
PUBLIC MPU_xQueueAddToSet
|
||||||
|
@ -770,10 +641,7 @@ MPU_xQueueAddToSet:
|
||||||
b MPU_xQueueAddToSetImpl
|
b MPU_xQueueAddToSetImpl
|
||||||
MPU_xQueueAddToSet_Unpriv:
|
MPU_xQueueAddToSet_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueAddToSet
|
||||||
bl MPU_xQueueAddToSetImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vQueueAddToRegistry
|
PUBLIC MPU_vQueueAddToRegistry
|
||||||
|
@ -787,10 +655,7 @@ MPU_vQueueAddToRegistry:
|
||||||
b MPU_vQueueAddToRegistryImpl
|
b MPU_vQueueAddToRegistryImpl
|
||||||
MPU_vQueueAddToRegistry_Unpriv:
|
MPU_vQueueAddToRegistry_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vQueueAddToRegistry
|
||||||
bl MPU_vQueueAddToRegistryImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vQueueUnregisterQueue
|
PUBLIC MPU_vQueueUnregisterQueue
|
||||||
|
@ -804,10 +669,7 @@ MPU_vQueueUnregisterQueue:
|
||||||
b MPU_vQueueUnregisterQueueImpl
|
b MPU_vQueueUnregisterQueueImpl
|
||||||
MPU_vQueueUnregisterQueue_Unpriv:
|
MPU_vQueueUnregisterQueue_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vQueueUnregisterQueue
|
||||||
bl MPU_vQueueUnregisterQueueImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_pcQueueGetName
|
PUBLIC MPU_pcQueueGetName
|
||||||
|
@ -821,10 +683,7 @@ MPU_pcQueueGetName:
|
||||||
b MPU_pcQueueGetNameImpl
|
b MPU_pcQueueGetNameImpl
|
||||||
MPU_pcQueueGetName_Unpriv:
|
MPU_pcQueueGetName_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_pcQueueGetName
|
||||||
bl MPU_pcQueueGetNameImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_pvTimerGetTimerID
|
PUBLIC MPU_pvTimerGetTimerID
|
||||||
|
@ -838,10 +697,7 @@ MPU_pvTimerGetTimerID:
|
||||||
b MPU_pvTimerGetTimerIDImpl
|
b MPU_pvTimerGetTimerIDImpl
|
||||||
MPU_pvTimerGetTimerID_Unpriv:
|
MPU_pvTimerGetTimerID_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_pvTimerGetTimerID
|
||||||
bl MPU_pvTimerGetTimerIDImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTimerSetTimerID
|
PUBLIC MPU_vTimerSetTimerID
|
||||||
|
@ -855,10 +711,7 @@ MPU_vTimerSetTimerID:
|
||||||
b MPU_vTimerSetTimerIDImpl
|
b MPU_vTimerSetTimerIDImpl
|
||||||
MPU_vTimerSetTimerID_Unpriv:
|
MPU_vTimerSetTimerID_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTimerSetTimerID
|
||||||
bl MPU_vTimerSetTimerIDImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTimerIsTimerActive
|
PUBLIC MPU_xTimerIsTimerActive
|
||||||
|
@ -872,10 +725,7 @@ MPU_xTimerIsTimerActive:
|
||||||
b MPU_xTimerIsTimerActiveImpl
|
b MPU_xTimerIsTimerActiveImpl
|
||||||
MPU_xTimerIsTimerActive_Unpriv:
|
MPU_xTimerIsTimerActive_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTimerIsTimerActive
|
||||||
bl MPU_xTimerIsTimerActiveImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTimerGetTimerDaemonTaskHandle
|
PUBLIC MPU_xTimerGetTimerDaemonTaskHandle
|
||||||
|
@ -889,14 +739,11 @@ MPU_xTimerGetTimerDaemonTaskHandle:
|
||||||
b MPU_xTimerGetTimerDaemonTaskHandleImpl
|
b MPU_xTimerGetTimerDaemonTaskHandleImpl
|
||||||
MPU_xTimerGetTimerDaemonTaskHandle_Unpriv:
|
MPU_xTimerGetTimerDaemonTaskHandle_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTimerGetTimerDaemonTaskHandle
|
||||||
bl MPU_xTimerGetTimerDaemonTaskHandleImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTimerGenericCommand
|
PUBLIC MPU_xTimerGenericCommandEntry
|
||||||
MPU_xTimerGenericCommand:
|
MPU_xTimerGenericCommandEntry:
|
||||||
push {r0}
|
push {r0}
|
||||||
/* This function can be called from ISR also and therefore, we need a check
|
/* This function can be called from ISR also and therefore, we need a check
|
||||||
* to take privileged path, if called from ISR. */
|
* to take privileged path, if called from ISR. */
|
||||||
|
@ -908,13 +755,10 @@ MPU_xTimerGenericCommand:
|
||||||
beq MPU_xTimerGenericCommand_Priv
|
beq MPU_xTimerGenericCommand_Priv
|
||||||
MPU_xTimerGenericCommand_Unpriv:
|
MPU_xTimerGenericCommand_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER_1
|
svc #SYSTEM_CALL_xTimerGenericCommand
|
||||||
bl MPU_xTimerGenericCommandImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
MPU_xTimerGenericCommand_Priv:
|
MPU_xTimerGenericCommand_Priv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
b MPU_xTimerGenericCommandImpl
|
b MPU_xTimerGenericCommandPrivImpl
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -929,10 +773,7 @@ MPU_pcTimerGetName:
|
||||||
b MPU_pcTimerGetNameImpl
|
b MPU_pcTimerGetNameImpl
|
||||||
MPU_pcTimerGetName_Unpriv:
|
MPU_pcTimerGetName_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_pcTimerGetName
|
||||||
bl MPU_pcTimerGetNameImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTimerSetReloadMode
|
PUBLIC MPU_vTimerSetReloadMode
|
||||||
|
@ -946,10 +787,7 @@ MPU_vTimerSetReloadMode:
|
||||||
b MPU_vTimerSetReloadModeImpl
|
b MPU_vTimerSetReloadModeImpl
|
||||||
MPU_vTimerSetReloadMode_Unpriv:
|
MPU_vTimerSetReloadMode_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTimerSetReloadMode
|
||||||
bl MPU_vTimerSetReloadModeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTimerGetReloadMode
|
PUBLIC MPU_xTimerGetReloadMode
|
||||||
|
@ -963,10 +801,7 @@ MPU_xTimerGetReloadMode:
|
||||||
b MPU_xTimerGetReloadModeImpl
|
b MPU_xTimerGetReloadModeImpl
|
||||||
MPU_xTimerGetReloadMode_Unpriv:
|
MPU_xTimerGetReloadMode_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTimerGetReloadMode
|
||||||
bl MPU_xTimerGetReloadModeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxTimerGetReloadMode
|
PUBLIC MPU_uxTimerGetReloadMode
|
||||||
|
@ -980,10 +815,7 @@ MPU_uxTimerGetReloadMode:
|
||||||
b MPU_uxTimerGetReloadModeImpl
|
b MPU_uxTimerGetReloadModeImpl
|
||||||
MPU_uxTimerGetReloadMode_Unpriv:
|
MPU_uxTimerGetReloadMode_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxTimerGetReloadMode
|
||||||
bl MPU_uxTimerGetReloadModeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTimerGetPeriod
|
PUBLIC MPU_xTimerGetPeriod
|
||||||
|
@ -997,10 +829,7 @@ MPU_xTimerGetPeriod:
|
||||||
b MPU_xTimerGetPeriodImpl
|
b MPU_xTimerGetPeriodImpl
|
||||||
MPU_xTimerGetPeriod_Unpriv:
|
MPU_xTimerGetPeriod_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTimerGetPeriod
|
||||||
bl MPU_xTimerGetPeriodImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTimerGetExpiryTime
|
PUBLIC MPU_xTimerGetExpiryTime
|
||||||
|
@ -1014,14 +843,11 @@ MPU_xTimerGetExpiryTime:
|
||||||
b MPU_xTimerGetExpiryTimeImpl
|
b MPU_xTimerGetExpiryTimeImpl
|
||||||
MPU_xTimerGetExpiryTime_Unpriv:
|
MPU_xTimerGetExpiryTime_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTimerGetExpiryTime
|
||||||
bl MPU_xTimerGetExpiryTimeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xEventGroupWaitBits
|
PUBLIC MPU_xEventGroupWaitBitsEntry
|
||||||
MPU_xEventGroupWaitBits:
|
MPU_xEventGroupWaitBitsEntry:
|
||||||
push {r0}
|
push {r0}
|
||||||
mrs r0, control
|
mrs r0, control
|
||||||
tst r0, #1
|
tst r0, #1
|
||||||
|
@ -1031,10 +857,7 @@ MPU_xEventGroupWaitBits:
|
||||||
b MPU_xEventGroupWaitBitsImpl
|
b MPU_xEventGroupWaitBitsImpl
|
||||||
MPU_xEventGroupWaitBits_Unpriv:
|
MPU_xEventGroupWaitBits_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER_1
|
svc #SYSTEM_CALL_xEventGroupWaitBits
|
||||||
bl MPU_xEventGroupWaitBitsImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xEventGroupClearBits
|
PUBLIC MPU_xEventGroupClearBits
|
||||||
|
@ -1048,10 +871,7 @@ MPU_xEventGroupClearBits:
|
||||||
b MPU_xEventGroupClearBitsImpl
|
b MPU_xEventGroupClearBitsImpl
|
||||||
MPU_xEventGroupClearBits_Unpriv:
|
MPU_xEventGroupClearBits_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xEventGroupClearBits
|
||||||
bl MPU_xEventGroupClearBitsImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xEventGroupSetBits
|
PUBLIC MPU_xEventGroupSetBits
|
||||||
|
@ -1065,10 +885,7 @@ MPU_xEventGroupSetBits:
|
||||||
b MPU_xEventGroupSetBitsImpl
|
b MPU_xEventGroupSetBitsImpl
|
||||||
MPU_xEventGroupSetBits_Unpriv:
|
MPU_xEventGroupSetBits_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xEventGroupSetBits
|
||||||
bl MPU_xEventGroupSetBitsImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xEventGroupSync
|
PUBLIC MPU_xEventGroupSync
|
||||||
|
@ -1082,10 +899,7 @@ MPU_xEventGroupSync:
|
||||||
b MPU_xEventGroupSyncImpl
|
b MPU_xEventGroupSyncImpl
|
||||||
MPU_xEventGroupSync_Unpriv:
|
MPU_xEventGroupSync_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xEventGroupSync
|
||||||
bl MPU_xEventGroupSyncImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxEventGroupGetNumber
|
PUBLIC MPU_uxEventGroupGetNumber
|
||||||
|
@ -1099,10 +913,7 @@ MPU_uxEventGroupGetNumber:
|
||||||
b MPU_uxEventGroupGetNumberImpl
|
b MPU_uxEventGroupGetNumberImpl
|
||||||
MPU_uxEventGroupGetNumber_Unpriv:
|
MPU_uxEventGroupGetNumber_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxEventGroupGetNumber
|
||||||
bl MPU_uxEventGroupGetNumberImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vEventGroupSetNumber
|
PUBLIC MPU_vEventGroupSetNumber
|
||||||
|
@ -1116,10 +927,7 @@ MPU_vEventGroupSetNumber:
|
||||||
b MPU_vEventGroupSetNumberImpl
|
b MPU_vEventGroupSetNumberImpl
|
||||||
MPU_vEventGroupSetNumber_Unpriv:
|
MPU_vEventGroupSetNumber_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vEventGroupSetNumber
|
||||||
bl MPU_vEventGroupSetNumberImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferSend
|
PUBLIC MPU_xStreamBufferSend
|
||||||
|
@ -1133,10 +941,7 @@ MPU_xStreamBufferSend:
|
||||||
b MPU_xStreamBufferSendImpl
|
b MPU_xStreamBufferSendImpl
|
||||||
MPU_xStreamBufferSend_Unpriv:
|
MPU_xStreamBufferSend_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferSend
|
||||||
bl MPU_xStreamBufferSendImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferReceive
|
PUBLIC MPU_xStreamBufferReceive
|
||||||
|
@ -1150,10 +955,7 @@ MPU_xStreamBufferReceive:
|
||||||
b MPU_xStreamBufferReceiveImpl
|
b MPU_xStreamBufferReceiveImpl
|
||||||
MPU_xStreamBufferReceive_Unpriv:
|
MPU_xStreamBufferReceive_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferReceive
|
||||||
bl MPU_xStreamBufferReceiveImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferIsFull
|
PUBLIC MPU_xStreamBufferIsFull
|
||||||
|
@ -1167,10 +969,7 @@ MPU_xStreamBufferIsFull:
|
||||||
b MPU_xStreamBufferIsFullImpl
|
b MPU_xStreamBufferIsFullImpl
|
||||||
MPU_xStreamBufferIsFull_Unpriv:
|
MPU_xStreamBufferIsFull_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferIsFull
|
||||||
bl MPU_xStreamBufferIsFullImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferIsEmpty
|
PUBLIC MPU_xStreamBufferIsEmpty
|
||||||
|
@ -1184,10 +983,7 @@ MPU_xStreamBufferIsEmpty:
|
||||||
b MPU_xStreamBufferIsEmptyImpl
|
b MPU_xStreamBufferIsEmptyImpl
|
||||||
MPU_xStreamBufferIsEmpty_Unpriv:
|
MPU_xStreamBufferIsEmpty_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferIsEmpty
|
||||||
bl MPU_xStreamBufferIsEmptyImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferSpacesAvailable
|
PUBLIC MPU_xStreamBufferSpacesAvailable
|
||||||
|
@ -1201,10 +997,7 @@ MPU_xStreamBufferSpacesAvailable:
|
||||||
b MPU_xStreamBufferSpacesAvailableImpl
|
b MPU_xStreamBufferSpacesAvailableImpl
|
||||||
MPU_xStreamBufferSpacesAvailable_Unpriv:
|
MPU_xStreamBufferSpacesAvailable_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferSpacesAvailable
|
||||||
bl MPU_xStreamBufferSpacesAvailableImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferBytesAvailable
|
PUBLIC MPU_xStreamBufferBytesAvailable
|
||||||
|
@ -1218,10 +1011,7 @@ MPU_xStreamBufferBytesAvailable:
|
||||||
b MPU_xStreamBufferBytesAvailableImpl
|
b MPU_xStreamBufferBytesAvailableImpl
|
||||||
MPU_xStreamBufferBytesAvailable_Unpriv:
|
MPU_xStreamBufferBytesAvailable_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferBytesAvailable
|
||||||
bl MPU_xStreamBufferBytesAvailableImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferSetTriggerLevel
|
PUBLIC MPU_xStreamBufferSetTriggerLevel
|
||||||
|
@ -1235,10 +1025,7 @@ MPU_xStreamBufferSetTriggerLevel:
|
||||||
b MPU_xStreamBufferSetTriggerLevelImpl
|
b MPU_xStreamBufferSetTriggerLevelImpl
|
||||||
MPU_xStreamBufferSetTriggerLevel_Unpriv:
|
MPU_xStreamBufferSetTriggerLevel_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferSetTriggerLevel
|
||||||
bl MPU_xStreamBufferSetTriggerLevelImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferNextMessageLengthBytes
|
PUBLIC MPU_xStreamBufferNextMessageLengthBytes
|
||||||
|
@ -1252,10 +1039,7 @@ MPU_xStreamBufferNextMessageLengthBytes:
|
||||||
b MPU_xStreamBufferNextMessageLengthBytesImpl
|
b MPU_xStreamBufferNextMessageLengthBytesImpl
|
||||||
MPU_xStreamBufferNextMessageLengthBytes_Unpriv:
|
MPU_xStreamBufferNextMessageLengthBytes_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferNextMessageLengthBytes
|
||||||
bl MPU_xStreamBufferNextMessageLengthBytesImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/* Default weak implementations in case one is not available from
|
/* Default weak implementations in case one is not available from
|
||||||
|
@ -1461,9 +1245,9 @@ MPU_xTimerIsTimerActiveImpl:
|
||||||
MPU_xTimerGetTimerDaemonTaskHandleImpl:
|
MPU_xTimerGetTimerDaemonTaskHandleImpl:
|
||||||
b MPU_xTimerGetTimerDaemonTaskHandleImpl
|
b MPU_xTimerGetTimerDaemonTaskHandleImpl
|
||||||
|
|
||||||
PUBWEAK MPU_xTimerGenericCommandImpl
|
PUBWEAK MPU_xTimerGenericCommandPrivImpl
|
||||||
MPU_xTimerGenericCommandImpl:
|
MPU_xTimerGenericCommandPrivImpl:
|
||||||
b MPU_xTimerGenericCommandImpl
|
b MPU_xTimerGenericCommandPrivImpl
|
||||||
|
|
||||||
PUBWEAK MPU_pcTimerGetNameImpl
|
PUBWEAK MPU_pcTimerGetNameImpl
|
||||||
MPU_pcTimerGetNameImpl:
|
MPU_pcTimerGetNameImpl:
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
@ -32,6 +32,9 @@ the code is included in C files but excluded by the preprocessor in assembly
|
||||||
files (__ICCARM__ is defined by the IAR C compiler but not by the IAR assembler. */
|
files (__ICCARM__ is defined by the IAR C compiler but not by the IAR assembler. */
|
||||||
#include "FreeRTOSConfig.h"
|
#include "FreeRTOSConfig.h"
|
||||||
|
|
||||||
|
/* System call numbers includes. */
|
||||||
|
#include "mpu_syscall_numbers.h"
|
||||||
|
|
||||||
#ifndef configUSE_MPU_WRAPPERS_V1
|
#ifndef configUSE_MPU_WRAPPERS_V1
|
||||||
#define configUSE_MPU_WRAPPERS_V1 0
|
#define configUSE_MPU_WRAPPERS_V1 0
|
||||||
#endif
|
#endif
|
||||||
|
@ -44,7 +47,6 @@ files (__ICCARM__ is defined by the IAR C compiler but not by the IAR assembler.
|
||||||
EXTERN SecureContext_LoadContext
|
EXTERN SecureContext_LoadContext
|
||||||
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
||||||
EXTERN vSystemCallEnter
|
EXTERN vSystemCallEnter
|
||||||
EXTERN vSystemCallEnter_1
|
|
||||||
EXTERN vSystemCallExit
|
EXTERN vSystemCallExit
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -86,7 +88,7 @@ vResetPrivilege:
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
vPortAllocateSecureContext:
|
vPortAllocateSecureContext:
|
||||||
svc 0 /* Secure context is allocated in the supervisor call. portSVC_ALLOCATE_SECURE_CONTEXT = 0. */
|
svc 100 /* Secure context is allocated in the supervisor call. portSVC_ALLOCATE_SECURE_CONTEXT = 100. */
|
||||||
bx lr /* Return. */
|
bx lr /* Return. */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -205,7 +207,7 @@ vStartFirstTask:
|
||||||
cpsie f
|
cpsie f
|
||||||
dsb
|
dsb
|
||||||
isb
|
isb
|
||||||
svc 2 /* System call to start the first task. portSVC_START_SCHEDULER = 2. */
|
svc 102 /* System call to start the first task. portSVC_START_SCHEDULER = 102. */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
ulSetInterruptMask:
|
ulSetInterruptMask:
|
||||||
|
@ -455,11 +457,9 @@ SVC_Handler:
|
||||||
|
|
||||||
ldr r1, [r0, #24]
|
ldr r1, [r0, #24]
|
||||||
ldrb r2, [r1, #-2]
|
ldrb r2, [r1, #-2]
|
||||||
cmp r2, #4 /* portSVC_SYSTEM_CALL_ENTER. */
|
cmp r2, #NUM_SYSTEM_CALLS
|
||||||
beq syscall_enter
|
blt syscall_enter
|
||||||
cmp r2, #5 /* portSVC_SYSTEM_CALL_ENTER_1. */
|
cmp r2, #104 /* portSVC_SYSTEM_CALL_EXIT. */
|
||||||
beq syscall_enter_1
|
|
||||||
cmp r2, #6 /* portSVC_SYSTEM_CALL_EXIT. */
|
|
||||||
beq syscall_exit
|
beq syscall_exit
|
||||||
b vPortSVCHandler_C
|
b vPortSVCHandler_C
|
||||||
|
|
||||||
|
@ -467,10 +467,6 @@ SVC_Handler:
|
||||||
mov r1, lr
|
mov r1, lr
|
||||||
b vSystemCallEnter
|
b vSystemCallEnter
|
||||||
|
|
||||||
syscall_enter_1:
|
|
||||||
mov r1, lr
|
|
||||||
b vSystemCallEnter_1
|
|
||||||
|
|
||||||
syscall_exit:
|
syscall_exit:
|
||||||
mov r1, lr
|
mov r1, lr
|
||||||
b vSystemCallExit
|
b vSystemCallExit
|
||||||
|
@ -493,7 +489,7 @@ vPortFreeSecureContext:
|
||||||
ldr r1, [r2] /* The first item on the stack is the task's xSecureContext. */
|
ldr r1, [r2] /* The first item on the stack is the task's xSecureContext. */
|
||||||
cmp r1, #0 /* Raise svc if task's xSecureContext is not NULL. */
|
cmp r1, #0 /* Raise svc if task's xSecureContext is not NULL. */
|
||||||
it ne
|
it ne
|
||||||
svcne 1 /* Secure context is freed in the supervisor call. portSVC_FREE_SECURE_CONTEXT = 1. */
|
svcne 101 /* Secure context is freed in the supervisor call. portSVC_FREE_SECURE_CONTEXT = 101. */
|
||||||
bx lr /* Return. */
|
bx lr /* Return. */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
@ -32,15 +32,12 @@
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
#include "FreeRTOSConfig.h"
|
#include "FreeRTOSConfig.h"
|
||||||
|
#include "mpu_syscall_numbers.h"
|
||||||
|
|
||||||
#ifndef configUSE_MPU_WRAPPERS_V1
|
#ifndef configUSE_MPU_WRAPPERS_V1
|
||||||
#define configUSE_MPU_WRAPPERS_V1 0
|
#define configUSE_MPU_WRAPPERS_V1 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* These must be in sync with portmacro.h. */
|
|
||||||
#define portSVC_SYSTEM_CALL_ENTER 4 /* System calls with upto 4 parameters. */
|
|
||||||
#define portSVC_SYSTEM_CALL_ENTER_1 5 /* System calls with 5 parameters. */
|
|
||||||
#define portSVC_SYSTEM_CALL_EXIT 6
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
||||||
|
@ -56,10 +53,7 @@ MPU_xTaskDelayUntil:
|
||||||
b MPU_xTaskDelayUntilImpl
|
b MPU_xTaskDelayUntilImpl
|
||||||
MPU_xTaskDelayUntil_Unpriv:
|
MPU_xTaskDelayUntil_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskDelayUntil
|
||||||
bl MPU_xTaskDelayUntilImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskAbortDelay
|
PUBLIC MPU_xTaskAbortDelay
|
||||||
|
@ -73,10 +67,7 @@ MPU_xTaskAbortDelay:
|
||||||
b MPU_xTaskAbortDelayImpl
|
b MPU_xTaskAbortDelayImpl
|
||||||
MPU_xTaskAbortDelay_Unpriv:
|
MPU_xTaskAbortDelay_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskAbortDelay
|
||||||
bl MPU_xTaskAbortDelayImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskDelay
|
PUBLIC MPU_vTaskDelay
|
||||||
|
@ -90,10 +81,7 @@ MPU_vTaskDelay:
|
||||||
b MPU_vTaskDelayImpl
|
b MPU_vTaskDelayImpl
|
||||||
MPU_vTaskDelay_Unpriv:
|
MPU_vTaskDelay_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskDelay
|
||||||
bl MPU_vTaskDelayImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxTaskPriorityGet
|
PUBLIC MPU_uxTaskPriorityGet
|
||||||
|
@ -107,10 +95,7 @@ MPU_uxTaskPriorityGet:
|
||||||
b MPU_uxTaskPriorityGetImpl
|
b MPU_uxTaskPriorityGetImpl
|
||||||
MPU_uxTaskPriorityGet_Unpriv:
|
MPU_uxTaskPriorityGet_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxTaskPriorityGet
|
||||||
bl MPU_uxTaskPriorityGetImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_eTaskGetState
|
PUBLIC MPU_eTaskGetState
|
||||||
|
@ -124,10 +109,7 @@ MPU_eTaskGetState:
|
||||||
b MPU_eTaskGetStateImpl
|
b MPU_eTaskGetStateImpl
|
||||||
MPU_eTaskGetState_Unpriv:
|
MPU_eTaskGetState_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_eTaskGetState
|
||||||
bl MPU_eTaskGetStateImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskGetInfo
|
PUBLIC MPU_vTaskGetInfo
|
||||||
|
@ -141,10 +123,7 @@ MPU_vTaskGetInfo:
|
||||||
b MPU_vTaskGetInfoImpl
|
b MPU_vTaskGetInfoImpl
|
||||||
MPU_vTaskGetInfo_Unpriv:
|
MPU_vTaskGetInfo_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskGetInfo
|
||||||
bl MPU_vTaskGetInfoImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGetIdleTaskHandle
|
PUBLIC MPU_xTaskGetIdleTaskHandle
|
||||||
|
@ -158,10 +137,7 @@ MPU_xTaskGetIdleTaskHandle:
|
||||||
b MPU_xTaskGetIdleTaskHandleImpl
|
b MPU_xTaskGetIdleTaskHandleImpl
|
||||||
MPU_xTaskGetIdleTaskHandle_Unpriv:
|
MPU_xTaskGetIdleTaskHandle_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskGetIdleTaskHandle
|
||||||
bl MPU_xTaskGetIdleTaskHandleImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskSuspend
|
PUBLIC MPU_vTaskSuspend
|
||||||
|
@ -175,10 +151,7 @@ MPU_vTaskSuspend:
|
||||||
b MPU_vTaskSuspendImpl
|
b MPU_vTaskSuspendImpl
|
||||||
MPU_vTaskSuspend_Unpriv:
|
MPU_vTaskSuspend_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskSuspend
|
||||||
bl MPU_vTaskSuspendImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskResume
|
PUBLIC MPU_vTaskResume
|
||||||
|
@ -192,10 +165,7 @@ MPU_vTaskResume:
|
||||||
b MPU_vTaskResumeImpl
|
b MPU_vTaskResumeImpl
|
||||||
MPU_vTaskResume_Unpriv:
|
MPU_vTaskResume_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskResume
|
||||||
bl MPU_vTaskResumeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGetTickCount
|
PUBLIC MPU_xTaskGetTickCount
|
||||||
|
@ -209,10 +179,7 @@ MPU_xTaskGetTickCount:
|
||||||
b MPU_xTaskGetTickCountImpl
|
b MPU_xTaskGetTickCountImpl
|
||||||
MPU_xTaskGetTickCount_Unpriv:
|
MPU_xTaskGetTickCount_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskGetTickCount
|
||||||
bl MPU_xTaskGetTickCountImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxTaskGetNumberOfTasks
|
PUBLIC MPU_uxTaskGetNumberOfTasks
|
||||||
|
@ -226,10 +193,7 @@ MPU_uxTaskGetNumberOfTasks:
|
||||||
b MPU_uxTaskGetNumberOfTasksImpl
|
b MPU_uxTaskGetNumberOfTasksImpl
|
||||||
MPU_uxTaskGetNumberOfTasks_Unpriv:
|
MPU_uxTaskGetNumberOfTasks_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxTaskGetNumberOfTasks
|
||||||
bl MPU_uxTaskGetNumberOfTasksImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_pcTaskGetName
|
PUBLIC MPU_pcTaskGetName
|
||||||
|
@ -243,10 +207,7 @@ MPU_pcTaskGetName:
|
||||||
b MPU_pcTaskGetNameImpl
|
b MPU_pcTaskGetNameImpl
|
||||||
MPU_pcTaskGetName_Unpriv:
|
MPU_pcTaskGetName_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_pcTaskGetName
|
||||||
bl MPU_pcTaskGetNameImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_ulTaskGetRunTimeCounter
|
PUBLIC MPU_ulTaskGetRunTimeCounter
|
||||||
|
@ -260,10 +221,7 @@ MPU_ulTaskGetRunTimeCounter:
|
||||||
b MPU_ulTaskGetRunTimeCounterImpl
|
b MPU_ulTaskGetRunTimeCounterImpl
|
||||||
MPU_ulTaskGetRunTimeCounter_Unpriv:
|
MPU_ulTaskGetRunTimeCounter_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_ulTaskGetRunTimeCounter
|
||||||
bl MPU_ulTaskGetRunTimeCounterImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_ulTaskGetRunTimePercent
|
PUBLIC MPU_ulTaskGetRunTimePercent
|
||||||
|
@ -277,10 +235,7 @@ MPU_ulTaskGetRunTimePercent:
|
||||||
b MPU_ulTaskGetRunTimePercentImpl
|
b MPU_ulTaskGetRunTimePercentImpl
|
||||||
MPU_ulTaskGetRunTimePercent_Unpriv:
|
MPU_ulTaskGetRunTimePercent_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_ulTaskGetRunTimePercent
|
||||||
bl MPU_ulTaskGetRunTimePercentImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_ulTaskGetIdleRunTimePercent
|
PUBLIC MPU_ulTaskGetIdleRunTimePercent
|
||||||
|
@ -294,10 +249,7 @@ MPU_ulTaskGetIdleRunTimePercent:
|
||||||
b MPU_ulTaskGetIdleRunTimePercentImpl
|
b MPU_ulTaskGetIdleRunTimePercentImpl
|
||||||
MPU_ulTaskGetIdleRunTimePercent_Unpriv:
|
MPU_ulTaskGetIdleRunTimePercent_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_ulTaskGetIdleRunTimePercent
|
||||||
bl MPU_ulTaskGetIdleRunTimePercentImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_ulTaskGetIdleRunTimeCounter
|
PUBLIC MPU_ulTaskGetIdleRunTimeCounter
|
||||||
|
@ -311,10 +263,7 @@ MPU_ulTaskGetIdleRunTimeCounter:
|
||||||
b MPU_ulTaskGetIdleRunTimeCounterImpl
|
b MPU_ulTaskGetIdleRunTimeCounterImpl
|
||||||
MPU_ulTaskGetIdleRunTimeCounter_Unpriv:
|
MPU_ulTaskGetIdleRunTimeCounter_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_ulTaskGetIdleRunTimeCounter
|
||||||
bl MPU_ulTaskGetIdleRunTimeCounterImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskSetApplicationTaskTag
|
PUBLIC MPU_vTaskSetApplicationTaskTag
|
||||||
|
@ -328,10 +277,7 @@ MPU_vTaskSetApplicationTaskTag:
|
||||||
b MPU_vTaskSetApplicationTaskTagImpl
|
b MPU_vTaskSetApplicationTaskTagImpl
|
||||||
MPU_vTaskSetApplicationTaskTag_Unpriv:
|
MPU_vTaskSetApplicationTaskTag_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskSetApplicationTaskTag
|
||||||
bl MPU_vTaskSetApplicationTaskTagImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGetApplicationTaskTag
|
PUBLIC MPU_xTaskGetApplicationTaskTag
|
||||||
|
@ -345,10 +291,7 @@ MPU_xTaskGetApplicationTaskTag:
|
||||||
b MPU_xTaskGetApplicationTaskTagImpl
|
b MPU_xTaskGetApplicationTaskTagImpl
|
||||||
MPU_xTaskGetApplicationTaskTag_Unpriv:
|
MPU_xTaskGetApplicationTaskTag_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskGetApplicationTaskTag
|
||||||
bl MPU_xTaskGetApplicationTaskTagImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskSetThreadLocalStoragePointer
|
PUBLIC MPU_vTaskSetThreadLocalStoragePointer
|
||||||
|
@ -362,10 +305,7 @@ MPU_vTaskSetThreadLocalStoragePointer:
|
||||||
b MPU_vTaskSetThreadLocalStoragePointerImpl
|
b MPU_vTaskSetThreadLocalStoragePointerImpl
|
||||||
MPU_vTaskSetThreadLocalStoragePointer_Unpriv:
|
MPU_vTaskSetThreadLocalStoragePointer_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskSetThreadLocalStoragePointer
|
||||||
bl MPU_vTaskSetThreadLocalStoragePointerImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_pvTaskGetThreadLocalStoragePointer
|
PUBLIC MPU_pvTaskGetThreadLocalStoragePointer
|
||||||
|
@ -379,10 +319,7 @@ MPU_pvTaskGetThreadLocalStoragePointer:
|
||||||
b MPU_pvTaskGetThreadLocalStoragePointerImpl
|
b MPU_pvTaskGetThreadLocalStoragePointerImpl
|
||||||
MPU_pvTaskGetThreadLocalStoragePointer_Unpriv:
|
MPU_pvTaskGetThreadLocalStoragePointer_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_pvTaskGetThreadLocalStoragePointer
|
||||||
bl MPU_pvTaskGetThreadLocalStoragePointerImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxTaskGetSystemState
|
PUBLIC MPU_uxTaskGetSystemState
|
||||||
|
@ -396,10 +333,7 @@ MPU_uxTaskGetSystemState:
|
||||||
b MPU_uxTaskGetSystemStateImpl
|
b MPU_uxTaskGetSystemStateImpl
|
||||||
MPU_uxTaskGetSystemState_Unpriv:
|
MPU_uxTaskGetSystemState_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxTaskGetSystemState
|
||||||
bl MPU_uxTaskGetSystemStateImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxTaskGetStackHighWaterMark
|
PUBLIC MPU_uxTaskGetStackHighWaterMark
|
||||||
|
@ -413,10 +347,7 @@ MPU_uxTaskGetStackHighWaterMark:
|
||||||
b MPU_uxTaskGetStackHighWaterMarkImpl
|
b MPU_uxTaskGetStackHighWaterMarkImpl
|
||||||
MPU_uxTaskGetStackHighWaterMark_Unpriv:
|
MPU_uxTaskGetStackHighWaterMark_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxTaskGetStackHighWaterMark
|
||||||
bl MPU_uxTaskGetStackHighWaterMarkImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxTaskGetStackHighWaterMark2
|
PUBLIC MPU_uxTaskGetStackHighWaterMark2
|
||||||
|
@ -430,10 +361,7 @@ MPU_uxTaskGetStackHighWaterMark2:
|
||||||
b MPU_uxTaskGetStackHighWaterMark2Impl
|
b MPU_uxTaskGetStackHighWaterMark2Impl
|
||||||
MPU_uxTaskGetStackHighWaterMark2_Unpriv:
|
MPU_uxTaskGetStackHighWaterMark2_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxTaskGetStackHighWaterMark2
|
||||||
bl MPU_uxTaskGetStackHighWaterMark2Impl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGetCurrentTaskHandle
|
PUBLIC MPU_xTaskGetCurrentTaskHandle
|
||||||
|
@ -447,10 +375,7 @@ MPU_xTaskGetCurrentTaskHandle:
|
||||||
b MPU_xTaskGetCurrentTaskHandleImpl
|
b MPU_xTaskGetCurrentTaskHandleImpl
|
||||||
MPU_xTaskGetCurrentTaskHandle_Unpriv:
|
MPU_xTaskGetCurrentTaskHandle_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskGetCurrentTaskHandle
|
||||||
bl MPU_xTaskGetCurrentTaskHandleImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGetSchedulerState
|
PUBLIC MPU_xTaskGetSchedulerState
|
||||||
|
@ -464,10 +389,7 @@ MPU_xTaskGetSchedulerState:
|
||||||
b MPU_xTaskGetSchedulerStateImpl
|
b MPU_xTaskGetSchedulerStateImpl
|
||||||
MPU_xTaskGetSchedulerState_Unpriv:
|
MPU_xTaskGetSchedulerState_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskGetSchedulerState
|
||||||
bl MPU_xTaskGetSchedulerStateImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTaskSetTimeOutState
|
PUBLIC MPU_vTaskSetTimeOutState
|
||||||
|
@ -481,10 +403,7 @@ MPU_vTaskSetTimeOutState:
|
||||||
b MPU_vTaskSetTimeOutStateImpl
|
b MPU_vTaskSetTimeOutStateImpl
|
||||||
MPU_vTaskSetTimeOutState_Unpriv:
|
MPU_vTaskSetTimeOutState_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTaskSetTimeOutState
|
||||||
bl MPU_vTaskSetTimeOutStateImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskCheckForTimeOut
|
PUBLIC MPU_xTaskCheckForTimeOut
|
||||||
|
@ -498,14 +417,11 @@ MPU_xTaskCheckForTimeOut:
|
||||||
b MPU_xTaskCheckForTimeOutImpl
|
b MPU_xTaskCheckForTimeOutImpl
|
||||||
MPU_xTaskCheckForTimeOut_Unpriv:
|
MPU_xTaskCheckForTimeOut_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskCheckForTimeOut
|
||||||
bl MPU_xTaskCheckForTimeOutImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGenericNotify
|
PUBLIC MPU_xTaskGenericNotifyEntry
|
||||||
MPU_xTaskGenericNotify:
|
MPU_xTaskGenericNotifyEntry:
|
||||||
push {r0}
|
push {r0}
|
||||||
mrs r0, control
|
mrs r0, control
|
||||||
tst r0, #1
|
tst r0, #1
|
||||||
|
@ -515,14 +431,11 @@ MPU_xTaskGenericNotify:
|
||||||
b MPU_xTaskGenericNotifyImpl
|
b MPU_xTaskGenericNotifyImpl
|
||||||
MPU_xTaskGenericNotify_Unpriv:
|
MPU_xTaskGenericNotify_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER_1
|
svc #SYSTEM_CALL_xTaskGenericNotify
|
||||||
bl MPU_xTaskGenericNotifyImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGenericNotifyWait
|
PUBLIC MPU_xTaskGenericNotifyWaitEntry
|
||||||
MPU_xTaskGenericNotifyWait:
|
MPU_xTaskGenericNotifyWaitEntry:
|
||||||
push {r0}
|
push {r0}
|
||||||
mrs r0, control
|
mrs r0, control
|
||||||
tst r0, #1
|
tst r0, #1
|
||||||
|
@ -532,10 +445,7 @@ MPU_xTaskGenericNotifyWait:
|
||||||
b MPU_xTaskGenericNotifyWaitImpl
|
b MPU_xTaskGenericNotifyWaitImpl
|
||||||
MPU_xTaskGenericNotifyWait_Unpriv:
|
MPU_xTaskGenericNotifyWait_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER_1
|
svc #SYSTEM_CALL_xTaskGenericNotifyWait
|
||||||
bl MPU_xTaskGenericNotifyWaitImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_ulTaskGenericNotifyTake
|
PUBLIC MPU_ulTaskGenericNotifyTake
|
||||||
|
@ -549,10 +459,7 @@ MPU_ulTaskGenericNotifyTake:
|
||||||
b MPU_ulTaskGenericNotifyTakeImpl
|
b MPU_ulTaskGenericNotifyTakeImpl
|
||||||
MPU_ulTaskGenericNotifyTake_Unpriv:
|
MPU_ulTaskGenericNotifyTake_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_ulTaskGenericNotifyTake
|
||||||
bl MPU_ulTaskGenericNotifyTakeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTaskGenericNotifyStateClear
|
PUBLIC MPU_xTaskGenericNotifyStateClear
|
||||||
|
@ -566,10 +473,7 @@ MPU_xTaskGenericNotifyStateClear:
|
||||||
b MPU_xTaskGenericNotifyStateClearImpl
|
b MPU_xTaskGenericNotifyStateClearImpl
|
||||||
MPU_xTaskGenericNotifyStateClear_Unpriv:
|
MPU_xTaskGenericNotifyStateClear_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTaskGenericNotifyStateClear
|
||||||
bl MPU_xTaskGenericNotifyStateClearImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_ulTaskGenericNotifyValueClear
|
PUBLIC MPU_ulTaskGenericNotifyValueClear
|
||||||
|
@ -583,10 +487,7 @@ MPU_ulTaskGenericNotifyValueClear:
|
||||||
b MPU_ulTaskGenericNotifyValueClearImpl
|
b MPU_ulTaskGenericNotifyValueClearImpl
|
||||||
MPU_ulTaskGenericNotifyValueClear_Unpriv:
|
MPU_ulTaskGenericNotifyValueClear_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_ulTaskGenericNotifyValueClear
|
||||||
bl MPU_ulTaskGenericNotifyValueClearImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueGenericSend
|
PUBLIC MPU_xQueueGenericSend
|
||||||
|
@ -600,10 +501,7 @@ MPU_xQueueGenericSend:
|
||||||
b MPU_xQueueGenericSendImpl
|
b MPU_xQueueGenericSendImpl
|
||||||
MPU_xQueueGenericSend_Unpriv:
|
MPU_xQueueGenericSend_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueGenericSend
|
||||||
bl MPU_xQueueGenericSendImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxQueueMessagesWaiting
|
PUBLIC MPU_uxQueueMessagesWaiting
|
||||||
|
@ -617,10 +515,7 @@ MPU_uxQueueMessagesWaiting:
|
||||||
b MPU_uxQueueMessagesWaitingImpl
|
b MPU_uxQueueMessagesWaitingImpl
|
||||||
MPU_uxQueueMessagesWaiting_Unpriv:
|
MPU_uxQueueMessagesWaiting_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxQueueMessagesWaiting
|
||||||
bl MPU_uxQueueMessagesWaitingImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxQueueSpacesAvailable
|
PUBLIC MPU_uxQueueSpacesAvailable
|
||||||
|
@ -634,10 +529,7 @@ MPU_uxQueueSpacesAvailable:
|
||||||
b MPU_uxQueueSpacesAvailableImpl
|
b MPU_uxQueueSpacesAvailableImpl
|
||||||
MPU_uxQueueSpacesAvailable_Unpriv:
|
MPU_uxQueueSpacesAvailable_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxQueueSpacesAvailable
|
||||||
bl MPU_uxQueueSpacesAvailableImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueReceive
|
PUBLIC MPU_xQueueReceive
|
||||||
|
@ -651,10 +543,7 @@ MPU_xQueueReceive:
|
||||||
b MPU_xQueueReceiveImpl
|
b MPU_xQueueReceiveImpl
|
||||||
MPU_xQueueReceive_Unpriv:
|
MPU_xQueueReceive_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueReceive
|
||||||
bl MPU_xQueueReceiveImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueuePeek
|
PUBLIC MPU_xQueuePeek
|
||||||
|
@ -668,10 +557,7 @@ MPU_xQueuePeek:
|
||||||
b MPU_xQueuePeekImpl
|
b MPU_xQueuePeekImpl
|
||||||
MPU_xQueuePeek_Unpriv:
|
MPU_xQueuePeek_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueuePeek
|
||||||
bl MPU_xQueuePeekImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueSemaphoreTake
|
PUBLIC MPU_xQueueSemaphoreTake
|
||||||
|
@ -685,10 +571,7 @@ MPU_xQueueSemaphoreTake:
|
||||||
b MPU_xQueueSemaphoreTakeImpl
|
b MPU_xQueueSemaphoreTakeImpl
|
||||||
MPU_xQueueSemaphoreTake_Unpriv:
|
MPU_xQueueSemaphoreTake_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueSemaphoreTake
|
||||||
bl MPU_xQueueSemaphoreTakeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueGetMutexHolder
|
PUBLIC MPU_xQueueGetMutexHolder
|
||||||
|
@ -702,10 +585,7 @@ MPU_xQueueGetMutexHolder:
|
||||||
b MPU_xQueueGetMutexHolderImpl
|
b MPU_xQueueGetMutexHolderImpl
|
||||||
MPU_xQueueGetMutexHolder_Unpriv:
|
MPU_xQueueGetMutexHolder_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueGetMutexHolder
|
||||||
bl MPU_xQueueGetMutexHolderImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueTakeMutexRecursive
|
PUBLIC MPU_xQueueTakeMutexRecursive
|
||||||
|
@ -719,10 +599,7 @@ MPU_xQueueTakeMutexRecursive:
|
||||||
b MPU_xQueueTakeMutexRecursiveImpl
|
b MPU_xQueueTakeMutexRecursiveImpl
|
||||||
MPU_xQueueTakeMutexRecursive_Unpriv:
|
MPU_xQueueTakeMutexRecursive_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueTakeMutexRecursive
|
||||||
bl MPU_xQueueTakeMutexRecursiveImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueGiveMutexRecursive
|
PUBLIC MPU_xQueueGiveMutexRecursive
|
||||||
|
@ -736,10 +613,7 @@ MPU_xQueueGiveMutexRecursive:
|
||||||
b MPU_xQueueGiveMutexRecursiveImpl
|
b MPU_xQueueGiveMutexRecursiveImpl
|
||||||
MPU_xQueueGiveMutexRecursive_Unpriv:
|
MPU_xQueueGiveMutexRecursive_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueGiveMutexRecursive
|
||||||
bl MPU_xQueueGiveMutexRecursiveImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueSelectFromSet
|
PUBLIC MPU_xQueueSelectFromSet
|
||||||
|
@ -753,10 +627,7 @@ MPU_xQueueSelectFromSet:
|
||||||
b MPU_xQueueSelectFromSetImpl
|
b MPU_xQueueSelectFromSetImpl
|
||||||
MPU_xQueueSelectFromSet_Unpriv:
|
MPU_xQueueSelectFromSet_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueSelectFromSet
|
||||||
bl MPU_xQueueSelectFromSetImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xQueueAddToSet
|
PUBLIC MPU_xQueueAddToSet
|
||||||
|
@ -770,10 +641,7 @@ MPU_xQueueAddToSet:
|
||||||
b MPU_xQueueAddToSetImpl
|
b MPU_xQueueAddToSetImpl
|
||||||
MPU_xQueueAddToSet_Unpriv:
|
MPU_xQueueAddToSet_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xQueueAddToSet
|
||||||
bl MPU_xQueueAddToSetImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vQueueAddToRegistry
|
PUBLIC MPU_vQueueAddToRegistry
|
||||||
|
@ -787,10 +655,7 @@ MPU_vQueueAddToRegistry:
|
||||||
b MPU_vQueueAddToRegistryImpl
|
b MPU_vQueueAddToRegistryImpl
|
||||||
MPU_vQueueAddToRegistry_Unpriv:
|
MPU_vQueueAddToRegistry_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vQueueAddToRegistry
|
||||||
bl MPU_vQueueAddToRegistryImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vQueueUnregisterQueue
|
PUBLIC MPU_vQueueUnregisterQueue
|
||||||
|
@ -804,10 +669,7 @@ MPU_vQueueUnregisterQueue:
|
||||||
b MPU_vQueueUnregisterQueueImpl
|
b MPU_vQueueUnregisterQueueImpl
|
||||||
MPU_vQueueUnregisterQueue_Unpriv:
|
MPU_vQueueUnregisterQueue_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vQueueUnregisterQueue
|
||||||
bl MPU_vQueueUnregisterQueueImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_pcQueueGetName
|
PUBLIC MPU_pcQueueGetName
|
||||||
|
@ -821,10 +683,7 @@ MPU_pcQueueGetName:
|
||||||
b MPU_pcQueueGetNameImpl
|
b MPU_pcQueueGetNameImpl
|
||||||
MPU_pcQueueGetName_Unpriv:
|
MPU_pcQueueGetName_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_pcQueueGetName
|
||||||
bl MPU_pcQueueGetNameImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_pvTimerGetTimerID
|
PUBLIC MPU_pvTimerGetTimerID
|
||||||
|
@ -838,10 +697,7 @@ MPU_pvTimerGetTimerID:
|
||||||
b MPU_pvTimerGetTimerIDImpl
|
b MPU_pvTimerGetTimerIDImpl
|
||||||
MPU_pvTimerGetTimerID_Unpriv:
|
MPU_pvTimerGetTimerID_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_pvTimerGetTimerID
|
||||||
bl MPU_pvTimerGetTimerIDImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTimerSetTimerID
|
PUBLIC MPU_vTimerSetTimerID
|
||||||
|
@ -855,10 +711,7 @@ MPU_vTimerSetTimerID:
|
||||||
b MPU_vTimerSetTimerIDImpl
|
b MPU_vTimerSetTimerIDImpl
|
||||||
MPU_vTimerSetTimerID_Unpriv:
|
MPU_vTimerSetTimerID_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTimerSetTimerID
|
||||||
bl MPU_vTimerSetTimerIDImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTimerIsTimerActive
|
PUBLIC MPU_xTimerIsTimerActive
|
||||||
|
@ -872,10 +725,7 @@ MPU_xTimerIsTimerActive:
|
||||||
b MPU_xTimerIsTimerActiveImpl
|
b MPU_xTimerIsTimerActiveImpl
|
||||||
MPU_xTimerIsTimerActive_Unpriv:
|
MPU_xTimerIsTimerActive_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTimerIsTimerActive
|
||||||
bl MPU_xTimerIsTimerActiveImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTimerGetTimerDaemonTaskHandle
|
PUBLIC MPU_xTimerGetTimerDaemonTaskHandle
|
||||||
|
@ -889,14 +739,11 @@ MPU_xTimerGetTimerDaemonTaskHandle:
|
||||||
b MPU_xTimerGetTimerDaemonTaskHandleImpl
|
b MPU_xTimerGetTimerDaemonTaskHandleImpl
|
||||||
MPU_xTimerGetTimerDaemonTaskHandle_Unpriv:
|
MPU_xTimerGetTimerDaemonTaskHandle_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTimerGetTimerDaemonTaskHandle
|
||||||
bl MPU_xTimerGetTimerDaemonTaskHandleImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTimerGenericCommand
|
PUBLIC MPU_xTimerGenericCommandEntry
|
||||||
MPU_xTimerGenericCommand:
|
MPU_xTimerGenericCommandEntry:
|
||||||
push {r0}
|
push {r0}
|
||||||
/* This function can be called from ISR also and therefore, we need a check
|
/* This function can be called from ISR also and therefore, we need a check
|
||||||
* to take privileged path, if called from ISR. */
|
* to take privileged path, if called from ISR. */
|
||||||
|
@ -908,13 +755,10 @@ MPU_xTimerGenericCommand:
|
||||||
beq MPU_xTimerGenericCommand_Priv
|
beq MPU_xTimerGenericCommand_Priv
|
||||||
MPU_xTimerGenericCommand_Unpriv:
|
MPU_xTimerGenericCommand_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER_1
|
svc #SYSTEM_CALL_xTimerGenericCommand
|
||||||
bl MPU_xTimerGenericCommandImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
MPU_xTimerGenericCommand_Priv:
|
MPU_xTimerGenericCommand_Priv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
b MPU_xTimerGenericCommandImpl
|
b MPU_xTimerGenericCommandPrivImpl
|
||||||
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -929,10 +773,7 @@ MPU_pcTimerGetName:
|
||||||
b MPU_pcTimerGetNameImpl
|
b MPU_pcTimerGetNameImpl
|
||||||
MPU_pcTimerGetName_Unpriv:
|
MPU_pcTimerGetName_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_pcTimerGetName
|
||||||
bl MPU_pcTimerGetNameImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vTimerSetReloadMode
|
PUBLIC MPU_vTimerSetReloadMode
|
||||||
|
@ -946,10 +787,7 @@ MPU_vTimerSetReloadMode:
|
||||||
b MPU_vTimerSetReloadModeImpl
|
b MPU_vTimerSetReloadModeImpl
|
||||||
MPU_vTimerSetReloadMode_Unpriv:
|
MPU_vTimerSetReloadMode_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vTimerSetReloadMode
|
||||||
bl MPU_vTimerSetReloadModeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTimerGetReloadMode
|
PUBLIC MPU_xTimerGetReloadMode
|
||||||
|
@ -963,10 +801,7 @@ MPU_xTimerGetReloadMode:
|
||||||
b MPU_xTimerGetReloadModeImpl
|
b MPU_xTimerGetReloadModeImpl
|
||||||
MPU_xTimerGetReloadMode_Unpriv:
|
MPU_xTimerGetReloadMode_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTimerGetReloadMode
|
||||||
bl MPU_xTimerGetReloadModeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxTimerGetReloadMode
|
PUBLIC MPU_uxTimerGetReloadMode
|
||||||
|
@ -980,10 +815,7 @@ MPU_uxTimerGetReloadMode:
|
||||||
b MPU_uxTimerGetReloadModeImpl
|
b MPU_uxTimerGetReloadModeImpl
|
||||||
MPU_uxTimerGetReloadMode_Unpriv:
|
MPU_uxTimerGetReloadMode_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxTimerGetReloadMode
|
||||||
bl MPU_uxTimerGetReloadModeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTimerGetPeriod
|
PUBLIC MPU_xTimerGetPeriod
|
||||||
|
@ -997,10 +829,7 @@ MPU_xTimerGetPeriod:
|
||||||
b MPU_xTimerGetPeriodImpl
|
b MPU_xTimerGetPeriodImpl
|
||||||
MPU_xTimerGetPeriod_Unpriv:
|
MPU_xTimerGetPeriod_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTimerGetPeriod
|
||||||
bl MPU_xTimerGetPeriodImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xTimerGetExpiryTime
|
PUBLIC MPU_xTimerGetExpiryTime
|
||||||
|
@ -1014,14 +843,11 @@ MPU_xTimerGetExpiryTime:
|
||||||
b MPU_xTimerGetExpiryTimeImpl
|
b MPU_xTimerGetExpiryTimeImpl
|
||||||
MPU_xTimerGetExpiryTime_Unpriv:
|
MPU_xTimerGetExpiryTime_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xTimerGetExpiryTime
|
||||||
bl MPU_xTimerGetExpiryTimeImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xEventGroupWaitBits
|
PUBLIC MPU_xEventGroupWaitBitsEntry
|
||||||
MPU_xEventGroupWaitBits:
|
MPU_xEventGroupWaitBitsEntry:
|
||||||
push {r0}
|
push {r0}
|
||||||
mrs r0, control
|
mrs r0, control
|
||||||
tst r0, #1
|
tst r0, #1
|
||||||
|
@ -1031,10 +857,7 @@ MPU_xEventGroupWaitBits:
|
||||||
b MPU_xEventGroupWaitBitsImpl
|
b MPU_xEventGroupWaitBitsImpl
|
||||||
MPU_xEventGroupWaitBits_Unpriv:
|
MPU_xEventGroupWaitBits_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER_1
|
svc #SYSTEM_CALL_xEventGroupWaitBits
|
||||||
bl MPU_xEventGroupWaitBitsImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xEventGroupClearBits
|
PUBLIC MPU_xEventGroupClearBits
|
||||||
|
@ -1048,10 +871,7 @@ MPU_xEventGroupClearBits:
|
||||||
b MPU_xEventGroupClearBitsImpl
|
b MPU_xEventGroupClearBitsImpl
|
||||||
MPU_xEventGroupClearBits_Unpriv:
|
MPU_xEventGroupClearBits_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xEventGroupClearBits
|
||||||
bl MPU_xEventGroupClearBitsImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xEventGroupSetBits
|
PUBLIC MPU_xEventGroupSetBits
|
||||||
|
@ -1065,10 +885,7 @@ MPU_xEventGroupSetBits:
|
||||||
b MPU_xEventGroupSetBitsImpl
|
b MPU_xEventGroupSetBitsImpl
|
||||||
MPU_xEventGroupSetBits_Unpriv:
|
MPU_xEventGroupSetBits_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xEventGroupSetBits
|
||||||
bl MPU_xEventGroupSetBitsImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xEventGroupSync
|
PUBLIC MPU_xEventGroupSync
|
||||||
|
@ -1082,10 +899,7 @@ MPU_xEventGroupSync:
|
||||||
b MPU_xEventGroupSyncImpl
|
b MPU_xEventGroupSyncImpl
|
||||||
MPU_xEventGroupSync_Unpriv:
|
MPU_xEventGroupSync_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xEventGroupSync
|
||||||
bl MPU_xEventGroupSyncImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_uxEventGroupGetNumber
|
PUBLIC MPU_uxEventGroupGetNumber
|
||||||
|
@ -1099,10 +913,7 @@ MPU_uxEventGroupGetNumber:
|
||||||
b MPU_uxEventGroupGetNumberImpl
|
b MPU_uxEventGroupGetNumberImpl
|
||||||
MPU_uxEventGroupGetNumber_Unpriv:
|
MPU_uxEventGroupGetNumber_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_uxEventGroupGetNumber
|
||||||
bl MPU_uxEventGroupGetNumberImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_vEventGroupSetNumber
|
PUBLIC MPU_vEventGroupSetNumber
|
||||||
|
@ -1116,10 +927,7 @@ MPU_vEventGroupSetNumber:
|
||||||
b MPU_vEventGroupSetNumberImpl
|
b MPU_vEventGroupSetNumberImpl
|
||||||
MPU_vEventGroupSetNumber_Unpriv:
|
MPU_vEventGroupSetNumber_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_vEventGroupSetNumber
|
||||||
bl MPU_vEventGroupSetNumberImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferSend
|
PUBLIC MPU_xStreamBufferSend
|
||||||
|
@ -1133,10 +941,7 @@ MPU_xStreamBufferSend:
|
||||||
b MPU_xStreamBufferSendImpl
|
b MPU_xStreamBufferSendImpl
|
||||||
MPU_xStreamBufferSend_Unpriv:
|
MPU_xStreamBufferSend_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferSend
|
||||||
bl MPU_xStreamBufferSendImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferReceive
|
PUBLIC MPU_xStreamBufferReceive
|
||||||
|
@ -1150,10 +955,7 @@ MPU_xStreamBufferReceive:
|
||||||
b MPU_xStreamBufferReceiveImpl
|
b MPU_xStreamBufferReceiveImpl
|
||||||
MPU_xStreamBufferReceive_Unpriv:
|
MPU_xStreamBufferReceive_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferReceive
|
||||||
bl MPU_xStreamBufferReceiveImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferIsFull
|
PUBLIC MPU_xStreamBufferIsFull
|
||||||
|
@ -1167,10 +969,7 @@ MPU_xStreamBufferIsFull:
|
||||||
b MPU_xStreamBufferIsFullImpl
|
b MPU_xStreamBufferIsFullImpl
|
||||||
MPU_xStreamBufferIsFull_Unpriv:
|
MPU_xStreamBufferIsFull_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferIsFull
|
||||||
bl MPU_xStreamBufferIsFullImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferIsEmpty
|
PUBLIC MPU_xStreamBufferIsEmpty
|
||||||
|
@ -1184,10 +983,7 @@ MPU_xStreamBufferIsEmpty:
|
||||||
b MPU_xStreamBufferIsEmptyImpl
|
b MPU_xStreamBufferIsEmptyImpl
|
||||||
MPU_xStreamBufferIsEmpty_Unpriv:
|
MPU_xStreamBufferIsEmpty_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferIsEmpty
|
||||||
bl MPU_xStreamBufferIsEmptyImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferSpacesAvailable
|
PUBLIC MPU_xStreamBufferSpacesAvailable
|
||||||
|
@ -1201,10 +997,7 @@ MPU_xStreamBufferSpacesAvailable:
|
||||||
b MPU_xStreamBufferSpacesAvailableImpl
|
b MPU_xStreamBufferSpacesAvailableImpl
|
||||||
MPU_xStreamBufferSpacesAvailable_Unpriv:
|
MPU_xStreamBufferSpacesAvailable_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferSpacesAvailable
|
||||||
bl MPU_xStreamBufferSpacesAvailableImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferBytesAvailable
|
PUBLIC MPU_xStreamBufferBytesAvailable
|
||||||
|
@ -1218,10 +1011,7 @@ MPU_xStreamBufferBytesAvailable:
|
||||||
b MPU_xStreamBufferBytesAvailableImpl
|
b MPU_xStreamBufferBytesAvailableImpl
|
||||||
MPU_xStreamBufferBytesAvailable_Unpriv:
|
MPU_xStreamBufferBytesAvailable_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferBytesAvailable
|
||||||
bl MPU_xStreamBufferBytesAvailableImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferSetTriggerLevel
|
PUBLIC MPU_xStreamBufferSetTriggerLevel
|
||||||
|
@ -1235,10 +1025,7 @@ MPU_xStreamBufferSetTriggerLevel:
|
||||||
b MPU_xStreamBufferSetTriggerLevelImpl
|
b MPU_xStreamBufferSetTriggerLevelImpl
|
||||||
MPU_xStreamBufferSetTriggerLevel_Unpriv:
|
MPU_xStreamBufferSetTriggerLevel_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferSetTriggerLevel
|
||||||
bl MPU_xStreamBufferSetTriggerLevelImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
PUBLIC MPU_xStreamBufferNextMessageLengthBytes
|
PUBLIC MPU_xStreamBufferNextMessageLengthBytes
|
||||||
|
@ -1252,10 +1039,7 @@ MPU_xStreamBufferNextMessageLengthBytes:
|
||||||
b MPU_xStreamBufferNextMessageLengthBytesImpl
|
b MPU_xStreamBufferNextMessageLengthBytesImpl
|
||||||
MPU_xStreamBufferNextMessageLengthBytes_Unpriv:
|
MPU_xStreamBufferNextMessageLengthBytes_Unpriv:
|
||||||
pop {r0}
|
pop {r0}
|
||||||
svc #portSVC_SYSTEM_CALL_ENTER
|
svc #SYSTEM_CALL_xStreamBufferNextMessageLengthBytes
|
||||||
bl MPU_xStreamBufferNextMessageLengthBytesImpl
|
|
||||||
svc #portSVC_SYSTEM_CALL_EXIT
|
|
||||||
bx lr
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/* Default weak implementations in case one is not available from
|
/* Default weak implementations in case one is not available from
|
||||||
|
@ -1461,9 +1245,9 @@ MPU_xTimerIsTimerActiveImpl:
|
||||||
MPU_xTimerGetTimerDaemonTaskHandleImpl:
|
MPU_xTimerGetTimerDaemonTaskHandleImpl:
|
||||||
b MPU_xTimerGetTimerDaemonTaskHandleImpl
|
b MPU_xTimerGetTimerDaemonTaskHandleImpl
|
||||||
|
|
||||||
PUBWEAK MPU_xTimerGenericCommandImpl
|
PUBWEAK MPU_xTimerGenericCommandPrivImpl
|
||||||
MPU_xTimerGenericCommandImpl:
|
MPU_xTimerGenericCommandPrivImpl:
|
||||||
b MPU_xTimerGenericCommandImpl
|
b MPU_xTimerGenericCommandPrivImpl
|
||||||
|
|
||||||
PUBWEAK MPU_pcTimerGetNameImpl
|
PUBWEAK MPU_pcTimerGetNameImpl
|
||||||
MPU_pcTimerGetNameImpl:
|
MPU_pcTimerGetNameImpl:
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
@ -32,6 +32,9 @@ the code is included in C files but excluded by the preprocessor in assembly
|
||||||
files (__ICCARM__ is defined by the IAR C compiler but not by the IAR assembler. */
|
files (__ICCARM__ is defined by the IAR C compiler but not by the IAR assembler. */
|
||||||
#include "FreeRTOSConfig.h"
|
#include "FreeRTOSConfig.h"
|
||||||
|
|
||||||
|
/* System call numbers includes. */
|
||||||
|
#include "mpu_syscall_numbers.h"
|
||||||
|
|
||||||
#ifndef configUSE_MPU_WRAPPERS_V1
|
#ifndef configUSE_MPU_WRAPPERS_V1
|
||||||
#define configUSE_MPU_WRAPPERS_V1 0
|
#define configUSE_MPU_WRAPPERS_V1 0
|
||||||
#endif
|
#endif
|
||||||
|
@ -41,7 +44,6 @@ files (__ICCARM__ is defined by the IAR C compiler but not by the IAR assembler.
|
||||||
EXTERN vPortSVCHandler_C
|
EXTERN vPortSVCHandler_C
|
||||||
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
#if ( ( configENABLE_MPU == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 0 ) )
|
||||||
EXTERN vSystemCallEnter
|
EXTERN vSystemCallEnter
|
||||||
EXTERN vSystemCallEnter_1
|
|
||||||
EXTERN vSystemCallExit
|
EXTERN vSystemCallExit
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -191,7 +193,7 @@ vStartFirstTask:
|
||||||
cpsie f
|
cpsie f
|
||||||
dsb
|
dsb
|
||||||
isb
|
isb
|
||||||
svc 2 /* System call to start the first task. portSVC_START_SCHEDULER = 2. */
|
svc 102 /* System call to start the first task. portSVC_START_SCHEDULER = 102. */
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
ulSetInterruptMask:
|
ulSetInterruptMask:
|
||||||
|
@ -371,11 +373,9 @@ SVC_Handler:
|
||||||
|
|
||||||
ldr r1, [r0, #24]
|
ldr r1, [r0, #24]
|
||||||
ldrb r2, [r1, #-2]
|
ldrb r2, [r1, #-2]
|
||||||
cmp r2, #4 /* portSVC_SYSTEM_CALL_ENTER. */
|
cmp r2, #NUM_SYSTEM_CALLS
|
||||||
beq syscall_enter
|
blt syscall_enter
|
||||||
cmp r2, #5 /* portSVC_SYSTEM_CALL_ENTER_1. */
|
cmp r2, #104 /* portSVC_SYSTEM_CALL_EXIT. */
|
||||||
beq syscall_enter_1
|
|
||||||
cmp r2, #6 /* portSVC_SYSTEM_CALL_EXIT. */
|
|
||||||
beq syscall_exit
|
beq syscall_exit
|
||||||
b vPortSVCHandler_C
|
b vPortSVCHandler_C
|
||||||
|
|
||||||
|
@ -383,10 +383,6 @@ SVC_Handler:
|
||||||
mov r1, lr
|
mov r1, lr
|
||||||
b vSystemCallEnter
|
b vSystemCallEnter
|
||||||
|
|
||||||
syscall_enter_1:
|
|
||||||
mov r1, lr
|
|
||||||
b vSystemCallEnter_1
|
|
||||||
|
|
||||||
syscall_exit:
|
syscall_exit:
|
||||||
mov r1, lr
|
mov r1, lr
|
||||||
b vSystemCallExit
|
b vSystemCallExit
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
@ -287,6 +287,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P
|
||||||
#define portSTACK_FRAME_HAS_PADDING_FLAG ( 1UL << 0UL )
|
#define portSTACK_FRAME_HAS_PADDING_FLAG ( 1UL << 0UL )
|
||||||
#define portTASK_IS_PRIVILEGED_FLAG ( 1UL << 1UL )
|
#define portTASK_IS_PRIVILEGED_FLAG ( 1UL << 1UL )
|
||||||
|
|
||||||
|
/* Size of an Access Control List (ACL) entry in bits. */
|
||||||
|
#define portACL_ENTRY_SIZE_BITS ( 32U )
|
||||||
|
|
||||||
typedef struct MPU_SETTINGS
|
typedef struct MPU_SETTINGS
|
||||||
{
|
{
|
||||||
uint32_t ulMAIR0; /**< MAIR0 for the task containing attributes for all the 4 per task regions. */
|
uint32_t ulMAIR0; /**< MAIR0 for the task containing attributes for all the 4 per task regions. */
|
||||||
|
@ -296,6 +299,9 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P
|
||||||
|
|
||||||
#if ( configUSE_MPU_WRAPPERS_V1 == 0 )
|
#if ( configUSE_MPU_WRAPPERS_V1 == 0 )
|
||||||
xSYSTEM_CALL_STACK_INFO xSystemCallStackInfo;
|
xSYSTEM_CALL_STACK_INFO xSystemCallStackInfo;
|
||||||
|
#if ( configENABLE_ACCESS_CONTROL_LIST == 1 )
|
||||||
|
uint32_t ulAccessControlList[ ( configPROTECTED_KERNEL_OBJECT_POOL_SIZE / portACL_ENTRY_SIZE_BITS ) + 1 ];
|
||||||
|
#endif
|
||||||
#endif
|
#endif
|
||||||
} xMPU_SETTINGS;
|
} xMPU_SETTINGS;
|
||||||
|
|
||||||
|
@ -316,13 +322,12 @@ extern void vClearInterruptMask( uint32_t ulMask ) /* __attribute__(( naked )) P
|
||||||
/**
|
/**
|
||||||
* @brief SVC numbers.
|
* @brief SVC numbers.
|
||||||
*/
|
*/
|
||||||
#define portSVC_ALLOCATE_SECURE_CONTEXT 0
|
#define portSVC_ALLOCATE_SECURE_CONTEXT 100
|
||||||
#define portSVC_FREE_SECURE_CONTEXT 1
|
#define portSVC_FREE_SECURE_CONTEXT 101
|
||||||
#define portSVC_START_SCHEDULER 2
|
#define portSVC_START_SCHEDULER 102
|
||||||
#define portSVC_RAISE_PRIVILEGE 3
|
#define portSVC_RAISE_PRIVILEGE 103
|
||||||
#define portSVC_SYSTEM_CALL_ENTER 4 /* System calls with upto 4 parameters. */
|
#define portSVC_SYSTEM_CALL_EXIT 104
|
||||||
#define portSVC_SYSTEM_CALL_ENTER_1 5 /* System calls with 5 parameters. */
|
#define portSVC_YIELD 105
|
||||||
#define portSVC_SYSTEM_CALL_EXIT 6
|
|
||||||
/*-----------------------------------------------------------*/
|
/*-----------------------------------------------------------*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
;/*
|
;/*
|
||||||
; * FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
; * FreeRTOS Kernel V10.6.2
|
||||||
; * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
; * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
; *
|
; *
|
||||||
; * SPDX-License-Identifier: MIT
|
; * SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
;/*
|
;/*
|
||||||
; * FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
; * FreeRTOS Kernel V10.6.2
|
||||||
; * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
; * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
; *
|
; *
|
||||||
; * SPDX-License-Identifier: MIT
|
; * SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
;/*
|
;/*
|
||||||
; * FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
; * FreeRTOS Kernel V10.6.2
|
||||||
; * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
; * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
; *
|
; *
|
||||||
; * SPDX-License-Identifier: MIT
|
; * SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
;/*
|
;/*
|
||||||
; * FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
; * FreeRTOS Kernel V10.6.2
|
||||||
; * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
; * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
; *
|
; *
|
||||||
; * SPDX-License-Identifier: MIT
|
; * SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
;/*
|
;/*
|
||||||
; * FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
; * FreeRTOS Kernel V10.6.2
|
||||||
; * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
; * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
; *
|
; *
|
||||||
; * SPDX-License-Identifier: MIT
|
; * SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* FreeRTOS Kernel <DEVELOPMENT BRANCH>
|
* FreeRTOS Kernel V10.6.2
|
||||||
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
* Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
||||||
*
|
*
|
||||||
* SPDX-License-Identifier: MIT
|
* SPDX-License-Identifier: MIT
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue