Compare commits
93 Commits
collab-ini
...
v3.4-branc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0848eb2f96 | ||
|
|
76b03fe477 | ||
|
|
4826bc1529 | ||
|
|
291cef7f4e | ||
|
|
0e631b2b93 | ||
|
|
339194de6e | ||
|
|
0c70910146 | ||
|
|
7215f3612f | ||
|
|
955db4508d | ||
|
|
5e05c01578 | ||
|
|
d252cc0d05 | ||
|
|
b194315b40 | ||
|
|
38e55542c9 | ||
|
|
45203b5c20 | ||
|
|
9242edc16b | ||
|
|
b3fd79ab76 | ||
|
|
45ca28861c | ||
|
|
2c33f9553a | ||
|
|
01714076df | ||
|
|
cd90d5ab23 | ||
|
|
d1c7254934 | ||
|
|
42689f5aa2 | ||
|
|
9a6e87a1c0 | ||
|
|
81cae389b1 | ||
|
|
e587ebc3ee | ||
|
|
87d5e0d6cf | ||
|
|
156bf29c19 | ||
|
|
520d381585 | ||
|
|
9f44a5b76a | ||
|
|
6b926bba95 | ||
|
|
0ec96750b6 | ||
|
|
daca8f8399 | ||
|
|
a287c88326 | ||
|
|
2d3e58bb3e | ||
|
|
97a952610d | ||
|
|
3e75c22183 | ||
|
|
2dfd91b0e8 | ||
|
|
eac490eb69 | ||
|
|
b68afbdcd4 | ||
|
|
3c089f70c6 | ||
|
|
8d5fc007e4 | ||
|
|
8a703c60be | ||
|
|
60f3cd85b4 | ||
|
|
1f3dbc41ab | ||
|
|
e30da2bd70 | ||
|
|
4852b8134f | ||
|
|
7e02104799 | ||
|
|
535fba08cf | ||
|
|
1c75a08301 | ||
|
|
d762e439f1 | ||
|
|
589aa11784 | ||
|
|
3ca90e5438 | ||
|
|
42af315397 | ||
|
|
60634902e0 | ||
|
|
5e02c0bd6a | ||
|
|
0b4cd70e5b | ||
|
|
06ca73dcc6 | ||
|
|
d74d32f644 | ||
|
|
af96ed2ddf | ||
|
|
1e2850de1c | ||
|
|
687f539b67 | ||
|
|
7f4c587b3b | ||
|
|
422a3d8b4f | ||
|
|
61824410a9 | ||
|
|
0cc164e5b9 | ||
|
|
1611b4c703 | ||
|
|
8e62e701aa | ||
|
|
1c9b37ade1 | ||
|
|
119253c138 | ||
|
|
67ce39b98d | ||
|
|
22813dda0f | ||
|
|
05c79b7801 | ||
|
|
85788d2ce3 | ||
|
|
5952c2275e | ||
|
|
f6e73ae3c6 | ||
|
|
bd741f2f01 | ||
|
|
b5e0af779e | ||
|
|
aa3f810bb9 | ||
|
|
758ee69c95 | ||
|
|
8005c9079b | ||
|
|
3f3051e9f8 | ||
|
|
c228ef08e7 | ||
|
|
5c04a62d1a | ||
|
|
1f0ec0ddf6 | ||
|
|
4a02f2965c | ||
|
|
eb452c1950 | ||
|
|
4254d9cb68 | ||
|
|
8ff61ee596 | ||
|
|
6f38106a23 | ||
|
|
8cc193d6f1 | ||
|
|
79eaaae5ea | ||
|
|
88ceaa6826 | ||
|
|
719dc245ef |
19
.github/ISSUE_TEMPLATE/005_hardware_support.md
vendored
Normal file
19
.github/ISSUE_TEMPLATE/005_hardware_support.md
vendored
Normal file
@@ -0,0 +1,19 @@
|
||||
---
|
||||
name: Hardware Support
|
||||
about: Suggest adding hardware support
|
||||
title: ''
|
||||
labels: Hardware Support
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Is this request related to a missing driver support for a particular hardware platform, SoC or board? Please describe.**
|
||||
Describe in details the hardware support being requested and why this support benefits Zephyr.
|
||||
|
||||
**Describe why you are asking for this support?**
|
||||
Describe why you are asking for this support instead of contributing it directly to the tree
|
||||
|
||||
If this is a new board or SoC, please state whether you are willing to maintain the Zephyr support for it if it is included in the main tree
|
||||
|
||||
**Additional context**
|
||||
Add any other context or graphics (drag-and-drop an image) about the hardware here.
|
||||
27
.github/workflows/assigner.yml
vendored
27
.github/workflows/assigner.yml
vendored
@@ -10,9 +10,6 @@ on:
|
||||
branches:
|
||||
- main
|
||||
- v*-branch
|
||||
issues:
|
||||
types:
|
||||
- labeled
|
||||
|
||||
jobs:
|
||||
assignment:
|
||||
@@ -24,7 +21,7 @@ jobs:
|
||||
- name: Install Python dependencies
|
||||
run: |
|
||||
sudo pip3 install -U setuptools wheel pip
|
||||
pip3 install -U PyGithub>=1.55 west
|
||||
pip3 install -U PyGithub>=1.55
|
||||
|
||||
- name: Check out source code
|
||||
uses: actions/checkout@v3
|
||||
@@ -33,19 +30,9 @@ jobs:
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.ZB_GITHUB_TOKEN }}
|
||||
run: |
|
||||
FLAGS="-v"
|
||||
FLAGS+=" -o ${{ github.event.repository.owner.login }}"
|
||||
FLAGS+=" -r ${{ github.event.repository.name }}"
|
||||
FLAGS+=" -M MAINTAINERS.yml"
|
||||
if [ "${{ github.event_name }}" = "pull_request_target" ]; then
|
||||
FLAGS+=" -P ${{ github.event.pull_request.number }}"
|
||||
elif [ "${{ github.event_name }}" = "issues" ]; then
|
||||
FLAGS+=" -I ${{ github.event.issue.number }}"
|
||||
elif [ "${{ github.event_name }}" = "schedule" ]; then
|
||||
FLAGS+=" --modules"
|
||||
else
|
||||
echo "Unknown event: ${{ github.event_name }}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
python3 scripts/set_assignees.py $FLAGS
|
||||
python3 scripts/set_assignees.py \
|
||||
-v \
|
||||
-o ${{ github.event.repository.owner.login }} \
|
||||
-r ${{ github.event.repository.name }} \
|
||||
-M MAINTAINERS.yml \
|
||||
-P ${{ github.event.pull_request.number }}
|
||||
|
||||
99
.github/workflows/blackbox_tests.yml
vendored
99
.github/workflows/blackbox_tests.yml
vendored
@@ -1,99 +0,0 @@
|
||||
# Copyright (c) 2023 Intel Corporation.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
name: Twister BlackBox TestSuite
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- 'scripts/pylib/twister/**'
|
||||
- 'scripts/twister'
|
||||
- 'scripts/tests/twister_blackbox/**'
|
||||
- '.github/workflows/blackbox_tests.yml'
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- 'scripts/pylib/twister/**'
|
||||
- 'scripts/twister'
|
||||
- 'scripts/tests/twister_blackbox/**'
|
||||
- '.github/workflows/blackbox_tests.yml'
|
||||
|
||||
jobs:
|
||||
twister-tests:
|
||||
name: Twister Black Box Tests
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
python-version: [3.8, 3.9, '3.10']
|
||||
os: [ubuntu-22.04]
|
||||
container:
|
||||
image: ghcr.io/zephyrproject-rtos/ci:v0.26.4
|
||||
env:
|
||||
ZEPHYR_SDK_INSTALL_DIR: /opt/toolchains/zephyr-sdk-0.16.1
|
||||
|
||||
steps:
|
||||
- name: Apply Container Owner Mismatch Workaround
|
||||
run: |
|
||||
# FIXME: The owner UID of the GITHUB_WORKSPACE directory may not
|
||||
# match the container user UID because of the way GitHub
|
||||
# Actions runner is implemented. Remove this workaround when
|
||||
# GitHub comes up with a fundamental fix for this problem.
|
||||
git config --global --add safe.directory ${GITHUB_WORKSPACE}
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Environment Setup
|
||||
run: |
|
||||
echo "$HOME/.local/bin" >> $GITHUB_PATH
|
||||
|
||||
west init -l . || true
|
||||
west config --global update.narrow true
|
||||
west update --path-cache /github/cache/zephyrproject 2>&1 1> west.update.log || west update --path-cache /github/cache/zephyrproject 2>&1 1> west.update.log || ( rm -rf ../modules ../bootloader ../tools && west update --path-cache /github/cache/zephyrproject)
|
||||
west forall -c 'git reset --hard HEAD'
|
||||
|
||||
- name: Set Up Python ${{ matrix.python-version }}
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
|
||||
- name: Go Into Venv
|
||||
shell: bash
|
||||
run: |
|
||||
python3 -m pip install --user virtualenv
|
||||
python3 -m venv env
|
||||
source env/bin/activate
|
||||
echo "$(which python)"
|
||||
|
||||
- name: Install Packages
|
||||
run: |
|
||||
python3 -m pip install -U -r scripts/requirements-base.txt -r scripts/requirements-build-test.txt -r scripts/requirements-run-test.txt
|
||||
|
||||
- name: Run Pytest For Twister Black Box Tests
|
||||
shell: bash
|
||||
env:
|
||||
ZEPHYR_BASE: ./
|
||||
ZEPHYR_TOOLCHAIN_VARIANT: zephyr
|
||||
run: |
|
||||
echo "Run twister tests"
|
||||
source zephyr-env.sh
|
||||
PYTHONPATH="./scripts/tests" pytest ./scripts/tests/twister_blackbox
|
||||
|
||||
- name: Upload Unit Test Results
|
||||
if: success() || failure()
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: Black Box Test Results (Python ${{ matrix.python-version }})
|
||||
path: |
|
||||
twister-out*/twister.log
|
||||
twister-out*/twister.json
|
||||
twister-out*/testplan.log
|
||||
retention-days: 14
|
||||
|
||||
- name: Clear Workspace
|
||||
if: success() || failure()
|
||||
run: |
|
||||
rm -rf twister-out*/
|
||||
8
.github/workflows/bsim-tests.yaml
vendored
8
.github/workflows/bsim-tests.yaml
vendored
@@ -12,8 +12,6 @@ on:
|
||||
- "boards/posix/**"
|
||||
- "soc/posix/**"
|
||||
- "arch/posix/**"
|
||||
- "include/zephyr/arch/posix/**"
|
||||
- "scripts/native_simulator/**"
|
||||
- "samples/net/sockets/echo_*/**"
|
||||
- "modules/openthread/**"
|
||||
- "subsys/net/l2/openthread/**"
|
||||
@@ -88,8 +86,6 @@ jobs:
|
||||
boards/posix/**
|
||||
soc/posix/**
|
||||
arch/posix/**
|
||||
include/zephyr/arch/posix/**
|
||||
scripts/native_simulator/**
|
||||
tests/bsim/*
|
||||
|
||||
- name: Check if Bluethooth files changed
|
||||
@@ -133,7 +129,7 @@ jobs:
|
||||
if: steps.check-bluetooth-files.outputs.any_changed == 'true' || steps.check-common-files.outputs.any_changed == 'true'
|
||||
run: |
|
||||
export ZEPHYR_BASE=${PWD}
|
||||
WORK_DIR=${ZEPHYR_BASE}/bsim_bluetooth nice tests/bsim/bluetooth/compile.sh
|
||||
WORK_DIR=${ZEPHYR_BASE}/bsim_bluetooth tests/bsim/bluetooth/compile.sh
|
||||
RESULTS_FILE=${ZEPHYR_BASE}/${bsim_bluetooth_test_results_file} \
|
||||
SEARCH_PATH=tests/bsim/bluetooth/ tests/bsim/run_parallel.sh
|
||||
|
||||
@@ -141,7 +137,7 @@ jobs:
|
||||
if: steps.check-networking-files.outputs.any_changed == 'true' || steps.check-common-files.outputs.any_changed == 'true'
|
||||
run: |
|
||||
export ZEPHYR_BASE=${PWD}
|
||||
WORK_DIR=${ZEPHYR_BASE}/bsim_net nice tests/bsim/net/compile.sh
|
||||
WORK_DIR=${ZEPHYR_BASE}/bsim_net tests/bsim/net/compile.sh
|
||||
RESULTS_FILE=${ZEPHYR_BASE}/${bsim_networking_test_results_file} \
|
||||
SEARCH_PATH=tests/bsim/net/ tests/bsim/run_parallel.sh
|
||||
|
||||
|
||||
25
.github/workflows/doc-build.yml
vendored
25
.github/workflows/doc-build.yml
vendored
@@ -22,7 +22,7 @@ on:
|
||||
- 'west.yml'
|
||||
- '.github/workflows/doc-build.yml'
|
||||
- 'scripts/dts/**'
|
||||
- 'doc/requirements.txt'
|
||||
- 'scripts/requirements-doc.txt'
|
||||
|
||||
env:
|
||||
# NOTE: west docstrings will be extracted from the version listed here
|
||||
@@ -35,7 +35,7 @@ env:
|
||||
jobs:
|
||||
doc-build-html:
|
||||
name: "Documentation Build (HTML)"
|
||||
runs-on: zephyr-runner-linux-x64-4xlarge
|
||||
runs-on: ubuntu-22.04
|
||||
timeout-minutes: 45
|
||||
concurrency:
|
||||
group: doc-build-html-${{ github.ref }}
|
||||
@@ -57,12 +57,12 @@ jobs:
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ~/.cache/pip
|
||||
key: pip-${{ hashFiles('doc/requirements.txt') }}
|
||||
key: pip-${{ hashFiles('scripts/requirements-doc.txt') }}
|
||||
|
||||
- name: install-pip
|
||||
run: |
|
||||
sudo pip3 install -U setuptools wheel pip
|
||||
pip3 install -r doc/requirements.txt
|
||||
pip3 install -r scripts/requirements-doc.txt
|
||||
pip3 install west==${WEST_VERSION}
|
||||
pip3 install cmake==${CMAKE_VERSION}
|
||||
|
||||
@@ -71,7 +71,6 @@ jobs:
|
||||
west init -l .
|
||||
|
||||
- name: build-docs
|
||||
shell: bash
|
||||
run: |
|
||||
if [[ "$GITHUB_REF" =~ "refs/tags/v" ]]; then
|
||||
DOC_TAG="release"
|
||||
@@ -85,7 +84,7 @@ jobs:
|
||||
DOC_TARGET="html"
|
||||
fi
|
||||
|
||||
DOC_TAG=${DOC_TAG} SPHINXOPTS_EXTRA="-q -t publish" make -C doc ${DOC_TARGET}
|
||||
DOC_TAG=${DOC_TAG} SPHINXOPTS="-q -W -t publish" make -C doc ${DOC_TARGET}
|
||||
|
||||
- name: compress-docs
|
||||
run: |
|
||||
@@ -117,7 +116,7 @@ jobs:
|
||||
doc-build-pdf:
|
||||
name: "Documentation Build (PDF)"
|
||||
if: github.event_name != 'pull_request'
|
||||
runs-on: zephyr-runner-linux-x64-4xlarge
|
||||
runs-on: ubuntu-22.04
|
||||
container: texlive/texlive:latest
|
||||
timeout-minutes: 60
|
||||
concurrency:
|
||||
@@ -137,7 +136,7 @@ jobs:
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ~/.cache/pip
|
||||
key: pip-${{ hashFiles('doc/requirements.txt') }}
|
||||
key: pip-${{ hashFiles('scripts/requirements-doc.txt') }}
|
||||
|
||||
- name: setup-venv
|
||||
run: |
|
||||
@@ -148,7 +147,7 @@ jobs:
|
||||
- name: install-pip
|
||||
run: |
|
||||
pip3 install -U setuptools wheel pip
|
||||
pip3 install -r doc/requirements.txt
|
||||
pip3 install -r scripts/requirements-doc.txt
|
||||
pip3 install west==${WEST_VERSION}
|
||||
pip3 install cmake==${CMAKE_VERSION}
|
||||
|
||||
@@ -157,8 +156,6 @@ jobs:
|
||||
west init -l .
|
||||
|
||||
- name: build-docs
|
||||
shell: bash
|
||||
continue-on-error: true
|
||||
run: |
|
||||
if [[ "$GITHUB_REF" =~ "refs/tags/v" ]]; then
|
||||
DOC_TAG="release"
|
||||
@@ -169,11 +166,7 @@ jobs:
|
||||
DOC_TAG=${DOC_TAG} SPHINXOPTS="-q -j auto" LATEXMKOPTS="-quiet -halt-on-error" make -C doc pdf
|
||||
|
||||
- name: upload-build
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: pdf-output
|
||||
if-no-files-found: ignore
|
||||
path: |
|
||||
doc/_build/latex/zephyr.pdf
|
||||
doc/_build/latex/zephyr.log
|
||||
path: doc/_build/latex/zephyr.pdf
|
||||
|
||||
@@ -9,11 +9,9 @@ on:
|
||||
jobs:
|
||||
check_for_first_interaction:
|
||||
runs-on: ubuntu-22.04
|
||||
if: github.repository == 'zephyrproject-rtos/zephyr'
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: zephyrproject-rtos/action-first-interaction@v1.1.1-zephyr-4
|
||||
- uses: zephyrproject-rtos/action-first-interaction@v1.1.1-zephyr-3
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
|
||||
2
.github/workflows/license_check.yml
vendored
2
.github/workflows/license_check.yml
vendored
@@ -8,7 +8,7 @@ jobs:
|
||||
name: Scan code for licenses
|
||||
steps:
|
||||
- name: Checkout the code
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v1
|
||||
- name: Scan the code
|
||||
id: scancode
|
||||
uses: zephyrproject-rtos/action_scancode@v4
|
||||
|
||||
13
.github/workflows/manifest.yml
vendored
13
.github/workflows/manifest.yml
vendored
@@ -15,23 +15,12 @@ jobs:
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
|
||||
- name: west setup
|
||||
env:
|
||||
BASE_REF: ${{ github.base_ref }}
|
||||
working-directory: zephyrproject/zephyr
|
||||
run: |
|
||||
pip3 install west
|
||||
git config --global user.email "you@example.com"
|
||||
git config --global user.name "Your Name"
|
||||
west init -l . || true
|
||||
|
||||
- name: Manifest
|
||||
uses: zephyrproject-rtos/action-manifest@f223dce288b0d8f30bfd57eb2b14b18c230a7d8b
|
||||
uses: zephyrproject-rtos/action-manifest@a6d0c6e52bbbb7d6df23ceb42842edcb4582b8dc
|
||||
with:
|
||||
github-token: ${{ secrets.ZB_GITHUB_TOKEN }}
|
||||
manifest-path: 'west.yml'
|
||||
checkout-path: 'zephyrproject/zephyr'
|
||||
use-tree-checkout: 'true'
|
||||
label-prefix: 'manifest-'
|
||||
verbosity-level: '1'
|
||||
labels: 'manifest'
|
||||
|
||||
2
.github/workflows/west_cmds.yml
vendored
2
.github/workflows/west_cmds.yml
vendored
@@ -69,7 +69,7 @@ jobs:
|
||||
- name: install pytest
|
||||
run: |
|
||||
pip3 install wheel
|
||||
pip3 install pytest west pyelftools canopen natsort progress mypy intelhex psutil ply pyserial
|
||||
pip3 install pytest west pyelftools canopen progress mypy intelhex psutil ply pyserial
|
||||
- name: run pytest-win
|
||||
if: runner.os == 'Windows'
|
||||
run: |
|
||||
|
||||
2
.gitignore
vendored
2
.gitignore
vendored
@@ -75,9 +75,7 @@ Identity.txt
|
||||
ImageSize.txt
|
||||
Kconfig.txt
|
||||
KconfigBasic.txt
|
||||
KconfigBasicNoModules.txt
|
||||
MaintainersFormat.txt
|
||||
ModulesMaintainers.txt
|
||||
Nits.txt
|
||||
Pylint.txt
|
||||
YAMLLint.txt
|
||||
|
||||
9
.gitlint
9
.gitlint
@@ -1,5 +1,4 @@
|
||||
# All these sections are optional, edit this file as you like.
|
||||
# Zephyr-specific defaults are located in scripts/gitlint/zephyr_commit_rules.py
|
||||
[general]
|
||||
ignore=title-trailing-punctuation, T3, title-max-length, T1, body-hard-tab, B3, B1
|
||||
# verbosity should be a value between 1 and 3, the commandline -v flags take precedence over this
|
||||
@@ -17,13 +16,13 @@ debug = false
|
||||
extra-path=scripts/gitlint
|
||||
|
||||
[title-max-length-no-revert]
|
||||
# line-length=75
|
||||
line-length=75
|
||||
|
||||
[body-min-line-count]
|
||||
# min-line-count=1
|
||||
min-line-count=1
|
||||
|
||||
[body-max-line-count]
|
||||
# max-line-count=200
|
||||
max-line-count=200
|
||||
|
||||
[title-starts-with-subsystem]
|
||||
regex = ^(?!subsys:)(([^:]+):)(\s([^:]+):)*\s(.+)$
|
||||
@@ -43,7 +42,7 @@ words=wip
|
||||
|
||||
[max-line-length-with-exceptions]
|
||||
# B1 = body-max-line-length
|
||||
# line-length=75
|
||||
line-length=75
|
||||
|
||||
[body-min-length]
|
||||
min-length=3
|
||||
|
||||
140
CMakeLists.txt
140
CMakeLists.txt
@@ -54,7 +54,7 @@ set(CMAKE_EXECUTABLE_SUFFIX .elf)
|
||||
# into the `zephyr_final` target.
|
||||
#
|
||||
# Multiple linking stages are required in the following cases:
|
||||
# - device dependencies structs must be generated (CONFIG_DEVICE_DEPS=y)
|
||||
# - device handles structs must be generated (CONFIG_HAS_DTS=y)
|
||||
# - ISR tables must be generated (CONFIG_GEN_ISR_TABLES=y)
|
||||
# - Kernel objects hash tables (CONFIG_USERSPACE=y)
|
||||
# - Application memory partitions (CONFIG_USERSPACE=y)
|
||||
@@ -75,7 +75,7 @@ set(ZEPHYR_LINK_STAGE_EXECUTABLE zephyr_pre${ZEPHYR_CURRENT_LINKER_PASS})
|
||||
# existing variable to allow slowly cleanup of linking stage handling.
|
||||
# Three stage linking active: pre0 -> pre1 -> final, this will correspond to `pre1`
|
||||
# Two stage linking active: pre0 -> final, this will correspond to `pre0`
|
||||
if(CONFIG_USERSPACE OR CONFIG_DEVICE_DEPS)
|
||||
if(CONFIG_USERSPACE OR CONFIG_HAS_DTS)
|
||||
set(ZEPHYR_PREBUILT_EXECUTABLE zephyr_pre1)
|
||||
else()
|
||||
set(ZEPHYR_PREBUILT_EXECUTABLE zephyr_pre0)
|
||||
@@ -92,11 +92,6 @@ set(PARSE_SYSCALLS_TARGET parse_syscalls_target)
|
||||
define_property(GLOBAL PROPERTY PROPERTY_OUTPUT_FORMAT BRIEF_DOCS " " FULL_DOCS " ")
|
||||
set_property( GLOBAL PROPERTY PROPERTY_OUTPUT_FORMAT elf32-little${ARCH}) # BFD format
|
||||
|
||||
# Contains the list of files with syscall function prototypes.
|
||||
add_library(syscalls_interface INTERFACE)
|
||||
set(syscalls_file_list_output
|
||||
${CMAKE_CURRENT_BINARY_DIR}/misc/generated/syscalls_file_list.txt)
|
||||
|
||||
# "zephyr_interface" is a source-less library that encapsulates all the global
|
||||
# compiler options needed by all source files. All zephyr libraries,
|
||||
# including the library named "zephyr" link with this library to
|
||||
@@ -346,12 +341,12 @@ toolchain_ld_force_undefined_symbols(
|
||||
_ConfigAbsSyms
|
||||
)
|
||||
|
||||
if(NOT CONFIG_NATIVE_BUILD)
|
||||
if(NOT CONFIG_NATIVE_APPLICATION)
|
||||
# @Intent: Set linker specific flags for bare metal target
|
||||
toolchain_ld_baremetal()
|
||||
endif()
|
||||
|
||||
if(CONFIG_CPP AND NOT CONFIG_MINIMAL_LIBCPP AND NOT CONFIG_NATIVE_LIBRARY)
|
||||
if(CONFIG_CPP AND NOT CONFIG_MINIMAL_LIBCPP)
|
||||
# @Intent: Set linker specific flags for C++
|
||||
toolchain_ld_cpp()
|
||||
endif()
|
||||
@@ -394,12 +389,7 @@ zephyr_compile_options($<$<COMPILE_LANGUAGE:CXX>:$<TARGET_PROPERTY:compiler-cpp,
|
||||
# @Intent: Do not make position independent code / executable
|
||||
zephyr_compile_options($<$<COMPILE_LANGUAGE:C>:$<TARGET_PROPERTY:compiler,no_position_independent>>)
|
||||
zephyr_compile_options($<$<COMPILE_LANGUAGE:CXX>:$<TARGET_PROPERTY:compiler,no_position_independent>>)
|
||||
|
||||
# In case of CONFIG_NATIVE_LIBRARY we also don't want position independent code,
|
||||
# but we cannot tell that to the linker yet as we are first only doing a
|
||||
# relocatable link into a static library
|
||||
zephyr_link_libraries_ifndef(CONFIG_NATIVE_LIBRARY
|
||||
$<TARGET_PROPERTY:linker,no_position_independent>)
|
||||
zephyr_link_libraries($<TARGET_PROPERTY:linker,no_position_independent>)
|
||||
|
||||
# Allow the user to inject options when calling cmake, e.g.
|
||||
# 'cmake -DEXTRA_CFLAGS="-Werror -Wno-deprecated-declarations" ..'
|
||||
@@ -485,9 +475,8 @@ if(CONFIG_USERSPACE)
|
||||
endif()
|
||||
|
||||
get_property(TOPT GLOBAL PROPERTY TOPT)
|
||||
get_property(COMPILER_TOPT TARGET compiler PROPERTY linker_script)
|
||||
set_ifndef( TOPT "${COMPILER_TOPT}")
|
||||
set_ifndef( TOPT -Wl,-T) # Use this if the compiler driver doesn't set a value
|
||||
set_ifndef( TOPT -Wl,-T) # clang doesn't pick -T for some reason and complains,
|
||||
# while -Wl,-T works for both, gcc and clang
|
||||
|
||||
if(CONFIG_HAVE_CUSTOM_LINKER_SCRIPT)
|
||||
set(LINKER_SCRIPT ${APPLICATION_SOURCE_DIR}/${CONFIG_CUSTOM_LINKER_SCRIPT})
|
||||
@@ -557,7 +546,6 @@ add_custom_command(
|
||||
-DOUT_FILE=${PROJECT_BINARY_DIR}/include/generated/version.h
|
||||
-DVERSION_TYPE=KERNEL
|
||||
-DVERSION_FILE=${ZEPHYR_BASE}/VERSION
|
||||
-DKERNEL_VERSION_CUSTOMIZATION="${KERNEL_VERSION_CUSTOMIZATION}"
|
||||
${build_version_argument}
|
||||
-P ${ZEPHYR_BASE}/cmake/gen_version_h.cmake
|
||||
DEPENDS ${ZEPHYR_BASE}/VERSION ${git_dependency}
|
||||
@@ -571,7 +559,6 @@ if(EXISTS ${APPLICATION_SOURCE_DIR}/VERSION)
|
||||
-DOUT_FILE=${PROJECT_BINARY_DIR}/include/generated/app_version.h
|
||||
-DVERSION_TYPE=APP
|
||||
-DVERSION_FILE=${APPLICATION_SOURCE_DIR}/VERSION
|
||||
-DAPP_VERSION_CUSTOMIZATION="${APP_VERSION_CUSTOMIZATION}"
|
||||
${build_version_argument}
|
||||
-P ${ZEPHYR_BASE}/cmake/gen_version_h.cmake
|
||||
DEPENDS ${APPLICATION_SOURCE_DIR}/VERSION ${git_dependency}
|
||||
@@ -603,7 +590,12 @@ add_subdirectory(lib)
|
||||
# property which is set implicitly for custom command outputs
|
||||
include(misc/generated/CMakeLists.txt)
|
||||
|
||||
add_subdirectory(soc)
|
||||
if(EXISTS ${SOC_DIR}/${ARCH}/CMakeLists.txt)
|
||||
add_subdirectory(${SOC_DIR}/${ARCH} soc/${ARCH})
|
||||
else()
|
||||
add_subdirectory(${SOC_DIR}/${ARCH}/${SOC_PATH} soc/${ARCH}/${SOC_PATH})
|
||||
endif()
|
||||
|
||||
add_subdirectory(boards)
|
||||
add_subdirectory(subsys)
|
||||
add_subdirectory(drivers)
|
||||
@@ -736,16 +728,13 @@ add_custom_command(
|
||||
COMMAND
|
||||
${PYTHON_EXECUTABLE}
|
||||
${ZEPHYR_BASE}/scripts/build/parse_syscalls.py
|
||||
--scan ${ZEPHYR_BASE}/include # Read files from this dir
|
||||
--scan ${ZEPHYR_BASE}/drivers # For net sockets
|
||||
--scan ${ZEPHYR_BASE}/subsys/net # More net sockets
|
||||
--include ${ZEPHYR_BASE}/include # Read files from this dir
|
||||
--include ${ZEPHYR_BASE}/drivers # For net sockets
|
||||
--include ${ZEPHYR_BASE}/subsys/net # More net sockets
|
||||
${parse_syscalls_include_args} # Read files from these dirs also
|
||||
--json-file ${syscalls_json} # Write this file
|
||||
--tag-struct-file ${struct_tags_json} # Write subsystem list to this file
|
||||
--file-list ${syscalls_file_list_output}
|
||||
$<$<BOOL:${CONFIG_EMIT_ALL_SYSCALLS}>:--emit-all-syscalls>
|
||||
DEPENDS ${syscalls_subdirs_trigger} ${PARSE_SYSCALLS_HEADER_DEPENDS}
|
||||
${syscalls_file_list_output} ${syscalls_interface}
|
||||
)
|
||||
|
||||
# Make sure Picolibc is built before the rest of the system; there's no explicit
|
||||
@@ -861,14 +850,6 @@ zephyr_get_include_directories_for_lang(C ZEPHYR_INCLUDES)
|
||||
|
||||
add_subdirectory(kernel)
|
||||
|
||||
get_property(
|
||||
syscalls_file_list
|
||||
TARGET syscalls_interface
|
||||
PROPERTY INTERFACE_INCLUDE_DIRECTORIES
|
||||
)
|
||||
file(CONFIGURE OUTPUT ${syscalls_file_list_output}
|
||||
CONTENT "@syscalls_file_list@" @ONLY)
|
||||
|
||||
# Read list content
|
||||
get_property(ZEPHYR_LIBS_PROPERTY GLOBAL PROPERTY ZEPHYR_LIBS)
|
||||
|
||||
@@ -915,9 +896,9 @@ zephyr_get_include_directories_for_lang(C
|
||||
STRIP_PREFIX # Don't use a -I prefix
|
||||
)
|
||||
|
||||
if(CONFIG_DEVICE_DEPS)
|
||||
if(CONFIG_DEVICE_DEPS_DYNAMIC)
|
||||
set(dynamic_deps --dynamic-deps)
|
||||
if(CONFIG_HAS_DTS)
|
||||
if(CONFIG_HAS_DYNAMIC_DEVICE_HANDLES)
|
||||
set(dynamic_handles --dynamic-handles)
|
||||
endif()
|
||||
|
||||
if(CONFIG_PM_DEVICE_POWER_DOMAIN_DYNAMIC)
|
||||
@@ -926,16 +907,16 @@ if(CONFIG_DEVICE_DEPS)
|
||||
set(number_of_dynamic_devices 0)
|
||||
endif()
|
||||
|
||||
# device_deps.c is generated from ${ZEPHYR_LINK_STAGE_EXECUTABLE} by
|
||||
# gen_device_deps.py
|
||||
# dev_handles.c is generated from ${ZEPHYR_LINK_STAGE_EXECUTABLE} by
|
||||
# gen_handles.py
|
||||
add_custom_command(
|
||||
OUTPUT device_deps.c
|
||||
OUTPUT dev_handles.c
|
||||
COMMAND
|
||||
${PYTHON_EXECUTABLE}
|
||||
${ZEPHYR_BASE}/scripts/build/gen_device_deps.py
|
||||
--output-source device_deps.c
|
||||
${ZEPHYR_BASE}/scripts/build/gen_handles.py
|
||||
--output-source dev_handles.c
|
||||
--output-graphviz dev_graph.dot
|
||||
${dynamic_deps}
|
||||
${dynamic_handles}
|
||||
--num-dynamic-devices ${number_of_dynamic_devices}
|
||||
--kernel $<TARGET_FILE:${ZEPHYR_LINK_STAGE_EXECUTABLE}>
|
||||
--zephyr-base ${ZEPHYR_BASE}
|
||||
@@ -943,10 +924,10 @@ if(CONFIG_DEVICE_DEPS)
|
||||
VERBATIM
|
||||
DEPENDS ${ZEPHYR_LINK_STAGE_EXECUTABLE}
|
||||
)
|
||||
set_property(GLOBAL APPEND PROPERTY GENERATED_APP_SOURCE_FILES device_deps.c)
|
||||
set_property(GLOBAL APPEND PROPERTY GENERATED_APP_SOURCE_FILES dev_handles.c)
|
||||
|
||||
# gen_device_deps runs on `__device_deps_pass1` so pass this info to the linker script generator
|
||||
list(APPEND LINKER_PASS_${ZEPHYR_CURRENT_LINKER_PASS}_DEFINE "LINKER_DEVICE_DEPS_PASS1")
|
||||
# gen_handles runs on `__device_handles_pass1` so pass this info to the linker script generator
|
||||
list(APPEND LINKER_PASS_${ZEPHYR_CURRENT_LINKER_PASS}_DEFINE "LINKER_DEVICE_HANDLES_PASS1")
|
||||
endif()
|
||||
|
||||
if(CONFIG_CODE_DATA_RELOCATION)
|
||||
@@ -1180,7 +1161,7 @@ if(CONFIG_USERSPACE)
|
||||
)
|
||||
endif()
|
||||
|
||||
if(CONFIG_USERSPACE OR CONFIG_DEVICE_DEPS)
|
||||
if(CONFIG_USERSPACE OR CONFIG_HAS_DTS)
|
||||
configure_linker_script(
|
||||
${ZEPHYR_CURRENT_LINKER_CMD}
|
||||
"${LINKER_PASS_${ZEPHYR_CURRENT_LINKER_PASS}_DEFINE}"
|
||||
@@ -1212,8 +1193,6 @@ if(CONFIG_USERSPACE OR CONFIG_DEVICE_DEPS)
|
||||
LIBRARIES_POST_SCRIPT ""
|
||||
DEPENDENCIES ${CODE_RELOCATION_DEP}
|
||||
)
|
||||
target_link_libraries_ifdef(CONFIG_NATIVE_LIBRARY ${ZEPHYR_LINK_STAGE_EXECUTABLE}
|
||||
$<TARGET_PROPERTY:linker,no_position_independent>)
|
||||
target_byproducts(TARGET ${ZEPHYR_LINK_STAGE_EXECUTABLE}
|
||||
BYPRODUCTS ${PROJECT_BINARY_DIR}/${ZEPHYR_LINK_STAGE_EXECUTABLE}.map
|
||||
)
|
||||
@@ -1431,12 +1410,9 @@ toolchain_ld_link_elf(
|
||||
LINKER_SCRIPT ${PROJECT_BINARY_DIR}/${ZEPHYR_CURRENT_LINKER_CMD}
|
||||
DEPENDENCIES ${CODE_RELOCATION_DEP}
|
||||
)
|
||||
target_link_libraries_ifdef(CONFIG_NATIVE_LIBRARY ${ZEPHYR_LINK_STAGE_EXECUTABLE}
|
||||
$<TARGET_PROPERTY:linker,partial_linking>)
|
||||
target_byproducts(TARGET ${ZEPHYR_LINK_STAGE_EXECUTABLE}
|
||||
BYPRODUCTS ${PROJECT_BINARY_DIR}/${ZEPHYR_LINK_STAGE_EXECUTABLE}.map
|
||||
)
|
||||
set(BYPRODUCT_KERNEL_ELF_NAME "${PROJECT_BINARY_DIR}/${KERNEL_ELF_NAME}" CACHE FILEPATH "Kernel elf file" FORCE)
|
||||
set_property(TARGET
|
||||
${ZEPHYR_LINK_STAGE_EXECUTABLE}
|
||||
PROPERTY LINK_DEPENDS ${PROJECT_BINARY_DIR}/${ZEPHYR_CURRENT_LINKER_CMD}
|
||||
@@ -1582,8 +1558,8 @@ if(CONFIG_BUILD_OUTPUT_HEX OR BOARD_FLASH_RUNNER STREQUAL openocd)
|
||||
list(APPEND
|
||||
post_build_byproducts
|
||||
${KERNEL_HEX_NAME}
|
||||
# ${out_hex_byprod} # Is this needed ?
|
||||
)
|
||||
set(BYPRODUCT_KERNEL_HEX_NAME "${PROJECT_BINARY_DIR}/${KERNEL_HEX_NAME}" CACHE FILEPATH "Kernel hex file" FORCE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -1604,8 +1580,8 @@ if(CONFIG_BUILD_OUTPUT_BIN)
|
||||
list(APPEND
|
||||
post_build_byproducts
|
||||
${KERNEL_BIN_NAME}
|
||||
# ${out_hex_byprod} # Is this needed ?
|
||||
)
|
||||
set(BYPRODUCT_KERNEL_BIN_NAME "${PROJECT_BINARY_DIR}/${KERNEL_BIN_NAME}" CACHE FILEPATH "Kernel binary file" FORCE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -1638,7 +1614,6 @@ if(CONFIG_BUILD_OUTPUT_BIN AND CONFIG_BUILD_OUTPUT_UF2)
|
||||
post_build_byproducts
|
||||
${KERNEL_UF2_NAME}
|
||||
)
|
||||
set(BYPRODUCT_KERNEL_UF2_NAME "${PROJECT_BINARY_DIR}/${KERNEL_UF2_NAME}" CACHE FILEPATH "Kernel uf2 file" FORCE)
|
||||
endif()
|
||||
|
||||
if(CONFIG_BUILD_OUTPUT_META)
|
||||
@@ -1687,8 +1662,9 @@ if(CONFIG_BUILD_OUTPUT_S19)
|
||||
list(APPEND
|
||||
post_build_byproducts
|
||||
${KERNEL_S19_NAME}
|
||||
# ${out_S19_byprod} # Is this needed ?
|
||||
|
||||
)
|
||||
set(BYPRODUCT_KERNEL_S19_NAME "${PROJECT_BINARY_DIR}/${KERNEL_S19_NAME}" CACHE FILEPATH "Kernel s19 file" FORCE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -1710,6 +1686,7 @@ if(CONFIG_OUTPUT_DISASSEMBLE_ALL)
|
||||
list(APPEND
|
||||
post_build_byproducts
|
||||
${KERNEL_LST_NAME}
|
||||
# ${out_disassembly_byprod} # Needed ??
|
||||
)
|
||||
endif()
|
||||
|
||||
@@ -1729,6 +1706,7 @@ if(CONFIG_OUTPUT_SYMBOLS)
|
||||
endif()
|
||||
|
||||
if(CONFIG_OUTPUT_STAT)
|
||||
# zephyr_post_build(TOOLS bintools COMMAND readelf FLAGS headers INFILE file OUTFILE outfile)
|
||||
list(APPEND
|
||||
post_build_commands
|
||||
COMMAND $<TARGET_PROPERTY:bintools,readelf_command>
|
||||
@@ -1761,33 +1739,15 @@ if(CONFIG_BUILD_OUTPUT_STRIPPED)
|
||||
endif()
|
||||
|
||||
if(CONFIG_BUILD_OUTPUT_EXE)
|
||||
if (NOT CONFIG_NATIVE_LIBRARY)
|
||||
list(APPEND
|
||||
post_build_commands
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -E copy ${KERNEL_ELF_NAME} ${KERNEL_EXE_NAME}
|
||||
)
|
||||
list(APPEND
|
||||
post_build_byproducts
|
||||
${KERNEL_EXE_NAME}
|
||||
)
|
||||
set(BYPRODUCT_KERNEL_EXE_NAME "${PROJECT_BINARY_DIR}/${KERNEL_EXE_NAME}" CACHE FILEPATH "Kernel exe file" FORCE)
|
||||
else()
|
||||
if(CMAKE_GENERATOR STREQUAL "Unix Makefiles")
|
||||
set(MAKE "${CMAKE_MAKE_PROGRAM}" CACHE FILEPATH "cmake defined make")
|
||||
endif()
|
||||
find_program(MAKE make REQUIRED)
|
||||
add_custom_target(native_runner_executable
|
||||
ALL
|
||||
COMMENT "Building native simulator runner, and linking final executable"
|
||||
COMMAND
|
||||
${MAKE} -f ${ZEPHYR_BASE}/scripts/native_simulator/Makefile all --warn-undefined-variables
|
||||
-r NSI_CONFIG_FILE=${CMAKE_BINARY_DIR}/zephyr/NSI/nsi_config
|
||||
# nsi_config is created by the board cmake file
|
||||
DEPENDS ${logical_target_for_zephyr_elf}
|
||||
BYPRODUCTS ${KERNEL_EXE_NAME}
|
||||
list(APPEND
|
||||
post_build_commands
|
||||
COMMAND
|
||||
${CMAKE_COMMAND} -E copy ${KERNEL_ELF_NAME} ${KERNEL_EXE_NAME}
|
||||
)
|
||||
list(APPEND
|
||||
post_build_byproducts
|
||||
${KERNEL_EXE_NAME}
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(CONFIG_BUILD_OUTPUT_INFO_HEADER)
|
||||
@@ -1811,22 +1771,12 @@ if(CONFIG_CHECK_INIT_PRIORITIES)
|
||||
list(APPEND
|
||||
post_build_commands
|
||||
COMMAND ${PYTHON_EXECUTABLE} ${ZEPHYR_BASE}/scripts/build/check_init_priorities.py
|
||||
--elf-file=${ZEPHYR_BINARY_DIR}/${KERNEL_ELF_NAME}
|
||||
--build-dir ${PROJECT_BINARY_DIR}/..
|
||||
--edt-pickle ${EDT_PICKLE}
|
||||
${fail_on_warning}
|
||||
)
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_C_COMPILER_ID STREQUAL "ARMClang")
|
||||
add_custom_target(
|
||||
initlevels
|
||||
COMMAND ${PYTHON_EXECUTABLE} ${ZEPHYR_BASE}/scripts/build/check_init_priorities.py
|
||||
--elf-file=${ZEPHYR_BINARY_DIR}/${KERNEL_ELF_NAME}
|
||||
--initlevels
|
||||
DEPENDS ${logical_target_for_zephyr_elf}
|
||||
USES_TERMINAL
|
||||
)
|
||||
endif()
|
||||
|
||||
# Generate and use MCUboot related artifacts as needed.
|
||||
if(CONFIG_BOOTLOADER_MCUBOOT)
|
||||
get_target_property(signing_script zephyr_property_target SIGNING_SCRIPT)
|
||||
|
||||
194
CODEOWNERS
194
CODEOWNERS
@@ -18,9 +18,9 @@
|
||||
/MAINTAINERS.yml @MaureenHelm
|
||||
/arch/arc/ @abrodkin @ruuddw @evgeniy-paltsev
|
||||
/arch/arm/ @MaureenHelm @galak @ioannisg
|
||||
/arch/arm/core/cortex_m/cmse/ @ioannisg
|
||||
/arch/arm/include/cortex_m/cmse.h @ioannisg
|
||||
/arch/arm/core/cortex_a_r/ @MaureenHelm @galak @ioannisg @bbolen @stephanosio
|
||||
/arch/arm/core/aarch32/cortex_m/cmse/ @ioannisg
|
||||
/arch/arm/include/aarch32/cortex_m/cmse.h @ioannisg
|
||||
/arch/arm/core/aarch32/cortex_a_r/ @MaureenHelm @galak @ioannisg @bbolen @stephanosio
|
||||
/arch/arm64/ @carlocaione
|
||||
/arch/arm64/core/cortex_r/ @povergoing
|
||||
/arch/arm64/core/xen/ @lorc @firscity
|
||||
@@ -55,14 +55,12 @@
|
||||
/soc/arm/st_stm32/ @erwango
|
||||
/soc/arm/st_stm32/*/power.c @FRASTM
|
||||
/soc/arm/st_stm32/stm32mp1/ @arnopo
|
||||
/soc/arm/st_stm32/stm32h7/*stm32h735* @benediktibk
|
||||
/soc/arm/st_stm32/stm32l4/*stm32l451* @benediktibk
|
||||
/soc/arm/ti_simplelink/cc13x2_cc26x2/ @bwitherspoon
|
||||
/soc/arm/ti_simplelink/cc32xx/ @vanti
|
||||
/soc/arm/ti_simplelink/msp432p4xx/ @Mani-Sadhasivam
|
||||
/soc/arm/xilinx_zynq7000/ @ibirnbaum
|
||||
/soc/arm/xilinx_zynqmp/ @stephanosio
|
||||
/soc/arm/renesas_rcar/ @aaillet
|
||||
/soc/arm/renesas_rcar/ @aaillet @pmarzin
|
||||
/soc/arm64/ @carlocaione
|
||||
/soc/arm64/qemu_cortex_a53/ @carlocaione
|
||||
/soc/arm64/bcm_vk/ @abhishek-brcm
|
||||
@@ -72,10 +70,9 @@
|
||||
/soc/arm64/arm/ @povergoing
|
||||
/soc/arm64/arm/fvp_aemv8a/ @carlocaione
|
||||
/soc/arm64/intel_socfpga/* @siclim
|
||||
/soc/arm64/renesas_rcar/ @lorc @xakep-amatop
|
||||
/soc/Kconfig @tejlmand @galak @nashif @nordicjm
|
||||
/submanifests/* @mbolivar-ampere
|
||||
/arch/x86/ @jhedberg @nashif
|
||||
/submanifests/* @mbolivar-nordic
|
||||
/arch/x86/ @jhedberg @nashif @aasthagr
|
||||
/arch/nios2/ @nashif
|
||||
/arch/posix/ @aescolar @daor-oti
|
||||
/arch/riscv/ @kgugala @pgielda
|
||||
@@ -87,7 +84,7 @@
|
||||
/soc/riscv/riscv-privileged/neorv32/ @henrikbrixandersen
|
||||
/soc/riscv/riscv-privileged/gd32vf103/ @soburi
|
||||
/soc/riscv/riscv-privileged/niosv/ @sweeaun
|
||||
/soc/x86/ @dcpleung @nashif
|
||||
/soc/x86/ @dcpleung @nashif @aasthagr
|
||||
/arch/xtensa/ @dcpleung @andyross @nashif
|
||||
/soc/xtensa/ @dcpleung @andyross @nashif
|
||||
/arch/sparc/ @julius-barendt
|
||||
@@ -104,7 +101,6 @@
|
||||
/boards/arm/96b_wistrio/ @Mani-Sadhasivam
|
||||
/boards/arm/arduino_due/ @ioannisg
|
||||
/boards/arm/acn52832/ @sven-hm
|
||||
/boards/arm/arduino_mkrzero/ @soburi
|
||||
/boards/arm/bbc_microbit_v2/ @LingaoM
|
||||
/boards/arm/bl5340_dvk/ @lairdjm
|
||||
/boards/arm/bl65*/ @lairdjm
|
||||
@@ -115,23 +111,26 @@
|
||||
/boards/arm/cc26x2r1_launchxl/ @bwitherspoon
|
||||
/boards/arm/cc3220sf_launchxl/ @vanti
|
||||
/boards/arm/cy8ckit_062_ble/ @ifyall @npal-cy
|
||||
/boards/arm/cy8ckit_062s4/ @DaWei8823
|
||||
/boards/arm/cy8ckit_062_wifi_bt/ @ifyall @npal-cy
|
||||
/boards/arm/cy8cproto_062_4343w/ @ifyall @npal-cy
|
||||
/boards/arm/disco_l475_iot1/ @erwango
|
||||
/boards/arm/efm32pg_stk3401a/ @rdmeneze
|
||||
/boards/arm/faze/ @mbittan @simonguinot
|
||||
/boards/arm/frdm*/ @mmahadevan108 @dleach02
|
||||
/boards/arm/frdm*/doc/ @dleach02 @MeganHansen
|
||||
/boards/arm/gd32*/ @nandojve
|
||||
/boards/arm/google_*/ @jackrosenthal
|
||||
/boards/arm/hexiwear*/ @mmahadevan108 @dleach02
|
||||
/boards/arm/hexiwear*/doc/ @dleach02 @MeganHansen
|
||||
/boards/arm/ip_k66f/ @parthitce @lmajewski
|
||||
/boards/arm/legend/ @mbittan @simonguinot
|
||||
/boards/arm/lpcxpresso*/ @mmahadevan108 @dleach02
|
||||
/boards/arm/lpcxpresso*/doc/ @dleach02 @MeganHansen
|
||||
/boards/arm/mg100/ @rerickson1
|
||||
/boards/arm/mimx8mm_evk/ @Mani-Sadhasivam
|
||||
/boards/arm/mimx8mm_phyboard_polis @pefech
|
||||
/boards/arm/mimxrt*/ @mmahadevan108 @dleach02
|
||||
/boards/arm/mimxrt*/doc/ @dleach02 @MeganHansen
|
||||
/boards/arm/mps2_an385/ @fvincenzo
|
||||
/boards/arm/msp_exp432p401r_launchxl/ @Mani-Sadhasivam
|
||||
/boards/arm/npcx7m6fb_evb/ @MulinChao @ChiHuaL
|
||||
@@ -162,13 +161,12 @@
|
||||
/boards/arm/steval_fcu001v1/ @Navin-Sankar
|
||||
/boards/arm/stm32l1_disco/ @karlp
|
||||
/boards/arm/stm32*_disco/ @erwango @ABOSTM @FRASTM
|
||||
/boards/arm/stm32h735g_disco/ @benediktibk
|
||||
/boards/arm/stm32f3_disco/ @ydamigos
|
||||
/boards/arm/stm32*_eval/ @erwango @ABOSTM @FRASTM
|
||||
/boards/arm/rcar_*/ @aaillet
|
||||
/boards/arm/rcar_h3ulcb/ @aaillet @pmarzin
|
||||
/boards/arm/ubx_bmd345eval_nrf52840/ @Navin-Sankar @brec-u-blox
|
||||
/boards/arm/nrf5340_audio_dk_nrf5340 @koffes @alexsven @erikrobstad @rick1082 @gWacey
|
||||
/boards/common/ @mbolivar-ampere
|
||||
/boards/common/ @mbolivar-nordic
|
||||
/boards/deprecated.cmake @tejlmand
|
||||
/boards/mips/ @frantony
|
||||
/boards/nios2/ @nashif
|
||||
@@ -181,14 +179,12 @@
|
||||
/boards/riscv/adp_xc7k_ae350/ @cwshu @kevinwang821020 @jimmyzhe
|
||||
/boards/riscv/longan_nano/ @soburi
|
||||
/boards/riscv/neorv32/ @henrikbrixandersen
|
||||
/boards/riscv/niosv*/ @sweeaun
|
||||
/boards/riscv/sparkfun_red_v_things_plus/ @soburi
|
||||
/boards/riscv/stamp_c3/ @soburi
|
||||
/boards/riscv/niosv_m/ @sweeaun
|
||||
/boards/shields/ @erwango
|
||||
/boards/shields/atmel_rf2xx/ @nandojve
|
||||
/boards/shields/esp_8266/ @nandojve
|
||||
/boards/shields/inventek_eswifi/ @nandojve
|
||||
/boards/x86/ @dcpleung @nashif
|
||||
/boards/x86/ @dcpleung @nashif @aasthagr
|
||||
/boards/x86/acrn/ @enjiamai
|
||||
/boards/xtensa/ @nashif @dcpleung
|
||||
/boards/xtensa/odroid_go/ @ydamigos
|
||||
@@ -205,8 +201,6 @@
|
||||
/boards/arm64/fvp_baser_aemv8r/ @povergoing
|
||||
/boards/arm64/fvp_base_revc_2xaemv8a/ @carlocaione
|
||||
/boards/arm64/intel_socfpga_agilex_socdk/ @siclim @ngboonkhai
|
||||
/boards/arm64/intel_socfpga_agilex5_socdk/ @chongteikheng
|
||||
/boards/arm64/rcar_*/ @lorc @xakep-amatop
|
||||
/boards/Kconfig @tejlmand @galak @nashif @nordicjm
|
||||
# All cmake related files
|
||||
/cmake/ @tejlmand @nashif
|
||||
@@ -216,11 +210,10 @@
|
||||
/doc/develop/tools/coccinelle.rst @himanshujha199640 @JuliaLawall
|
||||
/doc/services/device_mgmt/smp_protocol.rst @de-nordic @nordicjm
|
||||
/doc/services/device_mgmt/smp_groups/ @de-nordic @nordicjm
|
||||
/doc/services/sensing/ @lixuzha @ghu0510 @qianruh
|
||||
/doc/CMakeLists.txt @carlescufi
|
||||
/doc/_scripts/ @carlescufi
|
||||
/doc/connectivity/bluetooth/ @alwa-nordic @jhedberg @Vudentz
|
||||
/doc/build/dts/ @galak @mbolivar-ampere
|
||||
/doc/build/dts/ @galak @mbolivar-nordic
|
||||
/doc/build/sysbuild/ @tejlmand @nordicjm
|
||||
/doc/hardware/peripherals/canbus/ @alexanderwachter @henrikbrixandersen
|
||||
/doc/security/ @ceolin @d3zd3z
|
||||
@@ -241,11 +234,7 @@
|
||||
/drivers/adc/ @anangl
|
||||
/drivers/adc/adc_ads1x1x.c @XenuIsWatching
|
||||
/drivers/adc/adc_stm32.c @cybertale
|
||||
/drivers/adc/adc_rpi_pico.c @soburi
|
||||
/drivers/adc/*ads114s0x* @benediktibk
|
||||
/drivers/adc/*max11102_17* @benediktibk
|
||||
/drivers/audio/*nrfx* @anangl
|
||||
/drivers/auxdisplay/*pt6314* @xingrz
|
||||
/drivers/auxdisplay/* @thedjnK
|
||||
/drivers/bbram/* @yperess @sjg20 @jackrosenthal
|
||||
/drivers/bluetooth/ @alwa-nordic @jhedberg @Vudentz
|
||||
@@ -254,8 +243,8 @@
|
||||
/drivers/syscon/ @carlocaione @yperess
|
||||
/drivers/can/ @alexanderwachter @henrikbrixandersen
|
||||
/drivers/can/*mcp2515* @karstenkoenig
|
||||
/drivers/can/*rcar* @aaillet
|
||||
/drivers/clock_control/*agilex* @siclim @gdengi
|
||||
/drivers/can/*rcar* @aaillet @pmarzin
|
||||
/drivers/clock_control/*agilex* @siclim
|
||||
/drivers/clock_control/*nrf* @nordic-krch
|
||||
/drivers/clock_control/*esp32* @extremegtx @sylvioalves
|
||||
/drivers/clock_control/*cpg_mssr* @aaillet
|
||||
@@ -266,16 +255,13 @@
|
||||
/drivers/counter/counter_cmos.c @dcpleung
|
||||
/drivers/counter/counter_ll_stm32_timer.c @kentjhall
|
||||
/drivers/counter/*esp32* @sylvioalves
|
||||
/drivers/counter/dw_timer.c @pbalsundar
|
||||
/drivers/counter/counter_timer_shell.c @pbalsundar
|
||||
/drivers/crypto/*nrf_ecb* @maciekfabia @anangl
|
||||
/drivers/display/*rm68200* @mmahadevan108
|
||||
/drivers/display/display_ili9342c.* @extremegtx
|
||||
/drivers/dac/ @martinjaeger
|
||||
/drivers/dac/*ad56xx* @benediktibk
|
||||
/drivers/dai/ @kv2019i @marcinszkudlinski @abonislawski
|
||||
/drivers/dai/intel/ @kv2019i @marcinszkudlinski @abonislawski
|
||||
/drivers/dai/intel/ssp/ @kv2019i @marcinszkudlinski @abonislawski
|
||||
/drivers/dai/ @juimonen @marcinszkudlinski @abonislawski
|
||||
/drivers/dai/intel/ @juimonen @marcinszkudlinski @abonislawski
|
||||
/drivers/dai/intel/ssp/ @juimonen @marcinszkudlinski @abonislawski
|
||||
/drivers/dai/intel/dmic/ @marcinszkudlinski @abonislawski
|
||||
/drivers/dai/intel/alh/ @abonislawski
|
||||
/drivers/dma/*dw* @tbursztyka
|
||||
@@ -285,7 +271,6 @@
|
||||
/drivers/dma/*pl330* @raveenp
|
||||
/drivers/dma/*iproc_pax* @raveenp
|
||||
/drivers/dma/*intel_adsp* @teburd @abonislawski
|
||||
/drivers/dma/*rpi_pico* @soburi
|
||||
/drivers/dma/*xmc4xxx* @talih0
|
||||
/drivers/edac/ @finikorg
|
||||
/drivers/eeprom/ @henrikbrixandersen
|
||||
@@ -295,14 +280,14 @@
|
||||
/drivers/entropy/*rv32m1* @dleach02
|
||||
/drivers/entropy/*litex* @mateusz-holenko @kgugala @pgielda
|
||||
/drivers/espi/ @albertofloyd @franciscomunoz @sjvasanth1
|
||||
/drivers/ethernet/ @tbursztyka @jukkar
|
||||
/drivers/ethernet/ @tbursztyka
|
||||
/drivers/ethernet/*dwmac* @npitre
|
||||
/drivers/ethernet/*stm32* @Nukersson @lochej
|
||||
/drivers/ethernet/*w5500* @parthitce
|
||||
/drivers/ethernet/*xlnx_gem* @ibirnbaum
|
||||
/drivers/ethernet/*smsc91x* @sgrrzhf
|
||||
/drivers/ethernet/*adin2111* @GeorgeCGV
|
||||
/drivers/ethernet/phy/ @rlubos @tbursztyka @arvinf @jukkar
|
||||
/drivers/ethernet/phy/ @rlubos @tbursztyka @arvinf
|
||||
/drivers/ethernet/phy/*adin2111* @GeorgeCGV
|
||||
/drivers/mdio/ @rlubos @tbursztyka @arvinf
|
||||
/drivers/mdio/*adin2111* @GeorgeCGV
|
||||
@@ -324,9 +309,6 @@
|
||||
/drivers/gpio/*esp32* @sylvioalves
|
||||
/drivers/gpio/*rpi_pico* @yonsch
|
||||
/drivers/gpio/*xlnx_ps* @ibirnbaum
|
||||
/drivers/gpio/*ads114s0x* @benediktibk
|
||||
/drivers/gpio/*bd8lb600fs* @benediktibk
|
||||
/drivers/gpio/*pcal64xxa* @benediktibk
|
||||
/drivers/hwinfo/ @alexanderwachter
|
||||
/drivers/i2c/i2c_common.c @sjg20
|
||||
/drivers/i2c/i2c_emul.c @sjg20
|
||||
@@ -336,15 +318,15 @@
|
||||
/drivers/i2c/Kconfig.i2c_emul @sjg20
|
||||
/drivers/i2c/Kconfig.it8xxx2 @GTLin08
|
||||
/drivers/i2c/target/*eeprom* @henrikbrixandersen
|
||||
/drivers/i2c/Kconfig.test @mbolivar-ampere
|
||||
/drivers/i2c/i2c_test.c @mbolivar-ampere
|
||||
/drivers/i2c/Kconfig.test @mbolivar-nordic
|
||||
/drivers/i2c/i2c_test.c @mbolivar-nordic
|
||||
/drivers/i2c/*rcar* @aaillet
|
||||
/drivers/i2s/*litex* @mateusz-holenko @kgugala @pgielda
|
||||
/drivers/i2s/i2s_ll_stm32* @avisconti
|
||||
/drivers/i2s/*nrfx* @anangl
|
||||
/drivers/i3c/ @dcpleung
|
||||
/drivers/i3c/i3c_cdns.c @XenuIsWatching
|
||||
/drivers/ieee802154/ @rlubos @tbursztyka @jukkar @fgrandel
|
||||
/drivers/ieee802154/ @rlubos @tbursztyka
|
||||
/drivers/ieee802154/*b91* @andy-liu-telink
|
||||
/drivers/ieee802154/ieee802154_nrf5* @jciupis
|
||||
/drivers/ieee802154/ieee802154_rf2xx* @tbursztyka @nandojve
|
||||
@@ -362,13 +344,12 @@
|
||||
/drivers/ipm/ipm_stm32_ipcc.c @arnopo
|
||||
/drivers/ipm/ipm_stm32_hsem.c @cameled
|
||||
/drivers/ipm/ipm_esp32.c @uLipe
|
||||
/drivers/ipm/ipm_ivshmem.c @uLipe
|
||||
/drivers/kscan/ @VenkatKotakonda @franciscomunoz @sjvasanth1
|
||||
/drivers/kscan/*xec* @franciscomunoz @sjvasanth1
|
||||
/drivers/kscan/*ft5336* @MaureenHelm
|
||||
/drivers/kscan/*ht16k33* @henrikbrixandersen
|
||||
/drivers/led/ @Mani-Sadhasivam
|
||||
/drivers/led_strip/ @mbolivar-ampere
|
||||
/drivers/led_strip/ @mbolivar-nordic
|
||||
/drivers/lora/ @Mani-Sadhasivam
|
||||
/drivers/mbox/ @carlocaione
|
||||
/drivers/misc/ @tejlmand
|
||||
@@ -384,8 +365,7 @@
|
||||
/drivers/pinctrl/ @gmarull
|
||||
/drivers/pinctrl/*esp32* @sylvioalves
|
||||
/drivers/pinctrl/*it8xxx2* @ite
|
||||
/drivers/pm_cpu_ops/ @carlocaione @gdengi
|
||||
/drivers/pm_cpu_ops/psci_shell.c @nbalabak @gdengi
|
||||
/drivers/pm_cpu_ops/ @carlocaione
|
||||
/drivers/power_domain/ @ceolin
|
||||
/drivers/ps2/ @franciscomunoz @sjvasanth1
|
||||
/drivers/ps2/*xec* @franciscomunoz @sjvasanth1
|
||||
@@ -402,15 +382,11 @@
|
||||
/drivers/pwm/*gecko* @sun681
|
||||
/drivers/pwm/*it8xxx2* @RuibinChang
|
||||
/drivers/pwm/*esp32* @LucasTambor
|
||||
/drivers/pwm/*rcar* @aaillet
|
||||
/drivers/pwm/*max31790* @benediktibk
|
||||
/drivers/pwm/*rcar* @pmarzin
|
||||
/drivers/regulator/* @gmarull
|
||||
/drivers/regulator/regulator_pca9420.c @danieldegrasse
|
||||
/drivers/regulator/regulator_rpi_pico.c @soburi
|
||||
/drivers/regulator/regulator_shell.c @danieldegrasse
|
||||
/drivers/reset/ @andrei-edward-popa
|
||||
/drivers/reset/reset_intel_socfpga.c @nbalabak
|
||||
/drivers/reset/Kconfig.intel_socfpga @nbalabak
|
||||
/drivers/sensor/ @MaureenHelm
|
||||
/drivers/sensor/ams_iAQcore/ @alexanderwachter
|
||||
/drivers/sensor/ens210/ @alexanderwachter
|
||||
@@ -422,12 +398,11 @@
|
||||
/drivers/sensor/lsm*/ @avisconti
|
||||
/drivers/sensor/mpr/ @sven-hm
|
||||
/drivers/sensor/qdec_stm32/ @valeriosetti
|
||||
/drivers/sensor/rpi_pico_temp/ @soburi
|
||||
/drivers/sensor/st*/ @avisconti
|
||||
/drivers/serial/*b91* @andy-liu-telink
|
||||
/drivers/serial/uart_altera_jtag.c @nashif @gohshunjing
|
||||
/drivers/serial/uart_altera.c @gohshunjing
|
||||
/drivers/serial/*ns16550* @dcpleung @nashif @gdengi
|
||||
/drivers/serial/*ns16550* @dcpleung @nashif @aasthagr
|
||||
/drivers/serial/*nrfx* @anangl
|
||||
/drivers/serial/uart_liteuart.c @mateusz-holenko @kgugala @pgielda
|
||||
/drivers/serial/Kconfig.mcux_iuart @Mani-Sadhasivam
|
||||
@@ -454,13 +429,12 @@
|
||||
/drivers/disk/ @jfischer-no
|
||||
/drivers/disk/sdmmc_sdhc.h @JunYangNXP
|
||||
/drivers/disk/sdmmc_stm32.c @anthonybrandon
|
||||
/drivers/net/ @rlubos @tbursztyka @jukkar
|
||||
/drivers/ptp_clock/ @tbursztyka @jukkar
|
||||
/drivers/net/ @rlubos @tbursztyka
|
||||
/drivers/ptp_clock/ @tbursztyka
|
||||
/drivers/spi/ @tbursztyka
|
||||
/drivers/spi/*b91* @andy-liu-telink
|
||||
/drivers/spi/spi_rv32m1_lpspi* @karstenkoenig
|
||||
/drivers/spi/*esp32* @sylvioalves
|
||||
/drivers/spi/*pl022* @soburi
|
||||
/drivers/sdhc/ @danieldegrasse
|
||||
/drivers/timer/*apic* @dcpleung @nashif
|
||||
/drivers/timer/apic_tsc.c @andyross
|
||||
@@ -470,7 +444,7 @@
|
||||
/drivers/timer/*riscv_machine* @kgugala @pgielda
|
||||
/drivers/timer/*ite_it8xxx2* @ite
|
||||
/drivers/timer/*xlnx_psttc* @wjliang @stephanosio
|
||||
/drivers/timer/*cc13xx_cc26xx_rtc* @vanti
|
||||
/drivers/timer/*cc13x2_cc26x2_rtc* @vanti
|
||||
/drivers/timer/*cavs* @dcpleung
|
||||
/drivers/timer/*stm32_lptim* @FRASTM
|
||||
/drivers/timer/*leon_gptimer* @julius-barendt
|
||||
@@ -505,7 +479,7 @@
|
||||
/drivers/watchdog/*rpi_pico* @thedjnK
|
||||
/drivers/watchdog/*dw* @softwarecki
|
||||
/drivers/watchdog/*ifx* @sreeramIfx
|
||||
/drivers/wifi/ @rlubos @tbursztyka @jukkar
|
||||
/drivers/wifi/ @rlubos @tbursztyka
|
||||
/drivers/wifi/esp_at/ @mniestroj
|
||||
/drivers/wifi/eswifi/ @loicpoulain @nandojve
|
||||
/drivers/wifi/winc1500/ @kludentwo
|
||||
@@ -530,12 +504,9 @@
|
||||
/dts/arm64/armv8-r.dtsi @povergoing
|
||||
/dts/arm64/intel/*intel_socfpga* @siclim
|
||||
/dts/arm64/nxp/ @JiafeiPan
|
||||
/dts/arm64/renesas/ @lorc @xakep-amatop
|
||||
/dts/arm/quicklogic/ @fkokosinski @kgugala
|
||||
/dts/arm/seeed/ @str4t0m
|
||||
/dts/arm/st/ @erwango
|
||||
/dts/arm/st/h7/*stm32h735* @benediktibk
|
||||
/dts/arm/st/l4/*stm32l451* @benediktibk
|
||||
/dts/arm/ti/cc13?2* @bwitherspoon
|
||||
/dts/arm/ti/cc26?2* @bwitherspoon
|
||||
/dts/arm/ti/cc3235* @vanti
|
||||
@@ -560,12 +531,12 @@
|
||||
/dts/riscv/riscv32-litex-vexriscv.dtsi @mateusz-holenko @kgugala @pgielda
|
||||
/dts/riscv/starfive/ @rajnesh-kanwal
|
||||
/dts/riscv/andes/andes_v5* @cwshu @kevinwang821020 @jimmyzhe
|
||||
/dts/riscv/niosv/ @sweeaun
|
||||
/dts/riscv/niosv/niosv-m.dtsi @sweeaun
|
||||
/dts/arm/armv*m.dtsi @galak @ioannisg
|
||||
/dts/arm/armv7-a.dtsi @ibirnbaum
|
||||
/dts/arm/armv7-r.dtsi @bbolen @stephanosio
|
||||
/dts/arm/xilinx/ @bbolen @stephanosio
|
||||
/dts/arm/renesas/rcar/ @aaillet
|
||||
/dts/arm/renesas/ @aaillet @pmarzin
|
||||
/dts/x86/ @jhedberg
|
||||
/dts/xtensa/xtensa.dtsi @ydamigos
|
||||
/dts/xtensa/intel/ @dcpleung
|
||||
@@ -576,11 +547,8 @@
|
||||
/dts/bindings/can/ @alexanderwachter @henrikbrixandersen
|
||||
/dts/bindings/i2c/zephyr*i2c-emul*.yaml @sjg20
|
||||
/dts/bindings/adc/st*stm32-adc.yaml @cybertale
|
||||
/dts/bindings/adc/*ads114s08.yaml @benediktibk
|
||||
/dts/bindings/adc/*max111* @benediktibk
|
||||
/dts/bindings/modem/*hl7800.yaml @rerickson1
|
||||
/dts/bindings/serial/ns16550.yaml @dcpleung @nashif
|
||||
/dts/bindings/counter/snps,dw-timers.yaml @pbalsundar
|
||||
/dts/bindings/wifi/*esp-at.yaml @mniestroj
|
||||
/dts/bindings/*/*gd32* @nandojve
|
||||
/dts/bindings/*/*npcx* @MulinChao @ChiHuaL
|
||||
@@ -602,28 +570,18 @@
|
||||
/dts/bindings/i3c/ @dcpleung
|
||||
/dts/bindings/pm_cpu_ops/* @carlocaione
|
||||
/dts/bindings/ethernet/*gem.yaml @ibirnbaum
|
||||
/dts/bindings/auxdisplay/*pt6314.yaml @xingrz
|
||||
/dts/bindings/auxdisplay/* @thedjnK
|
||||
/dts/posix/ @aescolar @daor-oti
|
||||
/dts/bindings/sensor/*bme680* @BoschSensortec
|
||||
/dts/bindings/sensor/*ina23* @bbilas
|
||||
/dts/bindings/sensor/st* @avisconti
|
||||
/dts/bindings/sensor/zephyr,sensing.yaml @lixuzha @ghu0510 @qianruh
|
||||
/dts/bindings/sensor/zephyr,sensing*.yaml @lixuzha @ghu0510 @qianruh
|
||||
/dts/bindings/smbus/ @finikorg
|
||||
/dts/bindings/sip_svc/ @maheshraotm
|
||||
/dts/bindings/cpu/intel,niosv.yaml @sweeaun
|
||||
/dts/bindings/reset/intel,socfpga-reset.yaml @nbalabak
|
||||
/dts/bindings/gpio/*pcal64* @benediktibk
|
||||
/dts/bindings/gpio/*bd8lb600fs* @benediktibk
|
||||
/dts/bindings/gpio/*ads114s0x* @benediktibk
|
||||
/dts/bindings/pwm/*max31790* @benediktibk
|
||||
/dts/bindings/dac/*ad56* @benediktibk
|
||||
/dts/common/ @galak
|
||||
/include/ @nashif @carlescufi @galak @MaureenHelm
|
||||
/include/zephyr/drivers/*/*litex* @mateusz-holenko @kgugala @pgielda
|
||||
/include/zephyr/drivers/adc.h @anangl
|
||||
/include/zephyr/drivers/adc/ads114s0x.h @benediktibk
|
||||
/include/zephyr/drivers/auxdisplay.h @thedjnK
|
||||
/include/zephyr/drivers/can.h @alexanderwachter @henrikbrixandersen
|
||||
/include/zephyr/drivers/can/ @alexanderwachter @henrikbrixandersen
|
||||
@@ -642,7 +600,7 @@
|
||||
/include/zephyr/drivers/pcie/ @dcpleung
|
||||
/include/zephyr/drivers/hwinfo.h @alexanderwachter
|
||||
/include/zephyr/drivers/led.h @Mani-Sadhasivam
|
||||
/include/zephyr/drivers/led_strip.h @mbolivar-ampere
|
||||
/include/zephyr/drivers/led_strip.h @mbolivar-nordic
|
||||
/include/zephyr/drivers/sensor.h @MaureenHelm
|
||||
/include/zephyr/drivers/smbus.h @finikorg
|
||||
/include/zephyr/drivers/spi.h @tbursztyka
|
||||
@@ -652,16 +610,15 @@
|
||||
/include/zephyr/drivers/pm_cpu_ops.h @carlocaione
|
||||
/include/zephyr/drivers/pm_cpu_ops/ @carlocaione
|
||||
/include/zephyr/drivers/w1.h @str4t0m
|
||||
/include/zephyr/drivers/pwm/max31790.h @benediktibk
|
||||
/include/zephyr/app_memory/ @dcpleung
|
||||
/include/zephyr/arch/arc/ @abrodkin @ruuddw @evgeniy-paltsev
|
||||
/include/zephyr/arch/arc/arch.h @abrodkin @ruuddw @evgeniy-paltsev
|
||||
/include/zephyr/arch/arc/v2/irq.h @abrodkin @ruuddw @evgeniy-paltsev
|
||||
/include/zephyr/arch/arm @MaureenHelm @galak @ioannisg
|
||||
/include/zephyr/arch/arm/cortex_a_r/ @stephanosio
|
||||
/include/zephyr/arch/arm/aarch32/ @MaureenHelm @galak @ioannisg
|
||||
/include/zephyr/arch/arm/aarch32/cortex_a_r/ @stephanosio
|
||||
/include/zephyr/arch/arm64/ @carlocaione
|
||||
/include/zephyr/arch/arm64/cortex_r/ @povergoing
|
||||
/include/zephyr/arch/arm/irq.h @carlocaione
|
||||
/include/zephyr/arch/arm/aarch32/irq.h @carlocaione
|
||||
/include/zephyr/arch/mips/ @frantony
|
||||
/include/zephyr/arch/nios2/ @nashif
|
||||
/include/zephyr/arch/nios2/arch.h @nashif
|
||||
@@ -690,7 +647,6 @@
|
||||
/include/zephyr/dt-bindings/pinctrl/esp* @sylvioalves
|
||||
/include/zephyr/dt-bindings/pwm/*it8xxx2* @RuibinChang
|
||||
/include/zephyr/dt-bindings/usb/usb.h @galak
|
||||
/include/zephyr/dt-bindings/adc/ads114s0x_adc.h @benediktibk
|
||||
/include/zephyr/drivers/emul.h @sjg20
|
||||
/include/zephyr/fs/ @nashif @de-nordic
|
||||
/include/zephyr/init.h @nashif @andyross
|
||||
@@ -704,21 +660,17 @@
|
||||
/include/zephyr/lorawan/lorawan.h @Mani-Sadhasivam
|
||||
/include/zephyr/mgmt/osdp.h @sidcha
|
||||
/include/zephyr/mgmt/mcumgr/ @nordicjm
|
||||
/include/zephyr/net/ @rlubos @tbursztyka @jukkar
|
||||
/include/zephyr/net/buf.h @jhedberg @tbursztyka @rlubos @jukkar
|
||||
/include/zephyr/net/ @rlubos @tbursztyka
|
||||
/include/zephyr/net/buf.h @jhedberg @tbursztyka @rlubos
|
||||
/include/zephyr/net/coap*.h @rlubos
|
||||
/include/zephyr/net/conn_mgr*.h @rlubos @glarsennordic @jukkar
|
||||
/include/zephyr/net/gptp.h @rlubos @jukkar @fgrandel
|
||||
/include/zephyr/net/ieee802154*.h @rlubos @tbursztyka @jukkar @fgrandel
|
||||
/include/zephyr/net/lwm2m*.h @rlubos
|
||||
/include/zephyr/net/mqtt.h @rlubos
|
||||
/include/zephyr/net/mqtt_sn.h @rlubos @BeckmaR
|
||||
/include/zephyr/net/net_pkt_filter.h @npitre
|
||||
/include/zephyr/posix/ @cfreidt
|
||||
/include/zephyr/pm/pm.h @nashif @ceolin
|
||||
/include/zephyr/drivers/ptp_clock.h @tbursztyka @jukkar
|
||||
/include/zephyr/drivers/ptp_clock.h @tbursztyka
|
||||
/include/zephyr/rtio/ @teburd
|
||||
/include/zephyr/sensing/ @lixuzha @ghu0510 @qianruh
|
||||
/include/zephyr/shared_irq.h @dcpleung @nashif @andyross
|
||||
/include/zephyr/shell/ @jakub-uC @nordic-krch
|
||||
/include/zephyr/shell/shell_mqtt.h @ycsin
|
||||
@@ -742,7 +694,6 @@
|
||||
/lib/posix/ @cfriedt
|
||||
/lib/posix/getopt/ @jakub-uC
|
||||
/subsys/portability/ @nashif
|
||||
/subsys/sensing/ @lixuzha @ghu0510 @qianruh
|
||||
/lib/libc/ @nashif
|
||||
/lib/libc/arcmwdt/ @abrodkin @ruuddw @evgeniy-paltsev
|
||||
/misc/ @tejlmand
|
||||
@@ -768,21 +719,20 @@
|
||||
/samples/drivers/smbus/ @finikorg
|
||||
/samples/subsys/lorawan/ @Mani-Sadhasivam
|
||||
/samples/modules/canopennode/ @henrikbrixandersen
|
||||
/samples/net/ @rlubos @tbursztyka @jukkar
|
||||
/samples/net/ @rlubos @tbursztyka
|
||||
/samples/net/cloud/tagoio_http_post/ @nandojve
|
||||
/samples/net/dns_resolve/ @rlubos @tbursztyka @jukkar
|
||||
/samples/net/gptp/ @rlubos @jukkar @fgrandel
|
||||
/samples/net/dns_resolve/ @rlubos @tbursztyka
|
||||
/samples/net/lwm2m_client/ @rlubos
|
||||
/samples/net/mqtt_publisher/ @rlubos
|
||||
/samples/net/mqtt_sn_publisher/ @rlubos @BeckmaR
|
||||
/samples/net/sockets/coap_*/ @rlubos
|
||||
/samples/net/sockets/ @rlubos @tbursztyka @jukkar
|
||||
/samples/net/sockets/ @rlubos @tbursztyka
|
||||
/samples/sensor/ @MaureenHelm
|
||||
/samples/shields/ @avisconti
|
||||
/samples/subsys/ipc/ipc_service/icmsg @emob-nordic
|
||||
/samples/subsys/logging/ @nordic-krch @jakub-uC
|
||||
/samples/subsys/logging/syst/ @dcpleung
|
||||
/samples/subsys/shell/ @jakub-uC @nordic-krch @gdengi
|
||||
/samples/subsys/shell/ @jakub-uC @nordic-krch
|
||||
/samples/subsys/sip_svc/ @maheshraotm
|
||||
/samples/subsys/mgmt/mcumgr/ @de-nordic @nordicjm
|
||||
/samples/subsys/mgmt/updatehub/ @nandojve @otavio
|
||||
@@ -790,7 +740,6 @@
|
||||
/samples/subsys/usb/ @jfischer-no
|
||||
/samples/subsys/usb_c/ @sambhurst
|
||||
/samples/subsys/pm/ @nashif @ceolin
|
||||
/samples/subsys/sensing/ @lixuzha @ghu0510 @qianruh
|
||||
/samples/tfm_integration/ @microbuilder
|
||||
/samples/userspace/ @dcpleung @nashif
|
||||
/scripts/release/bug_bash.py @cfriedt
|
||||
@@ -800,13 +749,12 @@
|
||||
/scripts/footprint/ @nashif
|
||||
/scripts/kconfig/ @ulfalizer
|
||||
/scripts/logging/dictionary/ @dcpleung
|
||||
/scripts/native_simulator/ @aescolar
|
||||
/scripts/pylib/twister/expr_parser.py @nashif
|
||||
/scripts/schemas/twister/ @nashif
|
||||
/scripts/build/gen_app_partitions.py @dcpleung @nashif
|
||||
scripts/build/gen_image_info.py @tejlmand
|
||||
/scripts/get_maintainer.py @nashif
|
||||
/scripts/dts/ @mbolivar-ampere @galak
|
||||
/scripts/dts/ @mbolivar-nordic @galak
|
||||
/scripts/release/ @nashif
|
||||
/scripts/ci/ @nashif
|
||||
/scripts/ci/check_compliance.py @nashif @carlescufi
|
||||
@@ -815,11 +763,12 @@ scripts/build/gen_image_info.py @tejlmand
|
||||
/scripts/build/gen_kobject_list.py @dcpleung @nashif
|
||||
/scripts/build/gen_kobject_placeholders.py @dcpleung
|
||||
/scripts/build/gen_syscalls.py @dcpleung @nashif
|
||||
/scripts/list_boards.py @mbolivar-ampere
|
||||
/scripts/list_boards.py @mbolivar-nordic
|
||||
/scripts/build/process_gperf.py @dcpleung @nashif
|
||||
/scripts/build/gen_relocate_app.py @dcpleung
|
||||
/scripts/generate_usb_vif/ @madhurimaparuchuri
|
||||
/scripts/requirements*.txt @mbolivar-ampere @galak @nashif
|
||||
/scripts/requirements*.txt @mbolivar-nordic @galak @nashif
|
||||
/scripts/tests/twister/ @aasthagr
|
||||
/scripts/tests/build/test_subfolder_list.py @rmstoi
|
||||
/scripts/tracing/ @nashif
|
||||
/scripts/pylib/twister/ @nashif
|
||||
@@ -827,12 +776,12 @@ scripts/build/gen_image_info.py @tejlmand
|
||||
/scripts/series-push-hook.sh @erwango
|
||||
/scripts/utils/pinctrl_nrf_migrate.py @gmarull
|
||||
/scripts/utils/migrate_mcumgr_kconfigs.py @de-nordic
|
||||
/scripts/west_commands/ @mbolivar-ampere
|
||||
/scripts/west_commands/ @mbolivar-nordic
|
||||
/scripts/west_commands/blobs.py @carlescufi
|
||||
/scripts/west_commands/fetchers/ @carlescufi
|
||||
/scripts/west_commands/runners/gd32isp.py @mbolivar-ampere @nandojve
|
||||
/scripts/west_commands/tests/test_gd32isp.py @mbolivar-ampere @nandojve
|
||||
/scripts/west-commands.yml @mbolivar-ampere
|
||||
/scripts/west_commands/runners/gd32isp.py @mbolivar-nordic @nandojve
|
||||
/scripts/west_commands/tests/test_gd32isp.py @mbolivar-nordic @nandojve
|
||||
/scripts/west-commands.yml @mbolivar-nordic
|
||||
/scripts/zephyr_module.py @tejlmand
|
||||
/scripts/build/uf2conv.py @petejohanson
|
||||
/scripts/build/user_wordsize.py @cfriedt
|
||||
@@ -863,7 +812,7 @@ scripts/build/gen_image_info.py @tejlmand
|
||||
/subsys/ipc/ @carlocaione
|
||||
/subsys/ipc/ipc_service/*/*icmsg* @emob-nordic
|
||||
/subsys/logging/ @nordic-krch
|
||||
/subsys/logging/backends/log_backend_net.c @nordic-krch @rlubos @jukkar
|
||||
/subsys/logging/backends/log_backend_net.c @nordic-krch @rlubos
|
||||
/subsys/lorawan/ @Mani-Sadhasivam
|
||||
/subsys/mgmt/ec_host_cmd/ @jettr
|
||||
/subsys/mgmt/mcumgr/ @carlescufi @de-nordic @nordicjm
|
||||
@@ -871,22 +820,19 @@ scripts/build/gen_image_info.py @tejlmand
|
||||
/subsys/mgmt/updatehub/ @nandojve @otavio
|
||||
/subsys/mgmt/osdp/ @sidcha
|
||||
/subsys/modbus/ @jfischer-no
|
||||
/subsys/net/buf.c @jhedberg @tbursztyka @rlubos @jukkar
|
||||
/subsys/net/conn_mgr/ @rlubos @glarsennordic @jukkar
|
||||
/subsys/net/ip/ @rlubos @tbursztyka @jukkar
|
||||
/subsys/net/lib/ @rlubos @tbursztyka @jukkar
|
||||
/subsys/net/lib/dns/ @rlubos @tbursztyka @cfriedt @jukkar
|
||||
/subsys/net/buf.c @jhedberg @tbursztyka @rlubos
|
||||
/subsys/net/ip/ @rlubos @tbursztyka
|
||||
/subsys/net/lib/ @rlubos @tbursztyka
|
||||
/subsys/net/lib/dns/ @rlubos @tbursztyka @cfriedt
|
||||
/subsys/net/lib/lwm2m/ @rlubos
|
||||
/subsys/net/lib/config/ @rlubos @tbursztyka @jukkar
|
||||
/subsys/net/lib/config/ @rlubos @tbursztyka
|
||||
/subsys/net/lib/mqtt/ @rlubos
|
||||
/subsys/net/lib/mqtt_sn/ @rlubos @BeckmaR
|
||||
/subsys/net/lib/coap/ @rlubos
|
||||
/subsys/net/lib/sockets/socketpair.c @cfriedt
|
||||
/subsys/net/lib/sockets/ @rlubos @tbursztyka @jukkar
|
||||
/subsys/net/lib/sockets/ @rlubos @tbursztyka
|
||||
/subsys/net/lib/tls_credentials/ @rlubos
|
||||
/subsys/net/l2/ @rlubos @tbursztyka @jukkar
|
||||
/subsys/net/l2/ethernet/gptp/ @rlubos @jukkar @fgrandel
|
||||
/subsys/net/l2/ieee802154/ @rlubos @tbursztyka @jukkar @fgrandel
|
||||
/subsys/net/l2/ @rlubos @tbursztyka
|
||||
/subsys/net/l2/canbus/ @alexanderwachter
|
||||
/subsys/net/pkt_filter/ @npitre
|
||||
/subsys/net/*/openthread/ @rlubos
|
||||
@@ -907,7 +853,6 @@ scripts/build/gen_image_info.py @tejlmand
|
||||
/tests/benchmarks/cmsis_dsp/ @stephanosio
|
||||
/tests/boards/native_posix/ @aescolar @daor-oti
|
||||
/tests/bluetooth/ @alwa-nordic @jhedberg @Vudentz @sjanc
|
||||
/tests/bluetooth/audio/ @jhedberg @Vudentz @wopu-ot @Thalley
|
||||
/tests/bluetooth/controller/ @cvinayak @thoh-ot @kruithofa @erbr-ot @sjanc @ppryga
|
||||
/tests/bsim/bluetooth/ @alwa-nordic @jhedberg @Vudentz @wopu-ot
|
||||
/tests/bsim/bluetooth/audio/ @jhedberg @Vudentz @wopu-ot @Thalley
|
||||
@@ -930,20 +875,17 @@ scripts/build/gen_image_info.py @tejlmand
|
||||
/tests/kernel/ @dcpleung @andyross @nashif
|
||||
/tests/lib/ @nashif
|
||||
/tests/lib/cmsis_dsp/ @stephanosio
|
||||
/tests/net/ @rlubos @tbursztyka @jukkar
|
||||
/tests/net/buf/ @jhedberg @tbursztyka @jukkar
|
||||
/tests/net/conn_mgr_monitor/ @rlubos @glarsennordic @jukkar
|
||||
/tests/net/conn_mgr_conn/ @rlubos @glarsennordic @jukkar
|
||||
/tests/net/ieee802154/l2/ @rlubos @tbursztyka @jukkar @fgrandel
|
||||
/tests/net/lib/ @rlubos @tbursztyka @jukkar
|
||||
/tests/net/lib/http_header_fields/ @rlubos @tbursztyka @jukkar
|
||||
/tests/net/ @rlubos @tbursztyka
|
||||
/tests/net/buf/ @jhedberg @tbursztyka
|
||||
/tests/net/lib/ @rlubos @tbursztyka
|
||||
/tests/net/lib/http_header_fields/ @rlubos @tbursztyka
|
||||
/tests/net/lib/mqtt_packet/ @rlubos
|
||||
/tests/net/lib/mqtt_sn_packet/ @rlubos @BeckmaR
|
||||
/tests/net/lib/mqtt_sn_client/ @rlubos @BeckmaR
|
||||
/tests/net/lib/coap/ @rlubos
|
||||
/tests/net/npf/ @npitre
|
||||
/tests/net/socket/socketpair/ @cfriedt
|
||||
/tests/net/socket/ @rlubos @tbursztyka @jukkar
|
||||
/tests/net/socket/ @rlubos @tbursztyka
|
||||
/tests/subsys/debug/coredump/ @dcpleung
|
||||
/tests/subsys/fs/ @nashif @de-nordic
|
||||
/tests/subsys/mgmt/mcumgr/ @de-nordic @nordicjm
|
||||
|
||||
@@ -56,7 +56,7 @@ menu "Build and Link Features"
|
||||
|
||||
menu "Linker Options"
|
||||
|
||||
choice LINKER_ORPHAN_CONFIGURATION
|
||||
choice
|
||||
prompt "Linker Orphan Section Handling"
|
||||
default LINKER_ORPHAN_SECTION_WARN
|
||||
|
||||
@@ -316,30 +316,14 @@ config CODING_GUIDELINE_CHECK
|
||||
Use available compiler flags to check coding guideline rules during
|
||||
the build.
|
||||
|
||||
config NATIVE_BUILD
|
||||
bool
|
||||
config NATIVE_APPLICATION
|
||||
bool "Build as a native host application"
|
||||
select FULL_LIBC_SUPPORTED
|
||||
select FULL_LIBCPP_SUPPORTED if CPP
|
||||
help
|
||||
Zephyr will be built targeting the host system for debug and
|
||||
development purposes.
|
||||
|
||||
config NATIVE_APPLICATION
|
||||
bool
|
||||
default y if ARCH_POSIX
|
||||
depends on !NATIVE_LIBRARY
|
||||
select NATIVE_BUILD
|
||||
help
|
||||
Build as a native application that can run on the host and using
|
||||
resources and libraries provided by the host.
|
||||
|
||||
config NATIVE_LIBRARY
|
||||
bool
|
||||
select NATIVE_BUILD
|
||||
help
|
||||
Build as a prelinked library for the native host target.
|
||||
This library can later be built into an executable for the host.
|
||||
|
||||
config COMPILER_FREESTANDING
|
||||
bool "Build in a freestanding compiler mode"
|
||||
help
|
||||
@@ -414,7 +398,7 @@ config COMPILER_COLOR_DIAGNOSTICS
|
||||
|
||||
choice COMPILER_SECURITY_FORTIFY
|
||||
prompt "Detect buffer overflows in libc calls"
|
||||
default FORTIFY_SOURCE_NONE if NO_OPTIMIZATIONS || MINIMAL_LIBC || NATIVE_BUILD
|
||||
default FORTIFY_SOURCE_NONE if NO_OPTIMIZATIONS || MINIMAL_LIBC || NATIVE_APPLICATION
|
||||
default FORTIFY_SOURCE_COMPILE_TIME
|
||||
help
|
||||
Buffer overflow checking in libc calls. Supported by Clang and
|
||||
@@ -507,6 +491,7 @@ config OUTPUT_SYMBOLS
|
||||
|
||||
config OUTPUT_DISASSEMBLY
|
||||
bool "Create a disassembly file"
|
||||
default y
|
||||
help
|
||||
Create an .lst file with the assembly listing of the firmware.
|
||||
|
||||
@@ -536,8 +521,7 @@ config CLEANUP_INTERMEDIATE_FILES
|
||||
bool "Remove all intermediate files"
|
||||
help
|
||||
Delete intermediate files to save space and cleanup clutter resulting
|
||||
from the build process. Note this breaks incremental builds, west spdx
|
||||
(Software Bill of Material generation), and maybe others.
|
||||
from the build process.
|
||||
|
||||
config BUILD_NO_GAP_FILL
|
||||
bool "Don't fill gaps in generated hex/bin/s19 files."
|
||||
@@ -593,7 +577,7 @@ if BUILD_OUTPUT_UF2
|
||||
|
||||
config BUILD_OUTPUT_UF2_FAMILY_ID
|
||||
string "UF2 device family ID"
|
||||
default "0x1c5f21b0" if SOC_SERIES_ESP32
|
||||
default "0x1c5f21b0" if SOC_ESP32
|
||||
default "0x621e937a" if SOC_NRF52833_QIAA
|
||||
default "0xada52840" if SOC_NRF52840_QIAA
|
||||
default "0x4fb2d5bd" if SOC_SERIES_IMX_RT
|
||||
@@ -674,15 +658,6 @@ config BUILD_OUTPUT_INFO_HEADER
|
||||
- VMA address of each segment
|
||||
- Size of each segment
|
||||
|
||||
config BUILD_ALIGN_LMA
|
||||
bool "Align LMA in output image"
|
||||
default y if BUILD_OUTPUT_ADJUST_LMA!=""
|
||||
help
|
||||
Ensure that the LMA for each section in the output image respects
|
||||
the alignment requirements of that section. This is required for
|
||||
some tooling, such as objcopy, to be able to adjust the LMA of the
|
||||
ELF file.
|
||||
|
||||
config APPLICATION_DEFINED_SYSCALL
|
||||
bool "Scan application folder for any syscall definition"
|
||||
help
|
||||
@@ -746,9 +721,6 @@ config BUILD_OUTPUT_STRIP_PATHS
|
||||
|
||||
config CHECK_INIT_PRIORITIES
|
||||
bool "Build time initialization priorities check"
|
||||
default y
|
||||
depends on !NATIVE_LIBRARY
|
||||
depends on "$(ZEPHYR_TOOLCHAIN_VARIANT)" != "armclang"
|
||||
help
|
||||
Check the build for initialization priority issues by comparing the
|
||||
initialization priority in the build with the device dependency
|
||||
@@ -766,13 +738,6 @@ config CHECK_INIT_PRIORITIES_FAIL_ON_WARNING
|
||||
devices depending on each other but initialized with the same
|
||||
priority.
|
||||
|
||||
config EMIT_ALL_SYSCALLS
|
||||
bool "Emit all possible syscalls in the tree"
|
||||
help
|
||||
This tells the build system to emit all possible syscalls found
|
||||
in the tree, instead of only those syscalls associated with enabled
|
||||
drivers and subsystems.
|
||||
|
||||
endmenu
|
||||
|
||||
config DEPRECATED
|
||||
@@ -839,7 +804,7 @@ config IS_BOOTLOADER
|
||||
|
||||
config BOOTLOADER_SRAM_SIZE
|
||||
int "SRAM reserved for bootloader"
|
||||
default 0
|
||||
default 16
|
||||
depends on !XIP || IS_BOOTLOADER
|
||||
depends on ARM || XTENSA
|
||||
help
|
||||
|
||||
546
MAINTAINERS.yml
546
MAINTAINERS.yml
File diff suppressed because it is too large
Load Diff
2
VERSION
2
VERSION
@@ -1,5 +1,5 @@
|
||||
VERSION_MAJOR = 3
|
||||
VERSION_MINOR = 4
|
||||
PATCHLEVEL = 99
|
||||
PATCHLEVEL = 0
|
||||
VERSION_TWEAK = 0
|
||||
EXTRAVERSION =
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
# FIXME: SHADOW_VARS: Remove this once we have enabled -Wshadow globally.
|
||||
add_compile_options($<TARGET_PROPERTY:compiler,warning_shadow_variables>)
|
||||
|
||||
add_definitions(-D__ZEPHYR_SUPERVISOR__)
|
||||
|
||||
include_directories(
|
||||
|
||||
27
arch/Kconfig
27
arch/Kconfig
@@ -43,7 +43,6 @@ config ARM64
|
||||
select ARCH_IS_SET
|
||||
select 64BIT
|
||||
select HAS_DTS
|
||||
select ARCH_SUPPORTS_COREDUMP
|
||||
select HAS_ARM_SMCCC
|
||||
select ARCH_HAS_THREAD_LOCAL_STORAGE
|
||||
select USE_SWITCH
|
||||
@@ -92,7 +91,6 @@ config X86
|
||||
select NEED_LIBC_MEM_PARTITION if USERSPACE && TIMING_FUNCTIONS \
|
||||
&& !BOARD_HAS_TIMING_FUNCTIONS \
|
||||
&& !SOC_HAS_TIMING_FUNCTIONS
|
||||
select ARCH_HAS_STACK_CANARIES_TLS
|
||||
help
|
||||
x86 architecture
|
||||
|
||||
@@ -143,7 +141,7 @@ config ARCH_POSIX
|
||||
select ARCH_HAS_CUSTOM_SWAP_TO_MAIN
|
||||
select ARCH_HAS_CUSTOM_BUSY_WAIT
|
||||
select ARCH_HAS_THREAD_ABORT
|
||||
select NATIVE_BUILD
|
||||
select NATIVE_APPLICATION
|
||||
select HAS_COVERAGE_SUPPORT
|
||||
select BARRIER_OPERATIONS_BUILTIN
|
||||
help
|
||||
@@ -403,23 +401,6 @@ config DYNAMIC_INTERRUPTS
|
||||
interrupt-related data structures to RAM instead of ROM, and
|
||||
on some architectures increase code size.
|
||||
|
||||
config SHARED_INTERRUPTS
|
||||
bool "Set this to enable support for shared interrupts"
|
||||
depends on GEN_SW_ISR_TABLE
|
||||
select EXPERIMENTAL
|
||||
help
|
||||
Set this to enable support for shared interrupts. Use this with
|
||||
caution as enabling this will increase the image size by a
|
||||
non-negligible amount.
|
||||
|
||||
config SHARED_IRQ_MAX_NUM_CLIENTS
|
||||
int "Maximum number of clients allowed per shared interrupt"
|
||||
default 2
|
||||
depends on SHARED_INTERRUPTS
|
||||
help
|
||||
This option controls the maximum number of clients allowed
|
||||
per shared interrupt. Set this according to your needs.
|
||||
|
||||
config GEN_ISR_TABLES
|
||||
bool "Use generated IRQ tables"
|
||||
help
|
||||
@@ -480,14 +461,13 @@ config GEN_SW_ISR_TABLE
|
||||
|
||||
config ARCH_SW_ISR_TABLE_ALIGN
|
||||
int "Alignment size of a software ISR table"
|
||||
default 64 if RISCV_HAS_CLIC
|
||||
default 4
|
||||
depends on GEN_SW_ISR_TABLE
|
||||
help
|
||||
This option controls alignment size of generated
|
||||
_sw_isr_table. Some architecture needs a software ISR table
|
||||
to be aligned to architecture specific size. The default
|
||||
size is 4.
|
||||
size is 0 for no alignment.
|
||||
|
||||
config GEN_IRQ_START_VECTOR
|
||||
int
|
||||
@@ -618,9 +598,6 @@ config ARCH_HAS_SUSPEND_TO_RAM
|
||||
help
|
||||
When selected, the architecture supports suspend-to-RAM (S2RAM).
|
||||
|
||||
config ARCH_HAS_STACK_CANARIES_TLS
|
||||
bool
|
||||
|
||||
#
|
||||
# Other architecture related options
|
||||
#
|
||||
|
||||
@@ -20,7 +20,7 @@ static struct k_spinlock arc_connect_spinlock;
|
||||
/* Generate an inter-core interrupt to the target core */
|
||||
void z_arc_connect_ici_generate(uint32_t core)
|
||||
{
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd(ARC_CONNECT_CMD_INTRPT_GENERATE_IRQ, core);
|
||||
}
|
||||
}
|
||||
@@ -28,7 +28,7 @@ void z_arc_connect_ici_generate(uint32_t core)
|
||||
/* Acknowledge the inter-core interrupt raised by core */
|
||||
void z_arc_connect_ici_ack(uint32_t core)
|
||||
{
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd(ARC_CONNECT_CMD_INTRPT_GENERATE_ACK, core);
|
||||
}
|
||||
}
|
||||
@@ -38,7 +38,7 @@ uint32_t z_arc_connect_ici_read_status(uint32_t core)
|
||||
{
|
||||
uint32_t ret = 0;
|
||||
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd(ARC_CONNECT_CMD_INTRPT_READ_STATUS, core);
|
||||
ret = z_arc_connect_cmd_readback();
|
||||
}
|
||||
@@ -51,7 +51,7 @@ uint32_t z_arc_connect_ici_check_src(void)
|
||||
{
|
||||
uint32_t ret = 0;
|
||||
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd(ARC_CONNECT_CMD_INTRPT_CHECK_SOURCE, 0);
|
||||
ret = z_arc_connect_cmd_readback();
|
||||
}
|
||||
@@ -64,7 +64,7 @@ void z_arc_connect_ici_clear(void)
|
||||
{
|
||||
uint32_t cpu, c;
|
||||
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
|
||||
z_arc_connect_cmd(ARC_CONNECT_CMD_INTRPT_CHECK_SOURCE, 0);
|
||||
cpu = z_arc_connect_cmd_readback(); /* 1,2,4,8... */
|
||||
@@ -85,7 +85,7 @@ void z_arc_connect_ici_clear(void)
|
||||
/* Reset the cores in core_mask */
|
||||
void z_arc_connect_debug_reset(uint32_t core_mask)
|
||||
{
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd_data(ARC_CONNECT_CMD_DEBUG_RESET,
|
||||
0, core_mask);
|
||||
}
|
||||
@@ -94,7 +94,7 @@ void z_arc_connect_debug_reset(uint32_t core_mask)
|
||||
/* Halt the cores in core_mask */
|
||||
void z_arc_connect_debug_halt(uint32_t core_mask)
|
||||
{
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd_data(ARC_CONNECT_CMD_DEBUG_HALT,
|
||||
0, core_mask);
|
||||
}
|
||||
@@ -103,7 +103,7 @@ void z_arc_connect_debug_halt(uint32_t core_mask)
|
||||
/* Run the cores in core_mask */
|
||||
void z_arc_connect_debug_run(uint32_t core_mask)
|
||||
{
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd_data(ARC_CONNECT_CMD_DEBUG_RUN,
|
||||
0, core_mask);
|
||||
}
|
||||
@@ -112,7 +112,7 @@ void z_arc_connect_debug_run(uint32_t core_mask)
|
||||
/* Set core mask */
|
||||
void z_arc_connect_debug_mask_set(uint32_t core_mask, uint32_t mask)
|
||||
{
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd_data(ARC_CONNECT_CMD_DEBUG_SET_MASK,
|
||||
mask, core_mask);
|
||||
}
|
||||
@@ -123,7 +123,7 @@ uint32_t z_arc_connect_debug_mask_read(uint32_t core_mask)
|
||||
{
|
||||
uint32_t ret = 0;
|
||||
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd_data(ARC_CONNECT_CMD_DEBUG_READ_MASK,
|
||||
0, core_mask);
|
||||
ret = z_arc_connect_cmd_readback();
|
||||
@@ -137,7 +137,7 @@ uint32_t z_arc_connect_debug_mask_read(uint32_t core_mask)
|
||||
*/
|
||||
void z_arc_connect_debug_select_set(uint32_t core_mask)
|
||||
{
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd_data(ARC_CONNECT_CMD_DEBUG_SET_SELECT,
|
||||
0, core_mask);
|
||||
}
|
||||
@@ -148,7 +148,7 @@ uint32_t z_arc_connect_debug_select_read(void)
|
||||
{
|
||||
uint32_t ret = 0;
|
||||
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd(ARC_CONNECT_CMD_DEBUG_READ_SELECT, 0);
|
||||
ret = z_arc_connect_cmd_readback();
|
||||
}
|
||||
@@ -161,7 +161,7 @@ uint32_t z_arc_connect_debug_en_read(void)
|
||||
{
|
||||
uint32_t ret = 0;
|
||||
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd(ARC_CONNECT_CMD_DEBUG_READ_EN, 0);
|
||||
ret = z_arc_connect_cmd_readback();
|
||||
}
|
||||
@@ -174,7 +174,7 @@ uint32_t z_arc_connect_debug_cmd_read(void)
|
||||
{
|
||||
uint32_t ret = 0;
|
||||
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd(ARC_CONNECT_CMD_DEBUG_READ_CMD, 0);
|
||||
ret = z_arc_connect_cmd_readback();
|
||||
}
|
||||
@@ -187,7 +187,7 @@ uint32_t z_arc_connect_debug_core_read(void)
|
||||
{
|
||||
uint32_t ret = 0;
|
||||
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd(ARC_CONNECT_CMD_DEBUG_READ_CORE, 0);
|
||||
ret = z_arc_connect_cmd_readback();
|
||||
}
|
||||
@@ -198,7 +198,7 @@ uint32_t z_arc_connect_debug_core_read(void)
|
||||
/* Clear global free running counter */
|
||||
void z_arc_connect_gfrc_clear(void)
|
||||
{
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd(ARC_CONNECT_CMD_GFRC_CLEAR, 0);
|
||||
}
|
||||
}
|
||||
@@ -233,7 +233,7 @@ uint64_t z_arc_connect_gfrc_read(void)
|
||||
/* Enable global free running counter */
|
||||
void z_arc_connect_gfrc_enable(void)
|
||||
{
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd(ARC_CONNECT_CMD_GFRC_ENABLE, 0);
|
||||
}
|
||||
}
|
||||
@@ -241,7 +241,7 @@ void z_arc_connect_gfrc_enable(void)
|
||||
/* Disable global free running counter */
|
||||
void z_arc_connect_gfrc_disable(void)
|
||||
{
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd(ARC_CONNECT_CMD_GFRC_DISABLE, 0);
|
||||
}
|
||||
}
|
||||
@@ -249,7 +249,7 @@ void z_arc_connect_gfrc_disable(void)
|
||||
/* Disable global free running counter */
|
||||
void z_arc_connect_gfrc_core_set(uint32_t core_mask)
|
||||
{
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd_data(ARC_CONNECT_CMD_GFRC_SET_CORE,
|
||||
0, core_mask);
|
||||
}
|
||||
@@ -260,7 +260,7 @@ uint32_t z_arc_connect_gfrc_halt_read(void)
|
||||
{
|
||||
uint32_t ret = 0;
|
||||
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd(ARC_CONNECT_CMD_GFRC_READ_HALT, 0);
|
||||
ret = z_arc_connect_cmd_readback();
|
||||
}
|
||||
@@ -273,7 +273,7 @@ uint32_t z_arc_connect_gfrc_core_read(void)
|
||||
{
|
||||
uint32_t ret = 0;
|
||||
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd(ARC_CONNECT_CMD_GFRC_READ_CORE, 0);
|
||||
ret = z_arc_connect_cmd_readback();
|
||||
}
|
||||
@@ -284,7 +284,7 @@ uint32_t z_arc_connect_gfrc_core_read(void)
|
||||
/* Enable interrupt distribute unit */
|
||||
void z_arc_connect_idu_enable(void)
|
||||
{
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd(ARC_CONNECT_CMD_IDU_ENABLE, 0);
|
||||
}
|
||||
}
|
||||
@@ -292,7 +292,7 @@ void z_arc_connect_idu_enable(void)
|
||||
/* Disable interrupt distribute unit */
|
||||
void z_arc_connect_idu_disable(void)
|
||||
{
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd(ARC_CONNECT_CMD_IDU_DISABLE, 0);
|
||||
}
|
||||
}
|
||||
@@ -302,7 +302,7 @@ uint32_t z_arc_connect_idu_read_enable(void)
|
||||
{
|
||||
uint32_t ret = 0;
|
||||
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd(ARC_CONNECT_CMD_IDU_READ_ENABLE, 0);
|
||||
ret = z_arc_connect_cmd_readback();
|
||||
}
|
||||
@@ -317,7 +317,7 @@ uint32_t z_arc_connect_idu_read_enable(void)
|
||||
void z_arc_connect_idu_set_mode(uint32_t irq_num,
|
||||
uint16_t trigger_mode, uint16_t distri_mode)
|
||||
{
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd_data(ARC_CONNECT_CMD_IDU_SET_MODE,
|
||||
irq_num, (distri_mode | (trigger_mode << 4)));
|
||||
}
|
||||
@@ -328,7 +328,7 @@ uint32_t z_arc_connect_idu_read_mode(uint32_t irq_num)
|
||||
{
|
||||
uint32_t ret = 0;
|
||||
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd(ARC_CONNECT_CMD_IDU_READ_MODE, irq_num);
|
||||
ret = z_arc_connect_cmd_readback();
|
||||
}
|
||||
@@ -342,7 +342,7 @@ uint32_t z_arc_connect_idu_read_mode(uint32_t irq_num)
|
||||
*/
|
||||
void z_arc_connect_idu_set_dest(uint32_t irq_num, uint32_t core_mask)
|
||||
{
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd_data(ARC_CONNECT_CMD_IDU_SET_DEST,
|
||||
irq_num, core_mask);
|
||||
}
|
||||
@@ -353,7 +353,7 @@ uint32_t z_arc_connect_idu_read_dest(uint32_t irq_num)
|
||||
{
|
||||
uint32_t ret = 0;
|
||||
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd(ARC_CONNECT_CMD_IDU_READ_DEST, irq_num);
|
||||
ret = z_arc_connect_cmd_readback();
|
||||
}
|
||||
@@ -364,7 +364,7 @@ uint32_t z_arc_connect_idu_read_dest(uint32_t irq_num)
|
||||
/* Assert the specified common interrupt */
|
||||
void z_arc_connect_idu_gen_cirq(uint32_t irq_num)
|
||||
{
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd(ARC_CONNECT_CMD_IDU_GEN_CIRQ, irq_num);
|
||||
}
|
||||
}
|
||||
@@ -372,7 +372,7 @@ void z_arc_connect_idu_gen_cirq(uint32_t irq_num)
|
||||
/* Acknowledge the specified common interrupt */
|
||||
void z_arc_connect_idu_ack_cirq(uint32_t irq_num)
|
||||
{
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd(ARC_CONNECT_CMD_IDU_ACK_CIRQ, irq_num);
|
||||
}
|
||||
}
|
||||
@@ -382,7 +382,7 @@ uint32_t z_arc_connect_idu_check_status(uint32_t irq_num)
|
||||
{
|
||||
uint32_t ret = 0;
|
||||
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd(ARC_CONNECT_CMD_IDU_CHECK_STATUS, irq_num);
|
||||
ret = z_arc_connect_cmd_readback();
|
||||
}
|
||||
@@ -395,7 +395,7 @@ uint32_t z_arc_connect_idu_check_source(uint32_t irq_num)
|
||||
{
|
||||
uint32_t ret = 0;
|
||||
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd(ARC_CONNECT_CMD_IDU_CHECK_SOURCE, irq_num);
|
||||
ret = z_arc_connect_cmd_readback();
|
||||
}
|
||||
@@ -406,7 +406,7 @@ uint32_t z_arc_connect_idu_check_source(uint32_t irq_num)
|
||||
/* Mask or unmask the specified common interrupt */
|
||||
void z_arc_connect_idu_set_mask(uint32_t irq_num, uint32_t mask)
|
||||
{
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd_data(ARC_CONNECT_CMD_IDU_SET_MASK,
|
||||
irq_num, mask);
|
||||
}
|
||||
@@ -417,7 +417,7 @@ uint32_t z_arc_connect_idu_read_mask(uint32_t irq_num)
|
||||
{
|
||||
uint32_t ret = 0;
|
||||
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd(ARC_CONNECT_CMD_IDU_READ_MASK, irq_num);
|
||||
ret = z_arc_connect_cmd_readback();
|
||||
}
|
||||
@@ -433,7 +433,7 @@ uint32_t z_arc_connect_idu_check_first(uint32_t irq_num)
|
||||
{
|
||||
uint32_t ret = 0;
|
||||
|
||||
K_SPINLOCK(&arc_connect_spinlock) {
|
||||
LOCKED(&arc_connect_spinlock) {
|
||||
z_arc_connect_cmd(ARC_CONNECT_CMD_IDU_CHECK_FIRST, irq_num);
|
||||
ret = z_arc_connect_cmd_readback();
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
#include <zephyr/kernel.h>
|
||||
#include <kernel_internal.h>
|
||||
#include <zephyr/kernel_structs.h>
|
||||
#include <zephyr/arch/common/exc_handle.h>
|
||||
#include <zephyr/exc_handle.h>
|
||||
#include <zephyr/logging/log.h>
|
||||
LOG_MODULE_DECLARE(os, CONFIG_KERNEL_LOG_LEVEL);
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include <zephyr/kernel.h>
|
||||
#include <ksched.h>
|
||||
#include <offsets_short.h>
|
||||
#include <zephyr/wait_q.h>
|
||||
|
||||
#ifdef CONFIG_USERSPACE
|
||||
#include <zephyr/arch/arc/v2/mpu/arc_core_mpu.h>
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
set_property(GLOBAL PROPERTY PROPERTY_OUTPUT_FORMAT elf32-littlearm)
|
||||
|
||||
add_subdirectory(core)
|
||||
add_subdirectory(core/aarch32)
|
||||
|
||||
@@ -53,23 +53,7 @@ config ARM_ON_ENTER_CPU_IDLE_HOOK
|
||||
If needed, this hook can be used to prevent the CPU from actually
|
||||
entering sleep by skipping the WFE/WFI instruction.
|
||||
|
||||
config ARM_ON_EXIT_CPU_IDLE
|
||||
bool
|
||||
help
|
||||
Enables a possibility to inject SoC-specific code just after WFI/WFE
|
||||
instructions of the cpu idle implementation.
|
||||
|
||||
Enabling this option requires that the SoC provides a soc_cpu_idle.h
|
||||
header file which defines SOC_ON_EXIT_CPU_IDLE macro guarded by
|
||||
_ASMLANGUAGE.
|
||||
|
||||
The SOC_ON_EXIT_CPU_IDLE macro is expanded just after
|
||||
WFI/WFE instructions before any memory access is performed. The purpose
|
||||
of the SOC_ON_EXIT_CPU_IDLE is to perform an action that mitigate issues
|
||||
observed on some SoCs caused by a memory access following WFI/WFE
|
||||
instructions.
|
||||
|
||||
rsource "core/Kconfig"
|
||||
rsource "core/Kconfig.vfp"
|
||||
rsource "core/aarch32/Kconfig"
|
||||
rsource "core/aarch32/Kconfig.vfp"
|
||||
|
||||
endmenu
|
||||
|
||||
@@ -3,14 +3,22 @@
|
||||
zephyr_library()
|
||||
|
||||
zephyr_library_sources(
|
||||
cpu_idle.S
|
||||
fatal.c
|
||||
irq_manage.c
|
||||
nmi.c
|
||||
nmi_on_reset.S
|
||||
prep_c.c
|
||||
swap.c
|
||||
swap_helper.S
|
||||
thread.c
|
||||
)
|
||||
|
||||
zephyr_library_sources_ifdef(CONFIG_GEN_SW_ISR_TABLE isr_wrapper.S)
|
||||
zephyr_library_sources_ifdef(CONFIG_CPP __aeabi_atexit.c)
|
||||
zephyr_library_sources_ifdef(CONFIG_IRQ_OFFLOAD irq_offload.c)
|
||||
zephyr_library_sources_ifdef(CONFIG_THREAD_LOCAL_STORAGE tls.c)
|
||||
zephyr_library_sources_ifdef(CONFIG_SW_VECTOR_RELAY irq_relay.S)
|
||||
zephyr_library_sources_ifdef(CONFIG_THREAD_LOCAL_STORAGE ../common/tls.c)
|
||||
zephyr_library_sources_ifdef(CONFIG_USERSPACE userspace.S)
|
||||
zephyr_library_sources_ifdef(CONFIG_ARM_ZIMAGE_HEADER header.S)
|
||||
|
||||
@@ -289,7 +289,7 @@ config FP16
|
||||
help
|
||||
This option enables the half-precision (16-bit) floating point support
|
||||
via the `__fp16` (both IEEE and ARM alternative formats) and the
|
||||
`_Float16` (defined by ISO/IEC TS 18661-3:2015) types.
|
||||
`_Float16` (IEEE format only) types.
|
||||
|
||||
choice
|
||||
prompt "FP16 format"
|
||||
@@ -312,8 +312,6 @@ config FP16_ALT
|
||||
so that this format can represent normalized values in the range of
|
||||
2^(-14) to 131008.
|
||||
|
||||
Please note that Clang doesn't support the ARM alternative format.
|
||||
|
||||
endchoice
|
||||
|
||||
rsource "cortex_m/Kconfig"
|
||||
@@ -10,8 +10,6 @@
|
||||
config CPU_HAS_VFP
|
||||
bool
|
||||
select CPU_HAS_FPU
|
||||
imply FPU
|
||||
imply FPU_SHARING
|
||||
help
|
||||
This option signifies the support for a Vectored Floating-Point (VFP)
|
||||
coprocessor.
|
||||
@@ -156,7 +154,6 @@ config VFP_FEATURE_SINGLE_PRECISION
|
||||
|
||||
config VFP_FEATURE_DOUBLE_PRECISION
|
||||
bool
|
||||
select CPU_HAS_FPU_DOUBLE_PRECISION
|
||||
help
|
||||
This option signifies that the VFP coprocessor supports
|
||||
double-precision operations.
|
||||
@@ -12,15 +12,8 @@ zephyr_library_sources(
|
||||
stacks.c
|
||||
tcm.c
|
||||
vector_table.S
|
||||
swap.c
|
||||
swap_helper.S
|
||||
irq_manage.c
|
||||
prep_c.c
|
||||
thread.c
|
||||
cpu_idle.S
|
||||
)
|
||||
|
||||
zephyr_library_sources_ifdef(CONFIG_GEN_SW_ISR_TABLE isr_wrapper.S)
|
||||
zephyr_library_sources_ifdef(CONFIG_USERSPACE thread.c)
|
||||
zephyr_library_sources_ifdef(CONFIG_SEMIHOST semihost.c)
|
||||
zephyr_library_sources_ifdef(CONFIG_THREAD_LOCAL_STORAGE __aeabi_read_tp.S)
|
||||
@@ -99,7 +99,6 @@ config CPU_CORTEX_R52
|
||||
select AARCH32_ARMV8_R
|
||||
select CPU_HAS_ICACHE
|
||||
select CPU_HAS_DCACHE
|
||||
select VFP_SP_D16
|
||||
help
|
||||
This option signifies the use of a Cortex-R52 CPU
|
||||
|
||||
@@ -14,15 +14,13 @@
|
||||
|
||||
#include <zephyr/kernel.h>
|
||||
#include <zephyr/cache.h>
|
||||
#include <cmsis_core.h>
|
||||
#include <zephyr/arch/arm/aarch32/cortex_a_r/cmsis.h>
|
||||
#include <zephyr/sys/barrier.h>
|
||||
|
||||
/* Cache Type Register */
|
||||
#define CTR_DMINLINE_SHIFT 16
|
||||
#define CTR_DMINLINE_MASK BIT_MASK(4)
|
||||
|
||||
#ifdef CONFIG_DCACHE
|
||||
|
||||
static size_t dcache_line_size;
|
||||
|
||||
/**
|
||||
@@ -167,10 +165,6 @@ int arch_dcache_flush_and_invd_range(void *start_addr, size_t size)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ICACHE
|
||||
|
||||
void arch_icache_enable(void)
|
||||
{
|
||||
arch_icache_invd_all();
|
||||
@@ -215,5 +209,3 @@ int arch_icache_flush_and_invd_range(void *start_addr, size_t size)
|
||||
{
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -60,9 +60,6 @@ GTEXT(z_arm_data_abort)
|
||||
|
||||
mov r2, sp
|
||||
vstmia r2!, {s0-s15}
|
||||
#ifdef CONFIG_VFP_FEATURE_REGS_S64_D32
|
||||
vstmia r2!, {d16-d31}
|
||||
#endif
|
||||
stm r2, {r0, r1}
|
||||
#endif
|
||||
|
||||
@@ -147,9 +144,6 @@ SECTION_SUBSEC_FUNC(TEXT, __exc, z_arm_undef_instruction)
|
||||
|
||||
mov r2, sp
|
||||
vstmia r2!, {s0-s15}
|
||||
#ifdef CONFIG_VFP_FEATURE_REGS_S64_D32
|
||||
vstmia r2!, {d16-d31}
|
||||
#endif
|
||||
stm r2, {r0, r1}
|
||||
#endif
|
||||
|
||||
@@ -23,7 +23,7 @@ _ASM_FILE_PROLOGUE
|
||||
|
||||
GTEXT(z_arm_exc_exit)
|
||||
GTEXT(z_arm_int_exit)
|
||||
GTEXT(z_arm_do_swap)
|
||||
GTEXT(z_arm_pendsv)
|
||||
GDATA(_kernel)
|
||||
|
||||
.macro userspace_exc_exit
|
||||
@@ -90,11 +90,7 @@ vfp_restore\@:
|
||||
|
||||
vmsr fpexc, r2
|
||||
vmsr fpscr, r1
|
||||
mov r3, sp
|
||||
vldmia r3!, {s0-s15}
|
||||
#ifdef CONFIG_VFP_FEATURE_REGS_S64_D32
|
||||
vldmia r3!, {d16-d31}
|
||||
#endif
|
||||
vldmia sp, {s0-s15}
|
||||
|
||||
vfp_exit\@:
|
||||
/* Leave the VFP disabled when leaving */
|
||||
@@ -148,7 +144,7 @@ SECTION_SUBSEC_FUNC(TEXT, _HandlerModeExit, z_arm_int_exit)
|
||||
ldr r1, [r3, #_kernel_offset_to_current]
|
||||
ldr r0, [r3, #_kernel_offset_to_ready_q_cache]
|
||||
cmp r0, r1
|
||||
blne z_arm_do_swap
|
||||
blne z_arm_pendsv
|
||||
__EXIT_INT:
|
||||
#endif /* CONFIG_PREEMPT_ENABLED */
|
||||
|
||||
@@ -231,12 +227,12 @@ SECTION_SUBSEC_FUNC(TEXT, _HandlerModeExit, z_arm_exc_exit)
|
||||
/*
|
||||
* Switch in the next scheduled thread.
|
||||
*
|
||||
* Note that z_arm_do_swap must be called in the SVC mode because it
|
||||
* Note that z_arm_pendsv must be called in the SVC mode because it
|
||||
* switches to the SVC mode during context switch and returns to the
|
||||
* caller using lr_svc.
|
||||
*/
|
||||
cps #MODE_SVC
|
||||
bl z_arm_do_swap
|
||||
bl z_arm_pendsv
|
||||
|
||||
/* Decrement exception nesting count */
|
||||
ldr r3, =_kernel
|
||||
@@ -1,14 +1,13 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Stephanos Ioannidis <root@stephanos.io>
|
||||
* Copyright (c) 2018 Lexmark International, Inc.
|
||||
* Copyright 2023 NXP
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <zephyr/kernel.h>
|
||||
#include <kernel_internal.h>
|
||||
#include <zephyr/arch/common/exc_handle.h>
|
||||
#include <zephyr/exc_handle.h>
|
||||
#include <zephyr/logging/log.h>
|
||||
LOG_MODULE_DECLARE(os, CONFIG_KERNEL_LOG_LEVEL);
|
||||
|
||||
@@ -53,7 +52,7 @@ static uint32_t dump_fault(uint32_t status, uint32_t addr)
|
||||
{
|
||||
uint32_t reason = K_ERR_CPU_EXCEPTION;
|
||||
/*
|
||||
* Dump fault status and, if applicable, status-specific information.
|
||||
* Dump fault status and, if applicable, tatus-specific information.
|
||||
* Note that the fault address is only displayed for the synchronous
|
||||
* faults because it is unpredictable for asynchronous faults.
|
||||
*/
|
||||
@@ -62,6 +61,10 @@ static uint32_t dump_fault(uint32_t status, uint32_t addr)
|
||||
reason = K_ERR_ARM_ALIGNMENT_FAULT;
|
||||
LOG_ERR("Alignment Fault @ 0x%08x", addr);
|
||||
break;
|
||||
case FSR_FS_BACKGROUND_FAULT:
|
||||
reason = K_ERR_ARM_BACKGROUND_FAULT;
|
||||
LOG_ERR("Background Fault @ 0x%08x", addr);
|
||||
break;
|
||||
case FSR_FS_PERMISSION_FAULT:
|
||||
reason = K_ERR_ARM_PERMISSION_FAULT;
|
||||
LOG_ERR("Permission Fault @ 0x%08x", addr);
|
||||
@@ -86,21 +89,6 @@ static uint32_t dump_fault(uint32_t status, uint32_t addr)
|
||||
reason = K_ERR_ARM_DEBUG_EVENT;
|
||||
dump_debug_event();
|
||||
break;
|
||||
#if defined(CONFIG_AARCH32_ARMV8_R)
|
||||
case FSR_FS_TRANSLATION_FAULT:
|
||||
reason = K_ERR_ARM_TRANSLATION_FAULT;
|
||||
LOG_ERR("Translation Fault @ 0x%08x", addr);
|
||||
break;
|
||||
case FSR_FS_UNSUPPORTED_EXCLUSIVE_ACCESS_FAULT:
|
||||
reason = K_ERR_ARM_UNSUPPORTED_EXCLUSIVE_ACCESS_FAULT;
|
||||
LOG_ERR("Unsupported Exclusive Access Fault @ 0x%08x", addr);
|
||||
break;
|
||||
#else
|
||||
case FSR_FS_BACKGROUND_FAULT:
|
||||
reason = K_ERR_ARM_BACKGROUND_FAULT;
|
||||
LOG_ERR("Background Fault @ 0x%08x", addr);
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
LOG_ERR("Unknown (%u)", status);
|
||||
}
|
||||
@@ -109,24 +97,6 @@ static uint32_t dump_fault(uint32_t status, uint32_t addr)
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_FPU_SHARING)
|
||||
|
||||
static ALWAYS_INLINE void z_arm_fpu_caller_save(struct __fpu_sf *fpu)
|
||||
{
|
||||
__asm__ volatile (
|
||||
"vstmia %0, {s0-s15};\n"
|
||||
: : "r" (&fpu->s[0])
|
||||
: "memory"
|
||||
);
|
||||
#if CONFIG_VFP_FEATURE_REGS_S64_D32
|
||||
__asm__ volatile (
|
||||
"vstmia %0, {d16-d31};\n\t"
|
||||
:
|
||||
: "r" (&fpu->d[0])
|
||||
: "memory"
|
||||
);
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief FPU undefined instruction fault handler
|
||||
*
|
||||
@@ -180,7 +150,11 @@ bool z_arm_fault_undef_instruction_fp(void)
|
||||
*/
|
||||
spill_esf->undefined |= FPEXC_EN;
|
||||
spill_esf->fpscr = __get_FPSCR();
|
||||
z_arm_fpu_caller_save(spill_esf);
|
||||
__asm__ volatile (
|
||||
"vstmia %0, {s0-s15};\n"
|
||||
: : "r" (&spill_esf->s[0])
|
||||
: "memory"
|
||||
);
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
@@ -210,7 +184,11 @@ bool z_arm_fault_undef_instruction(z_arch_esf_t *esf)
|
||||
*/
|
||||
esf->fpu.undefined = __get_FPEXC();
|
||||
esf->fpu.fpscr = __get_FPSCR();
|
||||
z_arm_fpu_caller_save(&esf->fpu);
|
||||
__asm__ volatile (
|
||||
"vstmia %0, {s0-s15};\n"
|
||||
: : "r" (&esf->fpu.s[0])
|
||||
: "memory"
|
||||
);
|
||||
#endif
|
||||
|
||||
/* Print fault information */
|
||||
@@ -238,11 +216,7 @@ bool z_arm_fault_prefetch(z_arch_esf_t *esf)
|
||||
|
||||
/* Read and parse Instruction Fault Status Register (IFSR) */
|
||||
uint32_t ifsr = __get_IFSR();
|
||||
#if defined(CONFIG_AARCH32_ARMV8_R)
|
||||
uint32_t fs = ifsr & IFSR_STATUS_Msk;
|
||||
#else
|
||||
uint32_t fs = ((ifsr & IFSR_FS1_Msk) >> 6) | (ifsr & IFSR_FS0_Msk);
|
||||
#endif
|
||||
|
||||
/* Read Instruction Fault Address Register (IFAR) */
|
||||
uint32_t ifar = __get_IFAR();
|
||||
@@ -305,19 +279,13 @@ bool z_arm_fault_data(z_arch_esf_t *esf)
|
||||
|
||||
/* Read and parse Data Fault Status Register (DFSR) */
|
||||
uint32_t dfsr = __get_DFSR();
|
||||
#if defined(CONFIG_AARCH32_ARMV8_R)
|
||||
uint32_t fs = dfsr & DFSR_STATUS_Msk;
|
||||
#else
|
||||
uint32_t fs = ((dfsr & DFSR_FS1_Msk) >> 6) | (dfsr & DFSR_FS0_Msk);
|
||||
#endif
|
||||
|
||||
/* Read Data Fault Address Register (DFAR) */
|
||||
uint32_t dfar = __get_DFAR();
|
||||
|
||||
#if defined(CONFIG_USERSPACE)
|
||||
if ((fs == COND_CODE_1(CONFIG_AARCH32_ARMV8_R,
|
||||
(FSR_FS_TRANSLATION_FAULT),
|
||||
(FSR_FS_BACKGROUND_FAULT)))
|
||||
if ((fs == FSR_FS_BACKGROUND_FAULT)
|
||||
|| (fs == FSR_FS_PERMISSION_FAULT)) {
|
||||
if (memory_fault_recoverable(esf)) {
|
||||
return false;
|
||||
@@ -16,7 +16,7 @@
|
||||
#include <zephyr/linker/sections.h>
|
||||
#include <zephyr/arch/cpu.h>
|
||||
#include <offsets_short.h>
|
||||
#include <cortex_a_r/tcm.h>
|
||||
#include <aarch32/cortex_a_r/tcm.h>
|
||||
#include "vector_table.h"
|
||||
|
||||
_ASM_FILE_PROLOGUE
|
||||
@@ -5,7 +5,7 @@
|
||||
*/
|
||||
|
||||
#include <zephyr/kernel.h>
|
||||
#include <cortex_a_r/stack.h>
|
||||
#include <aarch32/cortex_a_r/stack.h>
|
||||
#include <string.h>
|
||||
#include <kernel_internal.h>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
#include <zephyr/kernel.h>
|
||||
#include <cmsis_core.h>
|
||||
#include <zephyr/arch/arm/aarch32/cortex_a_r/cmsis.h>
|
||||
|
||||
void z_arm_tcm_disable_ecc(void)
|
||||
{
|
||||
19
arch/arm/core/aarch32/cortex_a_r/thread.c
Normal file
19
arch/arm/core/aarch32/cortex_a_r/thread.c
Normal file
@@ -0,0 +1,19 @@
|
||||
/*
|
||||
* Copyright (c) 2021 Lexmark International, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <zephyr/arch/arm/aarch32/cortex_a_r/cmsis.h>
|
||||
|
||||
bool z_arm_thread_is_in_user_mode(void)
|
||||
{
|
||||
uint32_t value;
|
||||
|
||||
/*
|
||||
* For Cortex-R, the mode (lower 5) bits will be 0x10 for user mode.
|
||||
*/
|
||||
value = __get_CPSR();
|
||||
return ((value & CPSR_M_Msk) == CPSR_M_USR);
|
||||
}
|
||||
@@ -12,21 +12,14 @@ zephyr_library_sources(
|
||||
scb.c
|
||||
thread_abort.c
|
||||
vector_table.S
|
||||
swap.c
|
||||
swap_helper.S
|
||||
irq_manage.c
|
||||
prep_c.c
|
||||
thread.c
|
||||
cpu_idle.S
|
||||
)
|
||||
|
||||
zephyr_library_sources_ifdef(CONFIG_GEN_SW_ISR_TABLE isr_wrapper.S)
|
||||
zephyr_library_sources_ifdef(CONFIG_USERSPACE thread.c)
|
||||
zephyr_library_sources_ifdef(CONFIG_DEBUG_COREDUMP coredump.c)
|
||||
zephyr_library_sources_ifdef(CONFIG_THREAD_LOCAL_STORAGE __aeabi_read_tp.S)
|
||||
zephyr_library_sources_ifdef(CONFIG_SEMIHOST semihost.c)
|
||||
zephyr_library_sources_ifdef(CONFIG_PM_S2RAM pm_s2ram.c pm_s2ram.S)
|
||||
zephyr_library_sources_ifdef(CONFIG_ARCH_CACHE cache.c)
|
||||
zephyr_library_sources_ifdef(CONFIG_SW_VECTOR_RELAY irq_relay.S)
|
||||
|
||||
if(CONFIG_NULL_POINTER_EXCEPTION_DETECTION_DWT)
|
||||
zephyr_library_sources(debug.c)
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
#include <zephyr/arch/cpu.h>
|
||||
#include <zephyr/cache.h>
|
||||
#include <cmsis_core.h>
|
||||
#include <zephyr/arch/arm/aarch32/cortex_m/cmsis.h>
|
||||
|
||||
void arch_dcache_enable(void)
|
||||
{
|
||||
@@ -5,7 +5,7 @@
|
||||
*/
|
||||
|
||||
#include <zephyr/kernel.h>
|
||||
#include <cortex_m/cmse.h>
|
||||
#include <aarch32/cortex_m/cmse.h>
|
||||
|
||||
int arm_cmse_mpu_region_get(uint32_t addr)
|
||||
{
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
#include <zephyr/kernel.h>
|
||||
#include <zephyr/device.h>
|
||||
#include <cortex_m/dwt.h>
|
||||
#include <aarch32/cortex_m/dwt.h>
|
||||
|
||||
/**
|
||||
* @brief Assess whether a debug monitor event should be treated as an error
|
||||
@@ -15,8 +15,7 @@
|
||||
#include <zephyr/kernel.h>
|
||||
#include <kernel_internal.h>
|
||||
#include <inttypes.h>
|
||||
#include <zephyr/arch/common/exc_handle.h>
|
||||
#include <zephyr/linker/linker-defs.h>
|
||||
#include <zephyr/exc_handle.h>
|
||||
#include <zephyr/logging/log.h>
|
||||
#include <zephyr/sys/barrier.h>
|
||||
LOG_MODULE_DECLARE(os, CONFIG_KERNEL_LOG_LEVEL);
|
||||
@@ -730,30 +729,6 @@ static inline bool z_arm_is_synchronous_svc(z_arch_esf_t *esf)
|
||||
return false;
|
||||
}
|
||||
|
||||
#if defined(CONFIG_ARMV6_M_ARMV8_M_BASELINE)
|
||||
static inline bool z_arm_is_pc_valid(uintptr_t pc)
|
||||
{
|
||||
/* Is it in valid text region */
|
||||
if ((((uintptr_t)&__text_region_start) <= pc) && (pc < ((uintptr_t)&__text_region_end))) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/* Is it in valid ramfunc range */
|
||||
if ((((uintptr_t)&__ramfunc_start) <= pc) && (pc < ((uintptr_t)&__ramfunc_end))) {
|
||||
return true;
|
||||
}
|
||||
|
||||
#if DT_NODE_HAS_STATUS(DT_CHOSEN(zephyr_itcm), okay)
|
||||
/* Is it in the ITCM */
|
||||
if ((((uintptr_t)&__itcm_start) <= pc) && (pc < ((uintptr_t)&__itcm_end))) {
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
*
|
||||
* @brief Dump hard fault information
|
||||
@@ -777,8 +752,8 @@ static uint32_t hard_fault(z_arch_esf_t *esf, bool *recoverable)
|
||||
* priority. We handle the case of Kernel OOPS and Stack
|
||||
* Fail here.
|
||||
*/
|
||||
if (z_arm_is_synchronous_svc(esf)) {
|
||||
|
||||
if (z_arm_is_pc_valid((uintptr_t)esf->basic.pc) && z_arm_is_synchronous_svc(esf)) {
|
||||
PR_EXC("ARCH_EXCEPT with reason %x\n", esf->basic.r0);
|
||||
reason = esf->basic.r0;
|
||||
}
|
||||
@@ -6,8 +6,8 @@
|
||||
*/
|
||||
|
||||
#include <zephyr/kernel.h>
|
||||
#include <cmsis_core.h>
|
||||
#include <zephyr/arch/arm/cortex_m/fpu.h>
|
||||
#include <zephyr/arch/arm/aarch32/cortex_m/cmsis.h>
|
||||
#include <zephyr/arch/arm/aarch32/cortex_m/fpu.h>
|
||||
|
||||
/**
|
||||
* @file @brief Helper functions for saving and restoring the FP context.
|
||||
@@ -11,7 +11,7 @@
|
||||
*/
|
||||
|
||||
#include <zephyr/arch/cpu.h>
|
||||
#include <cmsis_core.h>
|
||||
#include <zephyr/arch/arm/aarch32/cortex_m/cmsis.h>
|
||||
|
||||
/**
|
||||
*
|
||||
@@ -18,7 +18,7 @@
|
||||
#include <zephyr/arch/cpu.h>
|
||||
#include <zephyr/sys/util.h>
|
||||
#include <zephyr/sys/barrier.h>
|
||||
#include <cmsis_core.h>
|
||||
#include <zephyr/arch/arm/aarch32/cortex_m/cmsis.h>
|
||||
#include <zephyr/linker/linker-defs.h>
|
||||
#include <zephyr/cache.h>
|
||||
|
||||
@@ -41,7 +41,6 @@ void __weak sys_arch_reboot(int type)
|
||||
NVIC_SystemReset();
|
||||
}
|
||||
|
||||
#if defined(CONFIG_ARM_MPU)
|
||||
#if defined(CONFIG_CPU_HAS_ARM_MPU)
|
||||
/**
|
||||
*
|
||||
@@ -76,7 +75,6 @@ void z_arm_clear_arm_mpu_config(void)
|
||||
}
|
||||
}
|
||||
#endif /* CONFIG_CPU_HAS_NXP_MPU */
|
||||
#endif /* CONFIG_ARM_MPU */
|
||||
|
||||
#if defined(CONFIG_INIT_ARCH_HW_AT_BOOT)
|
||||
/**
|
||||
@@ -98,10 +96,10 @@ void z_arm_init_arch_hw_at_boot(void)
|
||||
|
||||
/* Initialize System Control Block components */
|
||||
|
||||
#if defined(CONFIG_ARM_MPU)
|
||||
#if defined(CONFIG_CPU_HAS_ARM_MPU) || defined(CONFIG_CPU_HAS_NXP_MPU)
|
||||
/* Clear MPU region configuration */
|
||||
z_arm_clear_arm_mpu_config();
|
||||
#endif /* CONFIG_ARM_MPU */
|
||||
#endif /* CONFIG_CPU_HAS_ARM_MPU */
|
||||
|
||||
/* Disable NVIC interrupts */
|
||||
for (uint8_t i = 0; i < ARRAY_SIZE(NVIC->ICER); i++) {
|
||||
17
arch/arm/core/aarch32/cortex_m/thread.c
Normal file
17
arch/arm/core/aarch32/cortex_m/thread.c
Normal file
@@ -0,0 +1,17 @@
|
||||
/*
|
||||
* Copyright (c) 2021 Lexmark International, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <stdbool.h>
|
||||
#include <zephyr/arch/arm/aarch32/cortex_m/cmsis.h>
|
||||
|
||||
bool z_arm_thread_is_in_user_mode(void)
|
||||
{
|
||||
uint32_t value;
|
||||
|
||||
/* return mode information */
|
||||
value = __get_CONTROL();
|
||||
return (value & CONTROL_nPRIV_Msk) != 0;
|
||||
}
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <zephyr/linker/sections.h>
|
||||
#include <ksched.h>
|
||||
#include <kswap.h>
|
||||
#include <zephyr/wait_q.h>
|
||||
#include <zephyr/sys/__assert.h>
|
||||
|
||||
void z_impl_k_thread_abort(k_tid_t thread)
|
||||
@@ -14,8 +14,8 @@
|
||||
#include <zephyr/init.h>
|
||||
#include <zephyr/kernel.h>
|
||||
#include <zephyr/timing/timing.h>
|
||||
#include <cortex_m/dwt.h>
|
||||
#include <cmsis_core.h>
|
||||
#include <aarch32/cortex_m/dwt.h>
|
||||
#include <zephyr/arch/arm/aarch32/cortex_m/cmsis.h>
|
||||
#include <zephyr/sys_clock.h>
|
||||
|
||||
/**
|
||||
@@ -4,9 +4,9 @@
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <cmsis_core.h>
|
||||
#include <cortex_m/tz.h>
|
||||
#include <cortex_m/exc.h>
|
||||
#include <zephyr/arch/arm/aarch32/cortex_m/cmsis.h>
|
||||
#include <aarch32/cortex_m/tz.h>
|
||||
#include <aarch32/cortex_m/exc.h>
|
||||
|
||||
static void configure_nonsecure_vtor_offset(uint32_t vtor_ns)
|
||||
{
|
||||
@@ -6,29 +6,47 @@
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @brief ARM Cortex-M power management
|
||||
* @brief ARM Cortex-A, Cortex-M and Cortex-R power management
|
||||
*
|
||||
*/
|
||||
|
||||
#include <zephyr/toolchain.h>
|
||||
#include <zephyr/linker/sections.h>
|
||||
|
||||
#if defined(CONFIG_ARM_ON_EXIT_CPU_IDLE)
|
||||
#include <soc_cpu_idle.h>
|
||||
#endif
|
||||
|
||||
_ASM_FILE_PROLOGUE
|
||||
|
||||
GTEXT(z_arm_cpu_idle_init)
|
||||
GTEXT(arch_cpu_idle)
|
||||
GTEXT(arch_cpu_atomic_idle)
|
||||
|
||||
#if defined(CONFIG_CPU_CORTEX_M)
|
||||
#define _SCB_SCR 0xE000ED10
|
||||
|
||||
#define _SCB_SCR_SEVONPEND (1 << 4)
|
||||
#define _SCB_SCR_SLEEPDEEP (1 << 2)
|
||||
#define _SCB_SCR_SLEEPONEXIT (1 << 1)
|
||||
#define _SCR_INIT_BITS _SCB_SCR_SEVONPEND
|
||||
#endif
|
||||
|
||||
/**
|
||||
*
|
||||
* @brief Initialization of CPU idle
|
||||
*
|
||||
* Only called by arch_kernel_init(). Sets SEVONPEND bit once for the system's
|
||||
* duration.
|
||||
*
|
||||
* C function prototype:
|
||||
*
|
||||
* void z_arm_cpu_idle_init(void);
|
||||
*/
|
||||
|
||||
SECTION_FUNC(TEXT, z_arm_cpu_idle_init)
|
||||
#if defined(CONFIG_CPU_CORTEX_M)
|
||||
ldr r1, =_SCB_SCR
|
||||
movs.n r2, #_SCR_INIT_BITS
|
||||
str r2, [r1]
|
||||
#endif
|
||||
bx lr
|
||||
|
||||
.macro _sleep_if_allowed wait_instruction
|
||||
#if defined(CONFIG_ARM_ON_ENTER_CPU_IDLE_HOOK)
|
||||
@@ -46,11 +64,6 @@ GTEXT(arch_cpu_atomic_idle)
|
||||
dsb
|
||||
\wait_instruction
|
||||
|
||||
#if defined(CONFIG_ARM_ON_EXIT_CPU_IDLE)
|
||||
/* Inline the macro provided by SoC-specific code */
|
||||
SOC_ON_EXIT_CPU_IDLE
|
||||
#endif /* CONFIG_ARM_ON_EXIT_CPU_IDLE */
|
||||
|
||||
#if defined(CONFIG_ARM_ON_ENTER_CPU_IDLE_HOOK)
|
||||
_skip_\@:
|
||||
#if defined(CONFIG_ARMV6_M_ARMV8_M_BASELINE)
|
||||
@@ -62,24 +75,6 @@ _skip_\@:
|
||||
#endif /* CONFIG_ARM_ON_ENTER_CPU_IDLE_HOOK */
|
||||
.endm
|
||||
|
||||
/**
|
||||
*
|
||||
* @brief Initialization of CPU idle
|
||||
*
|
||||
* Only called by arch_kernel_init(). Sets SEVONPEND bit once for the system's
|
||||
* duration.
|
||||
*
|
||||
* C function prototype:
|
||||
*
|
||||
* void z_arm_cpu_idle_init(void);
|
||||
*/
|
||||
|
||||
SECTION_FUNC(TEXT, z_arm_cpu_idle_init)
|
||||
ldr r1, =_SCB_SCR
|
||||
movs.n r2, #_SCR_INIT_BITS
|
||||
str r2, [r1]
|
||||
bx lr
|
||||
|
||||
SECTION_FUNC(TEXT, arch_cpu_idle)
|
||||
#ifdef CONFIG_TRACING
|
||||
push {r0, lr}
|
||||
@@ -158,7 +153,10 @@ SECTION_FUNC(TEXT, arch_cpu_atomic_idle)
|
||||
|
||||
/* r0: interrupt mask from caller */
|
||||
|
||||
#if defined(CONFIG_ARMV6_M_ARMV8_M_BASELINE)
|
||||
#if defined(CONFIG_ARMV6_M_ARMV8_M_BASELINE) \
|
||||
|| defined(CONFIG_ARMV7_R) \
|
||||
|| defined(CONFIG_AARCH32_ARMV8_R) \
|
||||
|| defined(CONFIG_ARMV7_A)
|
||||
/* No BASEPRI, call wfe directly
|
||||
* (SEVONPEND is set in z_arm_cpu_idle_init())
|
||||
*/
|
||||
@@ -33,16 +33,6 @@ static void esf_dump(const z_arch_esf_t *esf)
|
||||
i + 2, (uint32_t)esf->fpu.s[i + 2],
|
||||
i + 3, (uint32_t)esf->fpu.s[i + 3]);
|
||||
}
|
||||
#ifdef CONFIG_VFP_FEATURE_REGS_S64_D32
|
||||
for (int i = 0; i < ARRAY_SIZE(esf->fpu.d); i += 4) {
|
||||
LOG_ERR("d[%2d]: 0x%16llx d[%2d]: 0x%16llx"
|
||||
" d[%2d]: 0x%16llx d[%2d]: 0x%16llx",
|
||||
i, (uint64_t)esf->fpu.d[i],
|
||||
i + 1, (uint64_t)esf->fpu.d[i + 1],
|
||||
i + 2, (uint64_t)esf->fpu.d[i + 2],
|
||||
i + 3, (uint64_t)esf->fpu.d[i + 3]);
|
||||
}
|
||||
#endif
|
||||
LOG_ERR("fpscr: 0x%08x", esf->fpu.fpscr);
|
||||
#endif
|
||||
#if defined(CONFIG_EXTRA_EXCEPTION_INFO)
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @brief ARM Cortex-M interrupt management
|
||||
* @brief ARM Cortex-A, Cortex-M and Cortex-R interrupt management
|
||||
*
|
||||
*
|
||||
* Interrupt management: enabling/disabling and dynamic ISR
|
||||
@@ -16,7 +16,12 @@
|
||||
|
||||
#include <zephyr/kernel.h>
|
||||
#include <zephyr/arch/cpu.h>
|
||||
#include <cmsis_core.h>
|
||||
#if defined(CONFIG_CPU_CORTEX_M)
|
||||
#include <zephyr/arch/arm/aarch32/cortex_m/cmsis.h>
|
||||
#elif defined(CONFIG_CPU_AARCH32_CORTEX_A) \
|
||||
|| defined(CONFIG_CPU_AARCH32_CORTEX_R)
|
||||
#include <zephyr/drivers/interrupt_controller/gic.h>
|
||||
#endif
|
||||
#include <zephyr/sys/__assert.h>
|
||||
#include <zephyr/sys/barrier.h>
|
||||
#include <zephyr/toolchain.h>
|
||||
@@ -28,6 +33,7 @@
|
||||
|
||||
extern void z_arm_reserved(void);
|
||||
|
||||
#if defined(CONFIG_CPU_CORTEX_M)
|
||||
#define NUM_IRQS_PER_REG 32
|
||||
#define REG_FROM_IRQ(irq) (irq / NUM_IRQS_PER_REG)
|
||||
#define BIT_FROM_IRQ(irq) (irq % NUM_IRQS_PER_REG)
|
||||
@@ -90,6 +96,53 @@ void z_arm_irq_priority_set(unsigned int irq, unsigned int prio, uint32_t flags)
|
||||
NVIC_SetPriority((IRQn_Type)irq, prio);
|
||||
}
|
||||
|
||||
#elif defined(CONFIG_CPU_AARCH32_CORTEX_A) \
|
||||
|| defined(CONFIG_CPU_AARCH32_CORTEX_R)
|
||||
/*
|
||||
* For Cortex-A and Cortex-R cores, the default interrupt controller is the ARM
|
||||
* Generic Interrupt Controller (GIC) and therefore the architecture interrupt
|
||||
* control functions are mapped to the GIC driver interface.
|
||||
*
|
||||
* When a custom interrupt controller is used (i.e.
|
||||
* CONFIG_ARM_CUSTOM_INTERRUPT_CONTROLLER is enabled), the architecture
|
||||
* interrupt control functions are mapped to the SoC layer in
|
||||
* `include/arch/arm/aarch32/irq.h`.
|
||||
*/
|
||||
|
||||
#if !defined(CONFIG_ARM_CUSTOM_INTERRUPT_CONTROLLER)
|
||||
void arch_irq_enable(unsigned int irq)
|
||||
{
|
||||
arm_gic_irq_enable(irq);
|
||||
}
|
||||
|
||||
void arch_irq_disable(unsigned int irq)
|
||||
{
|
||||
arm_gic_irq_disable(irq);
|
||||
}
|
||||
|
||||
int arch_irq_is_enabled(unsigned int irq)
|
||||
{
|
||||
return arm_gic_irq_is_enabled(irq);
|
||||
}
|
||||
|
||||
/**
|
||||
* @internal
|
||||
*
|
||||
* @brief Set an interrupt's priority
|
||||
*
|
||||
* The priority is verified if ASSERT_ON is enabled. The maximum number
|
||||
* of priority levels is a little complex, as there are some hardware
|
||||
* priority levels which are reserved: three for various types of exceptions,
|
||||
* and possibly one additional to support zero latency interrupts.
|
||||
*/
|
||||
void z_arm_irq_priority_set(unsigned int irq, unsigned int prio, uint32_t flags)
|
||||
{
|
||||
arm_gic_irq_set_priority(irq, prio, flags);
|
||||
}
|
||||
#endif /* !CONFIG_ARM_CUSTOM_INTERRUPT_CONTROLLER */
|
||||
|
||||
#endif /* CONFIG_CPU_CORTEX_M */
|
||||
|
||||
void z_arm_fatal_error(unsigned int reason, const z_arch_esf_t *esf);
|
||||
|
||||
/**
|
||||
@@ -110,7 +163,10 @@ void z_irq_spurious(const void *unused)
|
||||
#ifdef CONFIG_PM
|
||||
void _arch_isr_direct_pm(void)
|
||||
{
|
||||
#if defined(CONFIG_ARMV6_M_ARMV8_M_BASELINE)
|
||||
#if defined(CONFIG_ARMV6_M_ARMV8_M_BASELINE) \
|
||||
|| defined(CONFIG_ARMV7_R) \
|
||||
|| defined(CONFIG_AARCH32_ARMV8_R) \
|
||||
|| defined(CONFIG_ARMV7_A)
|
||||
unsigned int key;
|
||||
|
||||
/* irq_lock() does what we want for this CPU */
|
||||
@@ -118,7 +174,7 @@ void _arch_isr_direct_pm(void)
|
||||
#elif defined(CONFIG_ARMV7_M_ARMV8_M_MAINLINE)
|
||||
/* Lock all interrupts. irq_lock() will on this CPU only disable those
|
||||
* lower than BASEPRI, which is not what we want. See comments in
|
||||
* arch/arm/core/isr_wrapper.S
|
||||
* arch/arm/core/aarch32/isr_wrapper.S
|
||||
*/
|
||||
__asm__ volatile("cpsid i" : : : "memory");
|
||||
#else
|
||||
@@ -130,7 +186,10 @@ void _arch_isr_direct_pm(void)
|
||||
z_pm_save_idle_exit();
|
||||
}
|
||||
|
||||
#if defined(CONFIG_ARMV6_M_ARMV8_M_BASELINE)
|
||||
#if defined(CONFIG_ARMV6_M_ARMV8_M_BASELINE) \
|
||||
|| defined(CONFIG_ARMV7_R) \
|
||||
|| defined(CONFIG_AARCH32_ARMV8_R) \
|
||||
|| defined(CONFIG_ARMV7_A)
|
||||
irq_unlock(key);
|
||||
#elif defined(CONFIG_ARMV7_M_ARMV8_M_MAINLINE)
|
||||
__asm__ volatile("cpsie i" : : : "memory");
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @brief ARM Cortex-A and Cortex-R wrapper for ISRs with parameter
|
||||
* @brief ARM Cortex-A, Cortex-M and Cortex-R wrapper for ISRs with parameter
|
||||
*
|
||||
* Wrapper installed in vector table for handling dynamic interrupts that accept
|
||||
* a parameter.
|
||||
@@ -45,6 +45,10 @@ GTEXT(z_arm_int_exit)
|
||||
*/
|
||||
SECTION_FUNC(TEXT, _isr_wrapper)
|
||||
|
||||
#if defined(CONFIG_CPU_CORTEX_M)
|
||||
push {r0,lr} /* r0, lr are now the first items on the stack */
|
||||
#elif defined(CONFIG_CPU_AARCH32_CORTEX_R) || defined(CONFIG_CPU_AARCH32_CORTEX_A)
|
||||
|
||||
#if defined(CONFIG_USERSPACE)
|
||||
/* See comment below about svc stack usage */
|
||||
cps #MODE_SVC
|
||||
@@ -94,16 +98,11 @@ isr_system_thread:
|
||||
*/
|
||||
vmrs r0, fpexc
|
||||
str r0, [sp, #___fpu_t_SIZEOF - 4]
|
||||
tst r0, #FPEXC_EN
|
||||
beq _vfp_not_enabled
|
||||
vmrs r0, fpscr
|
||||
str r0, [sp, #___fpu_t_SIZEOF - 8]
|
||||
|
||||
/* Disable VFP */
|
||||
mov r0, #0
|
||||
vmsr fpexc, r0
|
||||
|
||||
_vfp_not_enabled:
|
||||
/*
|
||||
* Mark where to store the floating context for the undefined
|
||||
* instruction handler
|
||||
@@ -143,6 +142,7 @@ _vfp_not_enabled:
|
||||
ldr r0, [r2, #_kernel_offset_to_nested]
|
||||
add r0, r0, #1
|
||||
str r0, [r2, #_kernel_offset_to_nested]
|
||||
#endif /* CONFIG_CPU_CORTEX_M */
|
||||
|
||||
#ifdef CONFIG_TRACING_ISR
|
||||
bl sys_trace_isr_enter
|
||||
@@ -158,21 +158,65 @@ _vfp_not_enabled:
|
||||
* is called with interrupts disabled.
|
||||
*/
|
||||
|
||||
#if defined(CONFIG_CPU_CORTEX_M)
|
||||
/*
|
||||
* Disable interrupts to prevent nesting while exiting idle state. This
|
||||
* is only necessary for the Cortex-M because it is the only ARM
|
||||
* architecture variant that automatically enables interrupts when
|
||||
* entering an ISR.
|
||||
*/
|
||||
cpsid i /* PRIMASK = 1 */
|
||||
#endif
|
||||
|
||||
/* is this a wakeup from idle ? */
|
||||
ldr r2, =_kernel
|
||||
/* requested idle duration, in ticks */
|
||||
ldr r0, [r2, #_kernel_offset_to_idle]
|
||||
cmp r0, #0
|
||||
|
||||
#if defined(CONFIG_ARMV6_M_ARMV8_M_BASELINE)
|
||||
beq _idle_state_cleared
|
||||
movs.n r1, #0
|
||||
/* clear kernel idle state */
|
||||
str r1, [r2, #_kernel_offset_to_idle]
|
||||
bl z_pm_save_idle_exit
|
||||
_idle_state_cleared:
|
||||
|
||||
#elif defined(CONFIG_ARMV7_M_ARMV8_M_MAINLINE)
|
||||
ittt ne
|
||||
movne r1, #0
|
||||
/* clear kernel idle state */
|
||||
strne r1, [r2, #_kernel_offset_to_idle]
|
||||
blne z_pm_save_idle_exit
|
||||
#elif defined(CONFIG_ARMV7_R) || defined(CONFIG_AARCH32_ARMV8_R) \
|
||||
|| defined(CONFIG_ARMV7_A)
|
||||
beq _idle_state_cleared
|
||||
movs r1, #0
|
||||
/* clear kernel idle state */
|
||||
str r1, [r2, #_kernel_offset_to_idle]
|
||||
bl z_pm_save_idle_exit
|
||||
_idle_state_cleared:
|
||||
#else
|
||||
#error Unknown ARM architecture
|
||||
#endif /* CONFIG_ARMV6_M_ARMV8_M_BASELINE */
|
||||
|
||||
#if defined(CONFIG_CPU_CORTEX_M)
|
||||
cpsie i /* re-enable interrupts (PRIMASK = 0) */
|
||||
#endif
|
||||
|
||||
#endif /* CONFIG_PM */
|
||||
|
||||
#if defined(CONFIG_CPU_CORTEX_M)
|
||||
mrs r0, IPSR /* get exception number */
|
||||
#if defined(CONFIG_ARMV6_M_ARMV8_M_BASELINE)
|
||||
ldr r1, =16
|
||||
subs r0, r1 /* get IRQ number */
|
||||
lsls r0, #3 /* table is 8-byte wide */
|
||||
#elif defined(CONFIG_ARMV7_M_ARMV8_M_MAINLINE)
|
||||
sub r0, r0, #16 /* get IRQ number */
|
||||
lsl r0, r0, #3 /* table is 8-byte wide */
|
||||
#endif /* CONFIG_ARMV6_M_ARMV8_M_BASELINE */
|
||||
#elif defined(CONFIG_CPU_AARCH32_CORTEX_R) || defined(CONFIG_CPU_AARCH32_CORTEX_A)
|
||||
/* Get active IRQ number from the interrupt controller */
|
||||
#if !defined(CONFIG_ARM_CUSTOM_INTERRUPT_CONTROLLER)
|
||||
bl arm_gic_get_active
|
||||
@@ -181,7 +225,11 @@ _idle_state_cleared:
|
||||
#endif /* !CONFIG_ARM_CUSTOM_INTERRUPT_CONTROLLER */
|
||||
push {r0, r1}
|
||||
lsl r0, r0, #3 /* table is 8-byte wide */
|
||||
#else
|
||||
#error Unknown ARM architecture
|
||||
#endif /* CONFIG_CPU_CORTEX_M */
|
||||
|
||||
#if !defined(CONFIG_CPU_CORTEX_M)
|
||||
/*
|
||||
* Enable interrupts to allow nesting.
|
||||
*
|
||||
@@ -201,6 +249,7 @@ _idle_state_cleared:
|
||||
lsl r1, r1, #3
|
||||
cmp r0, r1
|
||||
bge spurious_continue
|
||||
#endif /* !CONFIG_CPU_CORTEX_M */
|
||||
|
||||
ldr r1, =_sw_isr_table
|
||||
add r1, r1, r0 /* table entry: ISRs must have their MSB set to stay
|
||||
@@ -209,6 +258,7 @@ _idle_state_cleared:
|
||||
ldm r1!,{r0,r3} /* arg in r0, ISR in r3 */
|
||||
blx r3 /* call ISR */
|
||||
|
||||
#if defined(CONFIG_CPU_AARCH32_CORTEX_R) || defined(CONFIG_CPU_AARCH32_CORTEX_A)
|
||||
spurious_continue:
|
||||
/* Signal end-of-interrupt */
|
||||
pop {r0, r1}
|
||||
@@ -217,11 +267,29 @@ spurious_continue:
|
||||
#else
|
||||
bl z_soc_irq_eoi
|
||||
#endif /* !CONFIG_ARM_CUSTOM_INTERRUPT_CONTROLLER */
|
||||
#endif /* CONFIG_CPU_AARCH32_CORTEX_R || CONFIG_CPU_AARCH32_CORTEX_A */
|
||||
|
||||
#ifdef CONFIG_TRACING_ISR
|
||||
bl sys_trace_isr_exit
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_ARMV6_M_ARMV8_M_BASELINE)
|
||||
pop {r0, r3}
|
||||
mov lr, r3
|
||||
#elif defined(CONFIG_ARMV7_M_ARMV8_M_MAINLINE)
|
||||
pop {r0, lr}
|
||||
#elif defined(CONFIG_ARMV7_R) || defined(CONFIG_AARCH32_ARMV8_R) \
|
||||
|| defined(CONFIG_ARMV7_A)
|
||||
/*
|
||||
* r0 and lr_irq were saved on the process stack since a swap could
|
||||
* happen. exc_exit will handle getting those values back
|
||||
* from the process stack to return to the correct location
|
||||
* so there is no need to do anything here.
|
||||
*/
|
||||
#else
|
||||
#error Unknown ARM architecture
|
||||
#endif /* CONFIG_ARMV6_M_ARMV8_M_BASELINE */
|
||||
|
||||
/* Use 'bx' instead of 'b' because 'bx' can jump further, and use
|
||||
* 'bx' instead of 'blx' because exception return is done in
|
||||
* z_arm_int_exit() */
|
||||
@@ -29,9 +29,9 @@
|
||||
#include <zephyr/sys/mem_manage.h>
|
||||
#include <zephyr/sys/barrier.h>
|
||||
|
||||
#include <cmsis_core.h>
|
||||
#include <zephyr/arch/arm/aarch32/cortex_a_r/cmsis.h>
|
||||
|
||||
#include <zephyr/arch/arm/mmu/arm_mmu.h>
|
||||
#include <zephyr/arch/arm/aarch32/mmu/arm_mmu.h>
|
||||
#include "arm_mmu_priv.h"
|
||||
|
||||
LOG_MODULE_DECLARE(os, CONFIG_KERNEL_LOG_LEVEL);
|
||||
@@ -58,8 +58,8 @@ uint32_t z_arm_mpu_stack_guard_and_fpu_adjust(struct k_thread *thread);
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_CODE_DATA_RELOCATION_SRAM)
|
||||
extern char __ram_text_reloc_start[];
|
||||
extern char __ram_text_reloc_size[];
|
||||
extern char __ram_text_start[];
|
||||
extern char __ram_text_size[];
|
||||
#endif
|
||||
|
||||
static const struct z_arm_mpu_partition static_regions[] = {
|
||||
@@ -92,8 +92,8 @@ static const struct z_arm_mpu_partition static_regions[] = {
|
||||
#if defined(CONFIG_CODE_DATA_RELOCATION_SRAM)
|
||||
{
|
||||
/* RAM area for relocated text */
|
||||
.start = (uint32_t)&__ram_text_reloc_start,
|
||||
.size = (uint32_t)&__ram_text_reloc_size,
|
||||
.start = (uint32_t)&__ram_text_start,
|
||||
.size = (uint32_t)&__ram_text_size,
|
||||
.attr = K_MEM_PARTITION_P_RX_U_RX,
|
||||
},
|
||||
#endif /* CONFIG_CODE_DATA_RELOCATION_SRAM */
|
||||
@@ -11,8 +11,6 @@
|
||||
#include "arm_core_mpu_dev.h"
|
||||
#include <zephyr/linker/linker-defs.h>
|
||||
#include <kernel_arch_data.h>
|
||||
#include <zephyr/mem_mgmt/mem_attr.h>
|
||||
#include <zephyr/dt-bindings/memory-attr/memory-attr-arm.h>
|
||||
|
||||
#define LOG_LEVEL CONFIG_MPU_LOG_LEVEL
|
||||
#include <zephyr/logging/log.h>
|
||||
@@ -34,13 +32,6 @@ LOG_MODULE_DECLARE(mpu);
|
||||
#define NUM_MPU_REGIONS DT_PROP(MPU_NODEID, arm_num_mpu_regions)
|
||||
#endif
|
||||
|
||||
#define NODE_HAS_PROP_AND_OR(node_id, prop) \
|
||||
DT_NODE_HAS_PROP(node_id, prop) ||
|
||||
|
||||
BUILD_ASSERT((DT_FOREACH_STATUS_OKAY_NODE_VARGS(
|
||||
NODE_HAS_PROP_AND_OR, zephyr_memory_region_mpu) false) == false,
|
||||
"`zephyr,memory-region-mpu` was deprecated in favor of `zephyr,memory-attr`");
|
||||
|
||||
/*
|
||||
* Global status variable holding the number of HW MPU region indices, which
|
||||
* have been reserved by the MPU driver to program the static (fixed) memory
|
||||
@@ -83,79 +74,6 @@ static int region_allocate_and_init(const uint8_t index,
|
||||
return index;
|
||||
}
|
||||
|
||||
#define _BUILD_REGION_CONF(reg, _ATTR) \
|
||||
(struct arm_mpu_region) ARM_MPU_REGION_INIT((reg).dt_name, \
|
||||
(reg).dt_addr, \
|
||||
(reg).dt_size, \
|
||||
_ATTR)
|
||||
|
||||
/* This internal function programs the MPU regions defined in the DT when using
|
||||
* the `zephyr,memory-attr = <( DT_MEM_ARM(...) )>` property.
|
||||
*/
|
||||
static int mpu_configure_regions_from_dt(uint8_t *reg_index)
|
||||
{
|
||||
const struct mem_attr_region_t *region;
|
||||
size_t num_regions;
|
||||
|
||||
num_regions = mem_attr_get_regions(®ion);
|
||||
|
||||
for (size_t idx = 0; idx < num_regions; idx++) {
|
||||
struct arm_mpu_region region_conf;
|
||||
|
||||
switch (DT_MEM_ARM_MASK(region[idx].dt_attr)) {
|
||||
case DT_MEM_ARM_MPU_RAM:
|
||||
region_conf = _BUILD_REGION_CONF(region[idx], REGION_RAM_ATTR);
|
||||
break;
|
||||
#ifdef REGION_RAM_NOCACHE_ATTR
|
||||
case DT_MEM_ARM_MPU_RAM_NOCACHE:
|
||||
region_conf = _BUILD_REGION_CONF(region[idx], REGION_RAM_NOCACHE_ATTR);
|
||||
__ASSERT(!(region[idx].dt_attr & DT_MEM_CACHEABLE),
|
||||
"RAM_NOCACHE with DT_MEM_CACHEABLE attribute\n");
|
||||
break;
|
||||
#endif
|
||||
#ifdef REGION_FLASH_ATTR
|
||||
case DT_MEM_ARM_MPU_FLASH:
|
||||
region_conf = _BUILD_REGION_CONF(region[idx], REGION_FLASH_ATTR);
|
||||
break;
|
||||
#endif
|
||||
#ifdef REGION_PPB_ATTR
|
||||
case DT_MEM_ARM_MPU_PPB:
|
||||
region_conf = _BUILD_REGION_CONF(region[idx], REGION_PPB_ATTR);
|
||||
break;
|
||||
#endif
|
||||
#ifdef REGION_IO_ATTR
|
||||
case DT_MEM_ARM_MPU_IO:
|
||||
region_conf = _BUILD_REGION_CONF(region[idx], REGION_IO_ATTR);
|
||||
break;
|
||||
#endif
|
||||
#ifdef REGION_EXTMEM_ATTR
|
||||
case DT_MEM_ARM_MPU_EXTMEM:
|
||||
region_conf = _BUILD_REGION_CONF(region[idx], REGION_EXTMEM_ATTR);
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
/* Either the specified `ATTR_MPU_*` attribute does not
|
||||
* exists or the `REGION_*_ATTR` macro is not defined
|
||||
* for that attribute.
|
||||
*/
|
||||
LOG_ERR("Invalid attribute for the region\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
#if defined(CONFIG_ARMV7_R)
|
||||
region_conf.size = size_to_mpu_rasr_size(region[idx].dt_size);
|
||||
#endif
|
||||
|
||||
if (region_allocate_and_init((*reg_index),
|
||||
(const struct arm_mpu_region *) ®ion_conf) < 0) {
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
(*reg_index)++;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* This internal function programs an MPU region
|
||||
* of a given configuration at a given MPU index.
|
||||
*/
|
||||
@@ -457,11 +375,6 @@ int z_arm_mpu_init(void)
|
||||
/* Update the number of programmed MPU regions. */
|
||||
static_regions_num = mpu_config.num_regions;
|
||||
|
||||
/* DT-defined MPU regions. */
|
||||
if (mpu_configure_regions_from_dt(&static_regions_num) == -EINVAL) {
|
||||
__ASSERT(0, "Failed to allocate MPU regions from DT\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
arm_core_mpu_enable();
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
#ifndef ZEPHYR_ARCH_ARM_CORE_AARCH32_MPU_ARM_MPU_V8_INTERNAL_H_
|
||||
#define ZEPHYR_ARCH_ARM_CORE_AARCH32_MPU_ARM_MPU_V8_INTERNAL_H_
|
||||
|
||||
#include <cortex_m/cmse.h>
|
||||
#include <aarch32/cortex_m/cmse.h>
|
||||
#define LOG_LEVEL CONFIG_MPU_LOG_LEVEL
|
||||
#include <zephyr/logging/log.h>
|
||||
#include <zephyr/sys/math_extras.h>
|
||||
@@ -13,20 +13,11 @@
|
||||
#include <zephyr/sys/math_extras.h>
|
||||
#include <zephyr/sys/barrier.h>
|
||||
#include <zephyr/linker/linker-defs.h>
|
||||
#include <zephyr/mem_mgmt/mem_attr.h>
|
||||
#include <zephyr/dt-bindings/memory-attr/memory-attr-arm.h>
|
||||
|
||||
#define LOG_LEVEL CONFIG_MPU_LOG_LEVEL
|
||||
#include <zephyr/logging/log.h>
|
||||
LOG_MODULE_DECLARE(mpu);
|
||||
|
||||
#define NODE_HAS_PROP_AND_OR(node_id, prop) \
|
||||
DT_NODE_HAS_PROP(node_id, prop) ||
|
||||
|
||||
BUILD_ASSERT((DT_FOREACH_STATUS_OKAY_NODE_VARGS(
|
||||
NODE_HAS_PROP_AND_OR, zephyr_memory_region_mpu) false) == false,
|
||||
"`zephyr,memory-region-mpu` was deprecated in favor of `zephyr,memory-attr`");
|
||||
|
||||
/*
|
||||
* Global status variable holding the number of HW MPU region indices, which
|
||||
* have been reserved by the MPU driver to program the static (fixed) memory
|
||||
@@ -143,60 +134,6 @@ static int region_allocate_and_init(const uint8_t index,
|
||||
return index;
|
||||
}
|
||||
|
||||
#define _BUILD_REGION_CONF(reg, _ATTR) \
|
||||
(struct nxp_mpu_region) { .name = (reg).dt_name, \
|
||||
.base = (reg).dt_addr, \
|
||||
.end = (reg).dt_addr + (reg).dt_size, \
|
||||
.attr = _ATTR, \
|
||||
}
|
||||
|
||||
/* This internal function programs the MPU regions defined in the DT when using
|
||||
* the `zephyr,memory-attr = <( DT_MEM_ARM(...) )>` property.
|
||||
*/
|
||||
static int mpu_configure_regions_from_dt(uint8_t *reg_index)
|
||||
{
|
||||
const struct mem_attr_region_t *region;
|
||||
size_t num_regions;
|
||||
|
||||
num_regions = mem_attr_get_regions(®ion);
|
||||
|
||||
for (size_t idx = 0; idx < num_regions; idx++) {
|
||||
struct nxp_mpu_region region_conf;
|
||||
|
||||
switch (DT_MEM_ARM_MASK(region[idx].dt_attr)) {
|
||||
case DT_MEM_ARM_MPU_RAM:
|
||||
region_conf = _BUILD_REGION_CONF(region[idx], REGION_RAM_ATTR);
|
||||
break;
|
||||
#ifdef REGION_FLASH_ATTR
|
||||
case DT_MEM_ARM_MPU_FLASH:
|
||||
region_conf = _BUILD_REGION_CONF(region[idx], REGION_FLASH_ATTR);
|
||||
break;
|
||||
#endif
|
||||
#ifdef REGION_IO_ATTR
|
||||
case DT_MEM_ARM_MPU_IO:
|
||||
region_conf = _BUILD_REGION_CONF(region[idx], REGION_IO_ATTR);
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
/* Either the specified `ATTR_MPU_*` attribute does not
|
||||
* exists or the `REGION_*_ATTR` macro is not defined
|
||||
* for that attribute.
|
||||
*/
|
||||
LOG_ERR("Invalid attribute for the region\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (region_allocate_and_init((*reg_index),
|
||||
(const struct nxp_mpu_region *) ®ion_conf) < 0) {
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
(*reg_index)++;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* This internal function is utilized by the MPU driver to combine a given
|
||||
* region attribute configuration and size and fill-in a driver-specific
|
||||
@@ -699,11 +636,6 @@ int z_arm_mpu_init(void)
|
||||
/* Update the number of programmed MPU regions. */
|
||||
static_regions_num = mpu_config.num_regions;
|
||||
|
||||
/* DT-defined MPU regions. */
|
||||
if (mpu_configure_regions_from_dt(&static_regions_num) == -EINVAL) {
|
||||
__ASSERT(0, "Failed to allocate MPU regions from DT\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
arm_core_mpu_enable();
|
||||
|
||||
@@ -29,6 +29,37 @@ extern void z_SysNmiOnReset(void);
|
||||
typedef void (*_NmiHandler_t)(void);
|
||||
static _NmiHandler_t handler = z_SysNmiOnReset;
|
||||
|
||||
/**
|
||||
*
|
||||
* @brief Default NMI handler installed when kernel is up
|
||||
*
|
||||
* The default handler outputs a error message and reboots the target. It is
|
||||
* installed by calling z_arm_nmi_init();
|
||||
*
|
||||
*/
|
||||
|
||||
static void DefaultHandler(void)
|
||||
{
|
||||
printk("NMI received! Rebooting...\n");
|
||||
/* In ARM implementation sys_reboot ignores the parameter */
|
||||
sys_reboot(0);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @brief Install default runtime NMI handler
|
||||
*
|
||||
* Meant to be called by platform code if they want to install a simple NMI
|
||||
* handler that reboots the target. It should be installed after the console is
|
||||
* initialized.
|
||||
*
|
||||
*/
|
||||
|
||||
void z_arm_nmi_init(void)
|
||||
{
|
||||
handler = DefaultHandler;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @brief Install a custom runtime NMI handler
|
||||
@@ -21,6 +21,14 @@
|
||||
#include <zephyr/linker/linker-defs.h>
|
||||
#include <zephyr/sys/barrier.h>
|
||||
|
||||
#if !defined(CONFIG_CPU_CORTEX_M)
|
||||
#include <zephyr/arch/arm/aarch32/cortex_a_r/lib_helpers.h>
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_ARMV7_R) || defined(CONFIG_ARMV7_A)
|
||||
#include <aarch32/cortex_a_r/stack.h>
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__)
|
||||
/*
|
||||
* GCC can detect if memcpy is passed a NULL argument, however one of
|
||||
@@ -50,6 +58,17 @@ static inline void relocate_vector_table(void)
|
||||
barrier_isync_fence_full();
|
||||
}
|
||||
|
||||
#elif defined(CONFIG_AARCH32_ARMV8_R)
|
||||
|
||||
#define VECTOR_ADDRESS ((uintptr_t)_vector_start)
|
||||
|
||||
static inline void relocate_vector_table(void)
|
||||
{
|
||||
write_sctlr(read_sctlr() & ~HIVECS);
|
||||
write_vbar(VECTOR_ADDRESS & VBAR_MASK);
|
||||
barrier_isync_fence_full();
|
||||
}
|
||||
|
||||
#else
|
||||
#define VECTOR_ADDRESS 0
|
||||
|
||||
@@ -57,6 +76,9 @@ void __weak relocate_vector_table(void)
|
||||
{
|
||||
#if defined(CONFIG_XIP) && (CONFIG_FLASH_BASE_ADDRESS != 0) || \
|
||||
!defined(CONFIG_XIP) && (CONFIG_SRAM_BASE_ADDRESS != 0)
|
||||
#if !defined(CONFIG_CPU_CORTEX_M)
|
||||
write_sctlr(read_sctlr() & ~HIVECS);
|
||||
#endif
|
||||
size_t vector_size = (size_t)_vector_end - (size_t)_vector_start;
|
||||
(void)memcpy(VECTOR_ADDRESS, _vector_start, vector_size);
|
||||
#elif defined(CONFIG_SW_VECTOR_RELAY) || defined(CONFIG_SW_VECTOR_RELAY_CLIENT)
|
||||
@@ -71,6 +93,7 @@ void __weak relocate_vector_table(void)
|
||||
#endif /* CONFIG_CPU_CORTEX_M_HAS_VTOR */
|
||||
|
||||
#if defined(CONFIG_CPU_HAS_FPU)
|
||||
#if defined(CONFIG_CPU_CORTEX_M)
|
||||
static inline void z_arm_floating_point_init(void)
|
||||
{
|
||||
/*
|
||||
@@ -168,6 +191,58 @@ static inline void z_arm_floating_point_init(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static inline void z_arm_floating_point_init(void)
|
||||
{
|
||||
#if defined(CONFIG_FPU)
|
||||
uint32_t reg_val = 0;
|
||||
|
||||
/*
|
||||
* CPACR : Coprocessor Access Control Register -> CP15 1/0/2
|
||||
* comp. ARM Architecture Reference Manual, ARMv7-A and ARMv7-R edition,
|
||||
* chap. B4.1.40
|
||||
*
|
||||
* Must be accessed in >= PL1!
|
||||
* [23..22] = CP11 access control bits,
|
||||
* [21..20] = CP10 access control bits.
|
||||
* 11b = Full access as defined for the respective CP,
|
||||
* 10b = UNDEFINED,
|
||||
* 01b = Access at PL1 only,
|
||||
* 00b = No access.
|
||||
*/
|
||||
reg_val = __get_CPACR();
|
||||
/* Enable PL1 access to CP10, CP11 */
|
||||
reg_val |= (CPACR_CP10(CPACR_FA) | CPACR_CP11(CPACR_FA));
|
||||
__set_CPACR(reg_val);
|
||||
barrier_isync_fence_full();
|
||||
|
||||
#if !defined(CONFIG_FPU_SHARING)
|
||||
/*
|
||||
* FPEXC: Floating-Point Exception Control register
|
||||
* comp. ARM Architecture Reference Manual, ARMv7-A and ARMv7-R edition,
|
||||
* chap. B6.1.38
|
||||
*
|
||||
* Must be accessed in >= PL1!
|
||||
* [31] EX bit = determines which registers comprise the current state
|
||||
* of the FPU. The effects of setting this bit to 1 are
|
||||
* subarchitecture defined. If EX=0, the following
|
||||
* registers contain the complete current state
|
||||
* information of the FPU and must therefore be saved
|
||||
* during a context switch:
|
||||
* * D0-D15
|
||||
* * D16-D31 if implemented
|
||||
* * FPSCR
|
||||
* * FPEXC.
|
||||
* [30] EN bit = Advanced SIMD/Floating Point Extensions enable bit.
|
||||
* [29..00] = Subarchitecture defined -> not relevant here.
|
||||
*/
|
||||
__set_FPEXC(FPEXC_EN);
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* CONFIG_CPU_CORTEX_M */
|
||||
#endif /* CONFIG_CPU_HAS_FPU */
|
||||
|
||||
extern FUNC_NORETURN void z_cstart(void);
|
||||
@@ -187,6 +262,9 @@ void z_arm_prep_c(void)
|
||||
#endif
|
||||
z_bss_zero();
|
||||
z_data_copy();
|
||||
#if ((defined(CONFIG_ARMV7_R) || defined(CONFIG_ARMV7_A)) && defined(CONFIG_INIT_STACKS))
|
||||
z_arm_init_stacks();
|
||||
#endif
|
||||
z_arm_interrupt_init();
|
||||
z_cstart();
|
||||
CODE_UNREACHABLE;
|
||||
@@ -36,11 +36,16 @@ int arch_swap(unsigned int key)
|
||||
_current->arch.basepri = key;
|
||||
_current->arch.swap_return_value = _k_neg_eagain;
|
||||
|
||||
#if defined(CONFIG_CPU_CORTEX_M)
|
||||
/* set pending bit to make sure we will take a PendSV exception */
|
||||
SCB->ICSR |= SCB_ICSR_PENDSVSET_Msk;
|
||||
|
||||
/* clear mask or enable all irqs to take a pendsv */
|
||||
irq_unlock(0);
|
||||
#elif defined(CONFIG_CPU_AARCH32_CORTEX_R) || defined(CONFIG_CPU_AARCH32_CORTEX_A)
|
||||
z_arm_cortex_r_svc();
|
||||
irq_unlock(key);
|
||||
#endif
|
||||
|
||||
/* Context switch is performed here. Returning implies the
|
||||
* thread has been context-switched-in again.
|
||||
@@ -8,10 +8,10 @@
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @brief Thread context switching for ARM Cortex-M
|
||||
* @brief Thread context switching for ARM Cortex-M and Cortex-R
|
||||
*
|
||||
* This module implements the routines necessary for thread context switching
|
||||
* on ARM Cortex-M CPUs.
|
||||
* on ARM Cortex-A, Cortex-M and Cortex-R CPUs.
|
||||
*/
|
||||
|
||||
#include <zephyr/toolchain.h>
|
||||
@@ -21,7 +21,9 @@
|
||||
#include <zephyr/syscall.h>
|
||||
#include <zephyr/kernel.h>
|
||||
|
||||
#include <zephyr/arch/arm/cortex_m/cpu.h>
|
||||
#if defined(CONFIG_CPU_CORTEX_M)
|
||||
#include <zephyr/arch/arm/aarch32/cortex_m/cpu.h>
|
||||
#endif
|
||||
_ASM_FILE_PROLOGUE
|
||||
|
||||
GTEXT(z_arm_svc)
|
||||
@@ -33,7 +35,7 @@ GTEXT(z_arm_do_syscall)
|
||||
|
||||
GDATA(_kernel)
|
||||
|
||||
#if defined(CONFIG_THREAD_LOCAL_STORAGE)
|
||||
#if defined(CONFIG_THREAD_LOCAL_STORAGE) && defined(CONFIG_CPU_CORTEX_M)
|
||||
GDATA(z_arm_tls_ptr)
|
||||
#endif
|
||||
|
||||
@@ -50,6 +52,10 @@ GDATA(z_arm_tls_ptr)
|
||||
* have to swap *something*.
|
||||
*
|
||||
* For Cortex-M, z_arm_pendsv() is invoked with no arguments.
|
||||
*
|
||||
* For Cortex-R, PendSV exception is not supported by the architecture and this
|
||||
* function is directly called either by z_arm_{exc,int}_exit in case of
|
||||
* preemption, or z_arm_svc in case of cooperative switching.
|
||||
*/
|
||||
|
||||
SECTION_FUNC(TEXT, z_arm_pendsv)
|
||||
@@ -80,7 +86,9 @@ SECTION_FUNC(TEXT, z_arm_pendsv)
|
||||
add r0, r2
|
||||
|
||||
/* save callee-saved + psp in thread */
|
||||
#if defined(CONFIG_CPU_CORTEX_M)
|
||||
mrs ip, PSP
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_ARMV6_M_ARMV8_M_BASELINE)
|
||||
/* Store current r4-r7 */
|
||||
@@ -113,6 +121,51 @@ out_fp_endif:
|
||||
* regardless of whether the thread has an active FP context.
|
||||
*/
|
||||
#endif /* CONFIG_FPU_SHARING */
|
||||
#elif defined(CONFIG_ARMV7_R) || defined(CONFIG_AARCH32_ARMV8_R) \
|
||||
|| defined(CONFIG_ARMV7_A)
|
||||
/* Store rest of process context */
|
||||
cps #MODE_SYS
|
||||
stm r0, {r4-r11, sp}
|
||||
cps #MODE_SVC
|
||||
|
||||
#if defined(CONFIG_FPU_SHARING)
|
||||
ldrb r0, [r2, #_thread_offset_to_user_options]
|
||||
tst r0, #K_FP_REGS /* _current->base.user_options & K_FP_REGS */
|
||||
beq out_fp_inactive
|
||||
|
||||
mov ip, #FPEXC_EN
|
||||
vmsr fpexc, ip
|
||||
|
||||
/*
|
||||
* If the float context pointer is not null, then the VFP has not been
|
||||
* used since this thread has used it. Consequently, the caller-saved
|
||||
* float registers have not been saved away, so write them to the
|
||||
* exception stack frame.
|
||||
*/
|
||||
ldr r0, [r1, #_kernel_offset_to_fp_ctx]
|
||||
cmp r0, #0
|
||||
beq out_store_thread_context
|
||||
|
||||
vstmia r0!, {s0-s15}
|
||||
vmrs r3, fpscr
|
||||
stm r0, {r3, ip}
|
||||
|
||||
out_store_thread_context:
|
||||
/* Store s16-s31 to thread context */
|
||||
add r0, r2, #_thread_offset_to_preempt_float
|
||||
vstmia r0, {s16-s31}
|
||||
|
||||
mov ip, #0
|
||||
vmsr fpexc, ip
|
||||
|
||||
out_fp_inactive:
|
||||
/*
|
||||
* The floating context has now been saved to the exception stack
|
||||
* frame, so zero out the global pointer to note this.
|
||||
*/
|
||||
mov r0, #0
|
||||
str r0, [r1, #_kernel_offset_to_fp_ctx]
|
||||
#endif /* CONFIG_FPU_SHARING */
|
||||
#else
|
||||
#error Unknown ARM architecture
|
||||
#endif /* CONFIG_ARMV6_M_ARMV8_M_BASELINE */
|
||||
@@ -124,6 +177,12 @@ out_fp_endif:
|
||||
movs.n r0, #_EXC_IRQ_DEFAULT_PRIO
|
||||
msr BASEPRI_MAX, r0
|
||||
isb /* Make the effect of disabling interrupts be realized immediately */
|
||||
#elif defined(CONFIG_ARMV7_R) || defined(CONFIG_AARCH32_ARMV8_R) \
|
||||
|| defined(CONFIG_ARMV7_A)
|
||||
/*
|
||||
* Interrupts are still disabled from arch_swap so empty clause
|
||||
* here to avoid the preprocessor error below
|
||||
*/
|
||||
#else
|
||||
#error Unknown ARM architecture
|
||||
#endif /* CONFIG_ARMV6_M_ARMV8_M_BASELINE */
|
||||
@@ -135,8 +194,10 @@ out_fp_endif:
|
||||
* to pend PendSV have been taken with the current kernel
|
||||
* state and this is what we're handling currently.
|
||||
*/
|
||||
#if defined(CONFIG_CPU_CORTEX_M)
|
||||
ldr v4, =_SCS_ICSR
|
||||
ldr v3, =_SCS_ICSR_UNPENDSV
|
||||
#endif
|
||||
|
||||
/* _kernel is still in r1 */
|
||||
|
||||
@@ -155,7 +216,9 @@ out_fp_endif:
|
||||
*/
|
||||
|
||||
/* _SCS_ICSR is still in v4 and _SCS_ICSR_UNPENDSV in v3 */
|
||||
#if defined(CONFIG_CPU_CORTEX_M)
|
||||
str v3, [v4, #0]
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_THREAD_LOCAL_STORAGE)
|
||||
/* Grab the TLS pointer */
|
||||
@@ -163,6 +226,15 @@ out_fp_endif:
|
||||
adds r4, r2, r4
|
||||
ldr r0, [r4]
|
||||
|
||||
#if defined(CONFIG_CPU_AARCH32_CORTEX_R) || defined(CONFIG_CPU_AARCH32_CORTEX_A)
|
||||
/* Store TLS pointer in the "Process ID" register.
|
||||
* This register is used as a base pointer to all
|
||||
* thread variables with offsets added by toolchain.
|
||||
*/
|
||||
mcr 15, 0, r0, cr13, cr0, 3
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_CPU_CORTEX_M)
|
||||
/* For Cortex-M, store TLS pointer in a global variable,
|
||||
* as it lacks the process ID or thread ID register
|
||||
* to be used by toolchain to access thread data.
|
||||
@@ -171,6 +243,8 @@ out_fp_endif:
|
||||
str r0, [r4]
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_ARM_STORE_EXC_RETURN)
|
||||
/* Restore EXC_RETURN value. */
|
||||
ldrsb lr, [r2, #_thread_offset_to_mode_exc_return]
|
||||
@@ -312,11 +386,55 @@ in_fp_endif:
|
||||
/* load callee-saved + psp from thread */
|
||||
add r0, r2, #_thread_offset_to_callee_saved
|
||||
ldmia r0, {v1-v8, ip}
|
||||
#elif defined(CONFIG_ARMV7_R) || defined(CONFIG_AARCH32_ARMV8_R) \
|
||||
|| defined(CONFIG_ARMV7_A)
|
||||
_thread_irq_disabled:
|
||||
/* load _kernel into r1 and current k_thread into r2 */
|
||||
ldr r1, =_kernel
|
||||
ldr r2, [r1, #_kernel_offset_to_current]
|
||||
|
||||
/* addr of callee-saved regs in thread in r0 */
|
||||
ldr r0, =_thread_offset_to_callee_saved
|
||||
add r0, r2
|
||||
|
||||
/* restore r4-r11 and sp for incoming thread */
|
||||
cps #MODE_SYS
|
||||
ldm r0, {r4-r11, sp}
|
||||
cps #MODE_SVC
|
||||
|
||||
#if defined(CONFIG_FPU_SHARING)
|
||||
ldrb r0, [r2, #_thread_offset_to_user_options]
|
||||
tst r0, #K_FP_REGS /* _current->base.user_options & K_FP_REGS */
|
||||
beq in_fp_inactive
|
||||
|
||||
mov r3, #FPEXC_EN
|
||||
vmsr fpexc, r3
|
||||
|
||||
/* Restore s16-s31 from thread context */
|
||||
add r0, r2, #_thread_offset_to_preempt_float
|
||||
vldmia r0, {s16-s31}
|
||||
|
||||
mov r3, #0
|
||||
vmsr fpexc, r3
|
||||
|
||||
in_fp_inactive:
|
||||
#endif /* CONFIG_FPU_SHARING */
|
||||
|
||||
#if defined (CONFIG_ARM_MPU)
|
||||
/* r2 contains k_thread */
|
||||
mov r0, r2
|
||||
/* Re-program dynamic memory map */
|
||||
push {r2, lr}
|
||||
bl z_arm_configure_dynamic_mpu_regions
|
||||
pop {r2, lr}
|
||||
#endif
|
||||
#else
|
||||
#error Unknown ARM architecture
|
||||
#endif /* CONFIG_ARMV6_M_ARMV8_M_BASELINE */
|
||||
|
||||
#if defined(CONFIG_CPU_CORTEX_M)
|
||||
msr PSP, ip
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BUILTIN_STACK_GUARD
|
||||
/* r2 contains k_thread */
|
||||
@@ -340,9 +458,13 @@ in_fp_endif:
|
||||
|
||||
/*
|
||||
* Cortex-M: return from PendSV exception
|
||||
* Cortex-R: return to the caller (z_arm_{exc,int}_exit, or z_arm_svc)
|
||||
*/
|
||||
bx lr
|
||||
|
||||
#if defined(CONFIG_ARMV6_M_ARMV8_M_BASELINE) || \
|
||||
defined(CONFIG_ARMV7_M_ARMV8_M_MAINLINE)
|
||||
|
||||
/**
|
||||
*
|
||||
* @brief Service call handler
|
||||
@@ -561,3 +683,239 @@ valid_syscall_id:
|
||||
/* return from SVC to the modified LR - z_arm_do_syscall */
|
||||
bx lr
|
||||
#endif /* CONFIG_USERSPACE */
|
||||
|
||||
#elif defined(CONFIG_ARMV7_R) || defined(CONFIG_AARCH32_ARMV8_R) \
|
||||
|| defined(CONFIG_ARMV7_A)
|
||||
|
||||
#if defined(CONFIG_FPU_SHARING)
|
||||
#define FPU_SF_SIZE ___fpu_t_SIZEOF
|
||||
#else
|
||||
#define FPU_SF_SIZE 0
|
||||
#endif
|
||||
|
||||
/**
|
||||
*
|
||||
* @brief Service call handler
|
||||
*
|
||||
* The service call (svc) is used in the following occasions:
|
||||
* - Cooperative context switching
|
||||
* - IRQ offloading
|
||||
* - Kernel run-time exceptions
|
||||
*
|
||||
*/
|
||||
SECTION_FUNC(TEXT, z_arm_svc)
|
||||
#if defined(CONFIG_USERSPACE)
|
||||
/* Determine if incoming thread was in user context */
|
||||
push {r0}
|
||||
mrs r0, spsr
|
||||
and r0, #MODE_MASK
|
||||
cmp r0, #MODE_USR
|
||||
bne svc_system_thread
|
||||
|
||||
ldr r0, =_kernel
|
||||
ldr r0, [r0, #_kernel_offset_to_current]
|
||||
|
||||
/* Save away user stack pointer */
|
||||
cps #MODE_SYS
|
||||
str sp, [r0, #_thread_offset_to_sp_usr] /* sp_usr */
|
||||
|
||||
/* Switch to privileged stack */
|
||||
ldr sp, [r0, #_thread_offset_to_priv_stack_end] /* priv stack end */
|
||||
cps #MODE_SVC
|
||||
|
||||
svc_system_thread:
|
||||
pop {r0}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Switch to system mode to store r0-r3 to the process stack pointer.
|
||||
* Save r12 and the lr as we could be swapping in another process and
|
||||
* returning to a different location.
|
||||
*/
|
||||
srsdb #MODE_SYS!
|
||||
cps #MODE_SYS
|
||||
push {r0-r3, r12, lr}
|
||||
|
||||
#if defined(CONFIG_FPU_SHARING)
|
||||
sub sp, sp, #___fpu_t_SIZEOF
|
||||
|
||||
/*
|
||||
* Note that this handler was entered with the VFP unit enabled.
|
||||
* The undefined instruction handler uses this to know that it
|
||||
* needs to save the current floating context.
|
||||
*/
|
||||
vmrs r0, fpexc
|
||||
str r0, [sp, #___fpu_t_SIZEOF - 4]
|
||||
|
||||
/* Disable VFP */
|
||||
mov r0, #0
|
||||
vmsr fpexc, r0
|
||||
|
||||
/*
|
||||
* Mark where to store the floating context for the undefined
|
||||
* instruction handler
|
||||
*/
|
||||
ldr r2, =_kernel
|
||||
ldr r0, [r2, #_kernel_offset_to_fp_ctx]
|
||||
cmp r0, #0
|
||||
streq sp, [r2, #_kernel_offset_to_fp_ctx]
|
||||
#endif /* CONFIG_FPU_SHARING */
|
||||
|
||||
mov ip, sp
|
||||
|
||||
cps #MODE_SVC
|
||||
|
||||
/*
|
||||
* Store lr_svc to the SVC mode stack. This value will be restored prior to
|
||||
* exiting the SVC call in z_arm_int_exit.
|
||||
*/
|
||||
push {lr}
|
||||
|
||||
/* Align stack at double-word boundary */
|
||||
and r3, sp, #4
|
||||
sub sp, sp, r3
|
||||
push {r2, r3}
|
||||
|
||||
/* Increment interrupt nesting count */
|
||||
ldr r2, =_kernel
|
||||
ldr r0, [r2, #_kernel_offset_to_nested]
|
||||
add r0, r0, #1
|
||||
str r0, [r2, #_kernel_offset_to_nested]
|
||||
|
||||
/* Get SVC number */
|
||||
mrs r0, spsr
|
||||
tst r0, #0x20
|
||||
|
||||
ldreq r1, [lr, #-4]
|
||||
biceq r1, #0xff000000
|
||||
beq demux
|
||||
|
||||
ldr r1, [lr, #-2]
|
||||
and r1, #0xff
|
||||
|
||||
/*
|
||||
* grab service call number:
|
||||
* 0: context switch
|
||||
* 1: irq_offload (if configured)
|
||||
* 2: kernel panic or oops (software generated fatal exception)
|
||||
* 3: system calls for memory protection
|
||||
*/
|
||||
demux:
|
||||
|
||||
#if defined(CONFIG_USERSPACE)
|
||||
cmp r1, #_SVC_CALL_SYSTEM_CALL
|
||||
beq _do_syscall
|
||||
#endif
|
||||
|
||||
cmp r1, #_SVC_CALL_CONTEXT_SWITCH
|
||||
beq _context_switch
|
||||
|
||||
cmp r1, #_SVC_CALL_RUNTIME_EXCEPT
|
||||
beq _oops
|
||||
|
||||
#if CONFIG_IRQ_OFFLOAD
|
||||
blx z_irq_do_offload /* call C routine which executes the offload */
|
||||
|
||||
/* exception return is done in z_arm_int_exit() */
|
||||
b z_arm_int_exit
|
||||
#endif
|
||||
|
||||
_context_switch:
|
||||
/* handler mode exit, to PendSV */
|
||||
bl z_arm_pendsv
|
||||
|
||||
b z_arm_int_exit
|
||||
|
||||
_oops:
|
||||
/*
|
||||
* Pass the exception frame to z_do_kernel_oops. r0 contains the
|
||||
* exception reason.
|
||||
*/
|
||||
cps #MODE_SYS
|
||||
mov r0, sp
|
||||
cps #MODE_SVC
|
||||
bl z_do_kernel_oops
|
||||
b z_arm_int_exit
|
||||
|
||||
#if defined(CONFIG_USERSPACE)
|
||||
/*
|
||||
* System call will setup a jump to the _do_arm_syscall function
|
||||
* running in system mode when returning from the exception.
|
||||
*
|
||||
* There is some trickery involved here because we have to preserve
|
||||
* the original PC value so that we can return back to the caller of
|
||||
* the SVC.
|
||||
*
|
||||
* On SVC exception, the USER/SYSTEM stack looks like the following:
|
||||
* { possible FPU space } - r0 - r1 - r2 - r3 - r12 - LR - PC - SPSR
|
||||
*
|
||||
* Registers look like:
|
||||
* r0 - arg1
|
||||
* r1 - arg2
|
||||
* r2 - arg3
|
||||
* r3 - arg4
|
||||
* r4 - arg5
|
||||
* r5 - arg6
|
||||
* r6 - call_id
|
||||
* r8 - saved link register
|
||||
*/
|
||||
_do_syscall:
|
||||
/* grab address of LR from stack frame */
|
||||
ldr r8, [ip, #(FPU_SF_SIZE + ___basic_sf_t_pc_OFFSET)]
|
||||
|
||||
/* Make the exception return to system state */
|
||||
ldr r1, [ip, #(FPU_SF_SIZE + ___basic_sf_t_xpsr_OFFSET)]
|
||||
|
||||
/* If leaving thumb mode, set the return address to thumb mode */
|
||||
tst r1, #T_BIT
|
||||
orrne r8, #1
|
||||
|
||||
bic r1, #(MODE_MASK | T_BIT)
|
||||
orr r1, r1, #MODE_SYS
|
||||
str r1, [ip, #(FPU_SF_SIZE + ___basic_sf_t_xpsr_OFFSET)]
|
||||
|
||||
/*
|
||||
* Store the address of z_arm_do_syscall for the exit so the exception
|
||||
* return goes there in system state.
|
||||
*/
|
||||
ldr r1, =z_arm_do_syscall
|
||||
str r1, [ip, #(FPU_SF_SIZE + ___basic_sf_t_pc_OFFSET)]
|
||||
|
||||
/* validate syscall limit, only set priv mode if valid */
|
||||
ldr ip, =K_SYSCALL_LIMIT
|
||||
cmp r6, ip
|
||||
blo valid_syscall_id
|
||||
|
||||
/* bad syscall id. Set arg0 to bad id and set call_id to SYSCALL_BAD */
|
||||
cps #MODE_SYS
|
||||
str r6, [sp]
|
||||
cps #MODE_SVC
|
||||
ldr r6, =K_SYSCALL_BAD
|
||||
|
||||
valid_syscall_id:
|
||||
ldr r0, =_kernel
|
||||
ldr r0, [r0, #_kernel_offset_to_current]
|
||||
ldr r1, [r0, #_thread_offset_to_mode]
|
||||
bic r1, #1
|
||||
/* Store (privileged) mode in thread's mode state variable */
|
||||
str r1, [r0, #_thread_offset_to_mode]
|
||||
dsb
|
||||
|
||||
/* ISB is not strictly necessary here (stack pointer is not being
|
||||
* touched), but it's recommended to avoid executing pre-fetched
|
||||
* instructions with the previous privilege.
|
||||
*/
|
||||
isb
|
||||
|
||||
/* Return to _arm_do_syscall in system state. */
|
||||
b z_arm_int_exit
|
||||
#endif
|
||||
|
||||
GTEXT(z_arm_cortex_r_svc)
|
||||
SECTION_FUNC(TEXT, z_arm_cortex_r_svc)
|
||||
svc #_SVC_CALL_CONTEXT_SWITCH
|
||||
bx lr
|
||||
|
||||
#else
|
||||
#error Unknown ARM architecture
|
||||
#endif /* CONFIG_ARMV6_M_ARMV8_M_BASELINE */
|
||||
@@ -1,23 +1,21 @@
|
||||
/*
|
||||
* Copyright (c) 2013-2014 Wind River Systems, Inc.
|
||||
* Copyright (c) 2021 Lexmark International, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @brief New thread creation for ARM Cortex-M
|
||||
* @brief New thread creation for ARM Cortex-A, Cortex-M and Cortex-R
|
||||
*
|
||||
* Core thread related primitives for the ARM Cortex-M
|
||||
* processor architecture.
|
||||
* Core thread related primitives for the ARM Cortex-A, Cortex-M and
|
||||
* Cortex-R processor architecture.
|
||||
*/
|
||||
|
||||
#include <zephyr/kernel.h>
|
||||
#include <ksched.h>
|
||||
#include <zephyr/wait_q.h>
|
||||
#include <zephyr/sys/barrier.h>
|
||||
#include <stdbool.h>
|
||||
#include <cmsis_core.h>
|
||||
|
||||
#if (MPU_GUARD_ALIGN_AND_SIZE_FLOAT > MPU_GUARD_ALIGN_AND_SIZE)
|
||||
#define FP_GUARD_EXTRA_SIZE (MPU_GUARD_ALIGN_AND_SIZE_FLOAT - \
|
||||
@@ -40,7 +38,7 @@
|
||||
#define DEFAULT_EXC_RETURN 0xFD;
|
||||
#endif
|
||||
|
||||
#if !defined(CONFIG_MULTITHREADING)
|
||||
#if !defined(CONFIG_MULTITHREADING) && defined(CONFIG_CPU_CORTEX_M)
|
||||
K_THREAD_STACK_DECLARE(z_main_stack, CONFIG_MAIN_STACK_SIZE);
|
||||
#endif
|
||||
|
||||
@@ -96,15 +94,31 @@ void arch_new_thread(struct k_thread *thread, k_thread_stack_t *stack,
|
||||
iframe->pc = (uint32_t)z_thread_entry;
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_CPU_CORTEX_M)
|
||||
/* force ARM mode by clearing LSB of address */
|
||||
iframe->pc &= 0xfffffffe;
|
||||
#endif
|
||||
iframe->a1 = (uint32_t)entry;
|
||||
iframe->a2 = (uint32_t)p1;
|
||||
iframe->a3 = (uint32_t)p2;
|
||||
iframe->a4 = (uint32_t)p3;
|
||||
|
||||
#if defined(CONFIG_CPU_CORTEX_M)
|
||||
iframe->xpsr =
|
||||
0x01000000UL; /* clear all, thumb bit is 1, even if RO */
|
||||
#else
|
||||
iframe->xpsr = A_BIT | MODE_SYS;
|
||||
#if defined(CONFIG_COMPILER_ISA_THUMB2)
|
||||
iframe->xpsr |= T_BIT;
|
||||
#endif /* CONFIG_COMPILER_ISA_THUMB2 */
|
||||
#endif /* CONFIG_CPU_CORTEX_M */
|
||||
|
||||
#if !defined(CONFIG_CPU_CORTEX_M) \
|
||||
&& defined(CONFIG_FPU) && defined(CONFIG_FPU_SHARING)
|
||||
iframe = (struct __basic_sf *)
|
||||
((uintptr_t)iframe - sizeof(struct __fpu_sf));
|
||||
memset(iframe, 0, sizeof(struct __fpu_sf));
|
||||
#endif
|
||||
|
||||
thread->callee_saved.psp = (uint32_t)iframe;
|
||||
thread->arch.basepri = 0;
|
||||
@@ -261,6 +275,11 @@ FUNC_NORETURN void arch_user_mode_enter(k_thread_entry_t user_entry,
|
||||
#endif /* CONFIG_FPU && CONFIG_FPU_SHARING */
|
||||
#endif /* CONFIG_MPU_STACK_GUARD */
|
||||
|
||||
#if defined(CONFIG_CPU_AARCH32_CORTEX_R)
|
||||
_current->arch.priv_stack_end =
|
||||
_current->arch.priv_stack_start + CONFIG_PRIVILEGED_STACK_SIZE;
|
||||
#endif
|
||||
|
||||
z_arm_userspace_enter(user_entry, p1, p2, p3,
|
||||
(uint32_t)_current->stack_info.start,
|
||||
_current->stack_info.size -
|
||||
@@ -268,15 +287,6 @@ FUNC_NORETURN void arch_user_mode_enter(k_thread_entry_t user_entry,
|
||||
CODE_UNREACHABLE;
|
||||
}
|
||||
|
||||
|
||||
bool z_arm_thread_is_in_user_mode(void)
|
||||
{
|
||||
uint32_t value;
|
||||
|
||||
/* return mode information */
|
||||
value = __get_CONTROL();
|
||||
return (value & CONTROL_nPRIV_Msk) != 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_BUILTIN_STACK_GUARD)
|
||||
@@ -468,7 +478,11 @@ int arch_float_disable(struct k_thread *thread)
|
||||
|
||||
thread->base.user_options &= ~K_FP_REGS;
|
||||
|
||||
#if defined(CONFIG_CPU_CORTEX_M)
|
||||
__set_CONTROL(__get_CONTROL() & (~CONTROL_FPCA_Msk));
|
||||
#else
|
||||
__set_FPEXC(0);
|
||||
#endif
|
||||
|
||||
/* No need to add an ISB barrier after setting the CONTROL
|
||||
* register; arch_irq_unlock() already adds one.
|
||||
@@ -506,7 +520,7 @@ static void z_arm_prepare_switch_to_main(void)
|
||||
#else
|
||||
__set_FPSCR(0);
|
||||
#endif
|
||||
#if defined(CONFIG_FPU_SHARING)
|
||||
#if defined(CONFIG_CPU_CORTEX_M) && defined(CONFIG_FPU_SHARING)
|
||||
/* In Sharing mode clearing FPSCR may set the CONTROL.FPCA flag. */
|
||||
__set_CONTROL(__get_CONTROL() & (~(CONTROL_FPCA_Msk)));
|
||||
barrier_isync_fence_full();
|
||||
@@ -521,7 +535,7 @@ void arch_switch_to_main_thread(struct k_thread *main_thread, char *stack_ptr,
|
||||
|
||||
_current = main_thread;
|
||||
|
||||
#if defined(CONFIG_THREAD_LOCAL_STORAGE)
|
||||
#if defined(CONFIG_THREAD_LOCAL_STORAGE) && defined(CONFIG_CPU_CORTEX_M)
|
||||
/* On Cortex-M, TLS uses a global variable as pointer to
|
||||
* the thread local storage area. So this needs to point
|
||||
* to the main thread's TLS area before switching to any
|
||||
@@ -562,10 +576,15 @@ void arch_switch_to_main_thread(struct k_thread *main_thread, char *stack_ptr,
|
||||
*/
|
||||
__asm__ volatile (
|
||||
"mov r0, %0\n\t" /* Store _main in R0 */
|
||||
#if defined(CONFIG_CPU_CORTEX_M)
|
||||
"msr PSP, %1\n\t" /* __set_PSP(stack_ptr) */
|
||||
#endif
|
||||
|
||||
"movs r1, #0\n\t"
|
||||
#if defined(CONFIG_ARMV6_M_ARMV8_M_BASELINE)
|
||||
#if defined(CONFIG_ARMV6_M_ARMV8_M_BASELINE) \
|
||||
|| defined(CONFIG_ARMV7_R) \
|
||||
|| defined(CONFIG_AARCH32_ARMV8_R) \
|
||||
|| defined(CONFIG_ARMV7_A)
|
||||
"cpsie i\n\t" /* __enable_irq() */
|
||||
#elif defined(CONFIG_ARMV7_M_ARMV8_M_MAINLINE)
|
||||
"cpsie if\n\t" /* __enable_irq(); __enable_fault_irq() */
|
||||
@@ -585,7 +604,7 @@ void arch_switch_to_main_thread(struct k_thread *main_thread, char *stack_ptr,
|
||||
CODE_UNREACHABLE;
|
||||
}
|
||||
|
||||
#if !defined(CONFIG_MULTITHREADING)
|
||||
#if !defined(CONFIG_MULTITHREADING) && defined(CONFIG_CPU_CORTEX_M)
|
||||
|
||||
FUNC_NORETURN void z_arm_switch_to_main_no_multithreading(
|
||||
k_thread_entry_t main_entry, void *p1, void *p2, void *p3)
|
||||
@@ -646,4 +665,4 @@ FUNC_NORETURN void z_arm_switch_to_main_no_multithreading(
|
||||
|
||||
CODE_UNREACHABLE; /* LCOV_EXCL_LINE */
|
||||
}
|
||||
#endif /* !CONFIG_MULTITHREADING */
|
||||
#endif /* !CONFIG_MULTITHREADING && CONFIG_CPU_CORTEX_M */
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user