Compare commits
86 Commits
collab-ini
...
v3.2-branc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ab2f20ae34 | ||
|
|
eddbc823f9 | ||
|
|
05bdd419fd | ||
|
|
a413244f4a | ||
|
|
5b7742225e | ||
|
|
4831c47b48 | ||
|
|
eb637d1067 | ||
|
|
7ccd0340ee | ||
|
|
0b80bef0e3 | ||
|
|
9e27ddabc0 | ||
|
|
cf715bcad5 | ||
|
|
2f5071f886 | ||
|
|
7eb2dc8996 | ||
|
|
0da370c24d | ||
|
|
a5d8c30f91 | ||
|
|
4b55a665cc | ||
|
|
15af1b64ea | ||
|
|
e7b28e1e0b | ||
|
|
0ca7bdf91a | ||
|
|
ed7118fef0 | ||
|
|
b8c31d6c28 | ||
|
|
09dcc911b3 | ||
|
|
8f6cfb4e40 | ||
|
|
0151e0cdd9 | ||
|
|
2f32a355d9 | ||
|
|
17238d2e0e | ||
|
|
f312f7393d | ||
|
|
fa294c3b5b | ||
|
|
33a5ae7250 | ||
|
|
56cece0632 | ||
|
|
86ee3f3e61 | ||
|
|
438da4bc21 | ||
|
|
0bb84fb889 | ||
|
|
2b6e40e877 | ||
|
|
b3ab6666d3 | ||
|
|
5bce343f0a | ||
|
|
ed05fdf0e5 | ||
|
|
5eb5b3efe5 | ||
|
|
a6e658a0d5 | ||
|
|
46d06d2227 | ||
|
|
15286c5c6d | ||
|
|
2677520f19 | ||
|
|
3d56142dc4 | ||
|
|
62403eacf1 | ||
|
|
470c22017f | ||
|
|
811f0ab6a3 | ||
|
|
58cc6268b1 | ||
|
|
7c8eeb15bd | ||
|
|
fe82772048 | ||
|
|
caefa95e5e | ||
|
|
53fe4d2335 | ||
|
|
3e8f22ae31 | ||
|
|
2a9823bc9d | ||
|
|
cd74fc6f69 | ||
|
|
8fb3893c4c | ||
|
|
a284b8a1b1 | ||
|
|
9b1ffe3d0c | ||
|
|
2f318bf315 | ||
|
|
360a69822f | ||
|
|
bf16432961 | ||
|
|
a478578b9a | ||
|
|
23e2db5a9b | ||
|
|
754b2441b5 | ||
|
|
0a49fd43d6 | ||
|
|
93aee550b6 | ||
|
|
59797c25ad | ||
|
|
6955f1098e | ||
|
|
dc071bb7a7 | ||
|
|
cbce6bfd5a | ||
|
|
50f7d4ba3c | ||
|
|
b7484c0220 | ||
|
|
ae2d093866 | ||
|
|
2320b111de | ||
|
|
4024b93842 | ||
|
|
93944053f6 | ||
|
|
77b221be17 | ||
|
|
005b8af3ef | ||
|
|
94887d11af | ||
|
|
4c97854416 | ||
|
|
4cce882294 | ||
|
|
8275f20657 | ||
|
|
21230e8462 | ||
|
|
a6c099454d | ||
|
|
95b345f0b0 | ||
|
|
638735fc27 | ||
|
|
4b58ae97f3 |
@@ -29,3 +29,4 @@
|
||||
--ignore MULTISTATEMENT_MACRO_USE_DO_WHILE
|
||||
--ignore ENOSYS
|
||||
--ignore IS_ENABLED_CONFIG
|
||||
--exclude ext
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
---
|
||||
BasedOnStyle: LLVM
|
||||
AlignConsecutiveMacros: AcrossComments
|
||||
AllowShortBlocksOnASingleLine: Never
|
||||
AllowShortBlocksOnASingleLine: false
|
||||
AllowShortCaseLabelsOnASingleLine: false
|
||||
AllowShortEnumsOnASingleLine: false
|
||||
AllowShortFunctionsOnASingleLine: None
|
||||
@@ -24,9 +24,7 @@ AttributeMacros:
|
||||
- __packed
|
||||
- __printf_like
|
||||
- __syscall
|
||||
- __syscall_always_inline
|
||||
- __subsystem
|
||||
BitFieldColonSpacing: After
|
||||
BreakBeforeBraces: Linux
|
||||
ColumnLimit: 100
|
||||
ConstructorInitializerIndentWidth: 8
|
||||
@@ -65,12 +63,7 @@ ForEachMacros:
|
||||
- 'Z_GENLIST_FOR_EACH_CONTAINER_SAFE'
|
||||
- 'Z_GENLIST_FOR_EACH_NODE'
|
||||
- 'Z_GENLIST_FOR_EACH_NODE_SAFE'
|
||||
- 'STRUCT_SECTION_FOREACH'
|
||||
- 'TYPE_SECTION_FOREACH'
|
||||
IfMacros:
|
||||
- 'CHECKIF'
|
||||
# Disabled for now, see bug https://github.com/zephyrproject-rtos/zephyr/issues/48520
|
||||
#IncludeBlocks: Regroup
|
||||
IncludeBlocks: Regroup
|
||||
IncludeCategories:
|
||||
- Regex: '^".*\.h"$'
|
||||
Priority: 0
|
||||
@@ -82,10 +75,8 @@ IncludeCategories:
|
||||
Priority: 3
|
||||
IndentCaseLabels: false
|
||||
IndentWidth: 8
|
||||
InsertBraces: true
|
||||
SpaceBeforeParens: ControlStatementsExceptControlMacros
|
||||
SortIncludes: Never
|
||||
UseTab: ForContinuationAndIndentation
|
||||
# SpaceBeforeParens: ControlStatementsExceptControlMacros # clang-format >= 13.0
|
||||
UseTab: Always
|
||||
WhitespaceSensitiveMacros:
|
||||
- STRINGIFY
|
||||
- Z_STRINGIFY
|
||||
|
||||
@@ -12,10 +12,10 @@ coverage:
|
||||
patch: yes
|
||||
changes: no
|
||||
|
||||
# ignore:
|
||||
# - "tests/**/*"
|
||||
# - "samples/**/*"
|
||||
# - "ext/hal/**/*"
|
||||
#ignore:
|
||||
# - "tests/**/*"
|
||||
# - "samples/**/*"
|
||||
# - "ext/hal/**/*"
|
||||
|
||||
parsers:
|
||||
gcov:
|
||||
|
||||
57
.github/ISSUE_TEMPLATE/001_bug_report.md
vendored
57
.github/ISSUE_TEMPLATE/001_bug_report.md
vendored
@@ -1,57 +0,0 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve Zephyr
|
||||
title: ''
|
||||
labels: bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Notes (delete this)**
|
||||
Github Discussions (https://github.com/zephyrproject-rtos/zephyr/discussions)
|
||||
are available to first verify that the issue is a genuine Zephyr bug and not a
|
||||
consequence of Zephyr services misuse.
|
||||
|
||||
This issue list is only for bugs in the main Zephyr code base
|
||||
(https://github.com/zephyrproject-rtos/zephyr/). If the bug is for a project
|
||||
fork (such as NCS) specific feature, please open an issue in the fork project
|
||||
instead.
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
Please also mention any information which could help others to understand
|
||||
the problem you're facing:
|
||||
- What target platform are you using?
|
||||
- What have you tried to diagnose or workaround this issue?
|
||||
- Is this a regression? If yes, have you been able to "git bisect" it to a
|
||||
specific commit?
|
||||
- ...
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. mkdir build; cd build
|
||||
2. cmake -DBOARD=board\_xyz
|
||||
3. make
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Impact**
|
||||
What impact does this issue have on your progress (e.g., annoyance, showstopper)
|
||||
|
||||
**Logs and console output**
|
||||
If applicable, add console logs or other types of debug information
|
||||
e.g Wireshark capture or Logic analyzer capture (upload in zip archive).
|
||||
copy-and-paste text and put a code fence (\`\`\`) before and after, to help
|
||||
explain the issue. (if unable to obtain text log, add a screenshot)
|
||||
|
||||
**Environment (please complete the following information):**
|
||||
- OS: (e.g. Linux, MacOS, Windows)
|
||||
- Toolchain (e.g Zephyr SDK, ...)
|
||||
- Commit SHA or Version used
|
||||
|
||||
**Additional context**
|
||||
Add any other context that could be relevant to your issue, such as pin setting,
|
||||
target configuration, ...
|
||||
47
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
47
.github/ISSUE_TEMPLATE/bug_report.md
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: Create a report to help us improve Zephyr
|
||||
title: ''
|
||||
labels: bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
|
||||
**Describe the bug**
|
||||
A clear and concise description of what the bug is.
|
||||
|
||||
Please also mention any information which could help others to understand
|
||||
the problem you're facing:
|
||||
- What target platform are you using?
|
||||
- What have you tried to diagnose or workaround this issue?
|
||||
- Is this a regression? If yes, have you been able to "git bisect" it to a
|
||||
specific commit?
|
||||
- ...
|
||||
|
||||
**To Reproduce**
|
||||
Steps to reproduce the behavior:
|
||||
1. mkdir build; cd build
|
||||
2. cmake -DBOARD=board\_xyz
|
||||
3. make
|
||||
4. See error
|
||||
|
||||
**Expected behavior**
|
||||
A clear and concise description of what you expected to happen.
|
||||
|
||||
**Impact**
|
||||
What impact does this issue have on your progress (e.g., annoyance, showstopper)
|
||||
|
||||
**Logs and console output**
|
||||
If applicable, add console logs or other types of debug information
|
||||
e.g Wireshark capture or Logic analyzer capture (upload in zip archive).
|
||||
copy-and-paste text and put a code fence (\`\`\`) before and after, to help
|
||||
explain the issue. (if unable to obtain text log, add a screenshot)
|
||||
|
||||
**Environment (please complete the following information):**
|
||||
- OS: (e.g. Linux, MacOS, Windows)
|
||||
- Toolchain (e.g Zephyr SDK, ...)
|
||||
- Commit SHA or Version used
|
||||
|
||||
**Additional context**
|
||||
Add any other context that could be relevant to your issue, such as pin setting,
|
||||
target configuration, ...
|
||||
19
.github/ISSUE_TEMPLATE/hardware_support.md
vendored
Normal file
19
.github/ISSUE_TEMPLATE/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.
|
||||
8
.github/SECURITY.md
vendored
8
.github/SECURITY.md
vendored
@@ -8,12 +8,12 @@ updates:
|
||||
- The most recent release, and the release prior to that.
|
||||
- Active LTS releases.
|
||||
|
||||
At this time, with the latest release of v3.3, the supported
|
||||
At this time, with the latest release of v3.0.0, the supported
|
||||
versions are:
|
||||
|
||||
- v2.7: Current LTS
|
||||
- v3.2: Prior release
|
||||
- v3.3: Current release
|
||||
- v2.7.0: Current LTS
|
||||
- v2.7.0: Prior release
|
||||
- v3.0.0: Current release
|
||||
|
||||
## Reporting process
|
||||
|
||||
|
||||
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 }}
|
||||
|
||||
18
.github/workflows/backport.yml
vendored
18
.github/workflows/backport.yml
vendored
@@ -9,23 +9,11 @@ on:
|
||||
|
||||
jobs:
|
||||
backport:
|
||||
runs-on: ubuntu-20.04
|
||||
name: Backport
|
||||
runs-on: ubuntu-22.04
|
||||
# Only react to merged PRs for security reasons.
|
||||
# See https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_request_target.
|
||||
if: >
|
||||
github.event.pull_request.merged &&
|
||||
(
|
||||
github.event.action == 'closed' ||
|
||||
(
|
||||
github.event.action == 'labeled' &&
|
||||
contains(github.event.label.name, 'backport')
|
||||
)
|
||||
)
|
||||
steps:
|
||||
- name: Backport
|
||||
uses: zephyrproject-rtos/action-backport@v2.0.3-3
|
||||
uses: zephyrproject-rtos/action-backport@v1.1.1-3
|
||||
with:
|
||||
github_token: ${{ secrets.ZB_GITHUB_TOKEN }}
|
||||
issue_labels: Backport
|
||||
labels_template: '["Backport"]'
|
||||
issue_labels: backport
|
||||
|
||||
1
.github/workflows/backport_issue_check.yml
vendored
1
.github/workflows/backport_issue_check.yml
vendored
@@ -9,7 +9,6 @@ jobs:
|
||||
backport:
|
||||
name: Backport Issue Check
|
||||
runs-on: ubuntu-22.04
|
||||
if: github.repository == 'zephyrproject-rtos/zephyr'
|
||||
|
||||
steps:
|
||||
- name: Check out source code
|
||||
|
||||
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*/
|
||||
29
.github/workflows/bluetooth-tests-publish.yaml
vendored
Normal file
29
.github/workflows/bluetooth-tests-publish.yaml
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
name: Publish Bluetooth Tests Results
|
||||
|
||||
on:
|
||||
workflow_run:
|
||||
workflows: ["Bluetooth Tests"]
|
||||
types:
|
||||
- completed
|
||||
jobs:
|
||||
bluetooth-test-results:
|
||||
name: "Publish Bluetooth Test Results"
|
||||
runs-on: ubuntu-20.04
|
||||
if: github.event.workflow_run.conclusion != 'skipped'
|
||||
|
||||
steps:
|
||||
- name: Download artifacts
|
||||
uses: dawidd6/action-download-artifact@v2
|
||||
with:
|
||||
workflow: bluetooth-tests.yaml
|
||||
run_id: ${{ github.event.workflow_run.id }}
|
||||
|
||||
- name: Publish Bluetooth Test Results
|
||||
uses: EnricoMi/publish-unit-test-result-action@v1
|
||||
with:
|
||||
check_name: Bluetooth Test Results
|
||||
comment_mode: off
|
||||
commit: ${{ github.event.workflow_run.head_sha }}
|
||||
event_file: event/event.json
|
||||
event_name: ${{ github.event.workflow_run.event }}
|
||||
files: "bluetooth-test-results/**/bsim_results.xml"
|
||||
83
.github/workflows/bluetooth-tests.yaml
vendored
Normal file
83
.github/workflows/bluetooth-tests.yaml
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
name: Bluetooth Tests
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- ".github/workflows/bluetooth-test*.yaml"
|
||||
- "west.yml"
|
||||
- "subsys/bluetooth/**"
|
||||
- "tests/bluetooth/bsim_bt/**"
|
||||
- "boards/posix/**"
|
||||
- "soc/posix/**"
|
||||
- "arch/posix/**"
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
bluetooth-test:
|
||||
runs-on: ubuntu-20.04
|
||||
container:
|
||||
image: ghcr.io/zephyrproject-rtos/ci:v0.24.3
|
||||
options: '--entrypoint /bin/bash'
|
||||
env:
|
||||
ZEPHYR_TOOLCHAIN_VARIANT: zephyr
|
||||
ZEPHYR_SDK_INSTALL_DIR: /opt/toolchains/zephyr-sdk-0.15.0
|
||||
BSIM_OUT_PATH: /opt/bsim/
|
||||
BSIM_COMPONENTS_PATH: /opt/bsim/components
|
||||
EDTT_PATH: ../tools/edtt
|
||||
bsim_bt_test_results_file: ./bsim_bt_out/bsim_results.xml
|
||||
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: Update PATH for west
|
||||
run: |
|
||||
echo "$HOME/.local/bin" >> $GITHUB_PATH
|
||||
|
||||
- name: checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: west setup
|
||||
env:
|
||||
BASE_REF: ${{ github.base_ref }}
|
||||
run: |
|
||||
git config --global user.email "you@example.com"
|
||||
git config --global user.name "Your Name"
|
||||
git remote -v
|
||||
git rebase origin/${BASE_REF}
|
||||
west init -l . || true
|
||||
west config --global update.narrow true
|
||||
west update 2>&1 1> west.update.log || west update 2>&1 1> west.update2.log
|
||||
|
||||
- name: Run Bluetooth Tests with BSIM
|
||||
run: |
|
||||
export ZEPHYR_BASE=${PWD}
|
||||
WORK_DIR=${ZEPHYR_BASE}/bsim_bt_out tests/bluetooth/bsim_bt/compile.sh
|
||||
RESULTS_FILE=${ZEPHYR_BASE}/${bsim_bt_test_results_file} \
|
||||
SEARCH_PATH=tests/bluetooth/bsim_bt/ tests/bluetooth/bsim_bt/run_parallel.sh
|
||||
|
||||
- name: Upload Test Results
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: bluetooth-test-results
|
||||
path: |
|
||||
./bsim_bt_out/bsim_results.xml
|
||||
${{ github.event_path }}
|
||||
|
||||
- name: Upload Event Details
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: event
|
||||
path: |
|
||||
${{ github.event_path }}
|
||||
28
.github/workflows/bsim-tests-publish.yaml
vendored
28
.github/workflows/bsim-tests-publish.yaml
vendored
@@ -1,28 +0,0 @@
|
||||
name: Publish BabbleSim Tests Results
|
||||
|
||||
on:
|
||||
workflow_run:
|
||||
workflows: ["BabbleSim Tests"]
|
||||
types:
|
||||
- completed
|
||||
jobs:
|
||||
bsim-test-results:
|
||||
name: "Publish BabbleSim Test Results"
|
||||
runs-on: ubuntu-22.04
|
||||
if: github.event.workflow_run.conclusion != 'skipped'
|
||||
|
||||
steps:
|
||||
- name: Download artifacts
|
||||
uses: dawidd6/action-download-artifact@v2
|
||||
with:
|
||||
run_id: ${{ github.event.workflow_run.id }}
|
||||
|
||||
- name: Publish BabbleSim Test Results
|
||||
uses: EnricoMi/publish-unit-test-result-action@v2
|
||||
with:
|
||||
check_name: BabbleSim Test Results
|
||||
comment_mode: off
|
||||
commit: ${{ github.event.workflow_run.head_sha }}
|
||||
event_file: event/event.json
|
||||
event_name: ${{ github.event.workflow_run.event }}
|
||||
files: "bsim-test-results/**/bsim_results.xml"
|
||||
165
.github/workflows/bsim-tests.yaml
vendored
165
.github/workflows/bsim-tests.yaml
vendored
@@ -1,165 +0,0 @@
|
||||
name: BabbleSim Tests
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
paths:
|
||||
- ".github/workflows/bsim-tests.yaml"
|
||||
- ".github/workflows/bsim-tests-publish.yaml"
|
||||
- "west.yml"
|
||||
- "subsys/bluetooth/**"
|
||||
- "tests/bsim/**"
|
||||
- "samples/bluetooth/**"
|
||||
- "boards/posix/**"
|
||||
- "soc/posix/**"
|
||||
- "arch/posix/**"
|
||||
- "include/zephyr/arch/posix/**"
|
||||
- "scripts/native_simulator/**"
|
||||
- "samples/net/sockets/echo_*/**"
|
||||
- "modules/openthread/**"
|
||||
- "subsys/net/l2/openthread/**"
|
||||
- "include/zephyr/net/openthread.h"
|
||||
- "drivers/ieee802154/**"
|
||||
- "include/zephyr/net/ieee802154*"
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
bsim-test:
|
||||
if: github.repository_owner == 'zephyrproject-rtos'
|
||||
runs-on: zephyr-runner-linux-x64-4xlarge
|
||||
container:
|
||||
image: ghcr.io/zephyrproject-rtos/ci:v0.26.4
|
||||
options: '--entrypoint /bin/bash'
|
||||
volumes:
|
||||
- /repo-cache/zephyrproject:/github/cache/zephyrproject
|
||||
env:
|
||||
ZEPHYR_TOOLCHAIN_VARIANT: zephyr
|
||||
ZEPHYR_SDK_INSTALL_DIR: /opt/toolchains/zephyr-sdk-0.16.1
|
||||
BSIM_OUT_PATH: /opt/bsim/
|
||||
BSIM_COMPONENTS_PATH: /opt/bsim/components
|
||||
EDTT_PATH: ../tools/edtt
|
||||
bsim_bluetooth_test_results_file: ./bsim_bluetooth/bsim_results.xml
|
||||
bsim_networking_test_results_file: ./bsim_net/bsim_results.xml
|
||||
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: Clone cached Zephyr repository
|
||||
continue-on-error: true
|
||||
run: |
|
||||
git clone --shared /github/cache/zephyrproject/zephyr .
|
||||
git remote set-url origin ${GITHUB_SERVER_URL}/${GITHUB_REPOSITORY}
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Environment Setup
|
||||
env:
|
||||
BASE_REF: ${{ github.base_ref }}
|
||||
run: |
|
||||
git config --global user.email "bot@zephyrproject.org"
|
||||
git config --global user.name "Zephyr Bot"
|
||||
rm -fr ".git/rebase-apply"
|
||||
git rebase origin/${BASE_REF}
|
||||
git log --pretty=oneline | head -n 10
|
||||
west init -l . || true
|
||||
west config manifest.group-filter -- +ci
|
||||
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: Check common triggering files
|
||||
uses: tj-actions/changed-files@v35
|
||||
id: check-common-files
|
||||
with:
|
||||
files: |
|
||||
.github/workflows/bsim-tests.yaml
|
||||
.github/workflows/bsim-tests-publish.yaml
|
||||
west.yml
|
||||
boards/posix/**
|
||||
soc/posix/**
|
||||
arch/posix/**
|
||||
include/zephyr/arch/posix/**
|
||||
scripts/native_simulator/**
|
||||
tests/bsim/*
|
||||
|
||||
- name: Check if Bluethooth files changed
|
||||
uses: tj-actions/changed-files@v35
|
||||
id: check-bluetooth-files
|
||||
with:
|
||||
files: |
|
||||
tests/bsim/bluetooth/**
|
||||
samples/bluetooth/**
|
||||
subsys/bluetooth/**
|
||||
|
||||
- name: Check if Networking files changed
|
||||
uses: tj-actions/changed-files@v35
|
||||
id: check-networking-files
|
||||
with:
|
||||
files: |
|
||||
tests/bsim/net/**
|
||||
samples/net/sockets/echo_*/**
|
||||
modules/openthread/**
|
||||
subsys/net/l2/openthread/**
|
||||
include/zephyr/net/openthread.h
|
||||
drivers/ieee802154/**
|
||||
include/zephyr/net/ieee802154*
|
||||
|
||||
- name: Update BabbleSim to manifest revision
|
||||
if: >
|
||||
steps.check-bluetooth-files.outputs.any_changed == 'true'
|
||||
|| steps.check-networking-files.outputs.any_changed == 'true'
|
||||
|| steps.check-common-files.outputs.any_changed == 'true'
|
||||
run: |
|
||||
export BSIM_VERSION=$( west list bsim -f {revision} )
|
||||
echo "Manifest points to bsim sha $BSIM_VERSION"
|
||||
cd /opt/bsim_west/bsim
|
||||
git fetch -n origin ${BSIM_VERSION}
|
||||
git config --global advice.detachedHead false
|
||||
git checkout ${BSIM_VERSION}
|
||||
west update
|
||||
make everything -s -j 8
|
||||
|
||||
- name: Run Bluetooth Tests with BSIM
|
||||
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
|
||||
RESULTS_FILE=${ZEPHYR_BASE}/${bsim_bluetooth_test_results_file} \
|
||||
SEARCH_PATH=tests/bsim/bluetooth/ tests/bsim/run_parallel.sh
|
||||
|
||||
- name: Run Networking Tests with BSIM
|
||||
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
|
||||
RESULTS_FILE=${ZEPHYR_BASE}/${bsim_networking_test_results_file} \
|
||||
SEARCH_PATH=tests/bsim/net/ tests/bsim/run_parallel.sh
|
||||
|
||||
- name: Upload Test Results
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: bsim-test-results
|
||||
path: |
|
||||
./bsim_bluetooth/bsim_results.xml
|
||||
./bsim_net/bsim_results.xml
|
||||
${{ github.event_path }}
|
||||
if-no-files-found: warn
|
||||
|
||||
- name: Upload Event Details
|
||||
if: always()
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: event
|
||||
path: |
|
||||
${{ github.event_path }}
|
||||
8
.github/workflows/bug_snapshot.yaml
vendored
8
.github/workflows/bug_snapshot.yaml
vendored
@@ -8,15 +8,15 @@ name: Bug Snapshot
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
branches: [main]
|
||||
branches: [ main ]
|
||||
schedule:
|
||||
# Run daily at 14:05
|
||||
- cron: '5 14 * * *'
|
||||
# Run daily at 14:05
|
||||
- cron: '5 14 * * *'
|
||||
|
||||
jobs:
|
||||
make_bugs_pickle:
|
||||
name: Make bugs pickle
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-20.04
|
||||
if: github.repository_owner == 'zephyrproject-rtos'
|
||||
|
||||
steps:
|
||||
|
||||
18
.github/workflows/clang.yaml
vendored
18
.github/workflows/clang.yaml
vendored
@@ -8,10 +8,9 @@ concurrency:
|
||||
|
||||
jobs:
|
||||
clang-build:
|
||||
if: github.repository_owner == 'zephyrproject-rtos'
|
||||
runs-on: zephyr-runner-linux-x64-4xlarge
|
||||
container:
|
||||
image: ghcr.io/zephyrproject-rtos/ci:v0.26.4
|
||||
image: ghcr.io/zephyrproject-rtos/ci:v0.24.3
|
||||
options: '--entrypoint /bin/bash'
|
||||
volumes:
|
||||
- /repo-cache/zephyrproject:/github/cache/zephyrproject
|
||||
@@ -20,8 +19,8 @@ jobs:
|
||||
matrix:
|
||||
platform: ["native_posix"]
|
||||
env:
|
||||
ZEPHYR_SDK_INSTALL_DIR: /opt/toolchains/zephyr-sdk-0.16.1
|
||||
LLVM_TOOLCHAIN_PATH: /usr/lib/llvm-16
|
||||
ZEPHYR_SDK_INSTALL_DIR: /opt/toolchains/zephyr-sdk-0.15.0
|
||||
LLVM_TOOLCHAIN_PATH: /usr/lib/llvm-15
|
||||
COMMIT_RANGE: ${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }}
|
||||
BASE_REF: ${{ github.base_ref }}
|
||||
outputs:
|
||||
@@ -86,7 +85,7 @@ jobs:
|
||||
uses: zephyrproject-rtos/action-s3-cache@v1.2.0
|
||||
with:
|
||||
key: ${{ steps.ccache_cache_timestamp.outputs.repo }}-${{ github.ref_name }}-clang-${{ matrix.platform }}-ccache
|
||||
path: /github/home/.cache/ccache
|
||||
path: /github/home/.ccache
|
||||
aws-s3-bucket: ccache.zephyrproject.org
|
||||
aws-access-key-id: ${{ vars.AWS_CCACHE_ACCESS_KEY_ID }}
|
||||
aws-secret-access-key: ${{ secrets.AWS_CCACHE_SECRET_ACCESS_KEY }}
|
||||
@@ -94,8 +93,7 @@ jobs:
|
||||
|
||||
- name: ccache stats initial
|
||||
run: |
|
||||
mkdir -p /github/home/.cache
|
||||
test -d github/home/.cache/ccache && rm -rf /github/home/.cache/ccache && mv github/home/.cache/ccache /github/home/.cache/ccache
|
||||
test -d github/home/.ccache && rm -rf /github/home/.ccache && mv github/home/.ccache /github/home/.ccache
|
||||
ccache -M 10G -s
|
||||
|
||||
- name: Run Tests with Twister
|
||||
@@ -120,7 +118,6 @@ jobs:
|
||||
- name: ccache stats post
|
||||
run: |
|
||||
ccache -s
|
||||
ccache -p
|
||||
|
||||
- name: Upload Unit Test Results
|
||||
if: always() && steps.twister.outputs.report_needed != 0
|
||||
@@ -132,7 +129,7 @@ jobs:
|
||||
clang-build-results:
|
||||
name: "Publish Unit Tests Results"
|
||||
needs: clang-build
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-20.04
|
||||
if: (success() || failure() ) && needs.clang-build.outputs.report_needed != 0
|
||||
steps:
|
||||
- name: Download Artifacts
|
||||
@@ -155,9 +152,10 @@ jobs:
|
||||
junit-clang.html
|
||||
|
||||
- name: Publish Unit Test Results
|
||||
uses: EnricoMi/publish-unit-test-result-action@v2
|
||||
uses: EnricoMi/publish-unit-test-result-action@v1
|
||||
if: always()
|
||||
with:
|
||||
check_name: Unit Test Results
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
files: "**/twister.xml"
|
||||
comment_mode: off
|
||||
|
||||
15
.github/workflows/codecov.yaml
vendored
15
.github/workflows/codecov.yaml
vendored
@@ -10,10 +10,9 @@ concurrency:
|
||||
|
||||
jobs:
|
||||
codecov:
|
||||
if: github.repository == 'zephyrproject-rtos/zephyr'
|
||||
runs-on: zephyr-runner-linux-x64-4xlarge
|
||||
container:
|
||||
image: ghcr.io/zephyrproject-rtos/ci:v0.26.4
|
||||
image: ghcr.io/zephyrproject-rtos/ci:v0.24.3
|
||||
options: '--entrypoint /bin/bash'
|
||||
volumes:
|
||||
- /repo-cache/zephyrproject:/github/cache/zephyrproject
|
||||
@@ -22,7 +21,7 @@ jobs:
|
||||
matrix:
|
||||
platform: ["native_posix", "qemu_x86", "unit_testing"]
|
||||
env:
|
||||
ZEPHYR_SDK_INSTALL_DIR: /opt/toolchains/zephyr-sdk-0.16.1
|
||||
ZEPHYR_SDK_INSTALL_DIR: /opt/toolchains/zephyr-sdk-0.15.0
|
||||
steps:
|
||||
- name: Apply container owner mismatch workaround
|
||||
run: |
|
||||
@@ -70,7 +69,7 @@ jobs:
|
||||
uses: zephyrproject-rtos/action-s3-cache@v1.2.0
|
||||
with:
|
||||
key: ${{ steps.ccache_cache_prop.outputs.repo }}-${{github.event_name}}-${{matrix.platform}}-codecov-ccache
|
||||
path: /github/home/.cache/ccache
|
||||
path: /github/home/.ccache
|
||||
aws-s3-bucket: ccache.zephyrproject.org
|
||||
aws-access-key-id: ${{ vars.AWS_CCACHE_ACCESS_KEY_ID }}
|
||||
aws-secret-access-key: ${{ secrets.AWS_CCACHE_SECRET_ACCESS_KEY }}
|
||||
@@ -78,8 +77,7 @@ jobs:
|
||||
|
||||
- name: ccache stats initial
|
||||
run: |
|
||||
mkdir -p /github/home/.cache
|
||||
test -d github/home/.cache/ccache && mv github/home/.cache/ccache /github/home/.cache/ccache
|
||||
test -d github/home/.ccache && mv github/home/.ccache /github/home/.ccache
|
||||
ccache -M 10G -s
|
||||
|
||||
- name: Run Tests with Twister (Push)
|
||||
@@ -101,7 +99,6 @@ jobs:
|
||||
- name: ccache stats post
|
||||
run: |
|
||||
ccache -s
|
||||
ccache -p
|
||||
|
||||
- name: Upload Coverage Results
|
||||
if: always()
|
||||
@@ -113,8 +110,8 @@ jobs:
|
||||
codecov-results:
|
||||
name: "Publish Coverage Results"
|
||||
needs: codecov
|
||||
runs-on: ubuntu-22.04
|
||||
# the codecov job might be skipped, we don't need to run this job then
|
||||
runs-on: ubuntu-20.04
|
||||
# the codecov job might be skipped, we don't need to run this job then
|
||||
if: success() || failure()
|
||||
|
||||
steps:
|
||||
|
||||
6
.github/workflows/coding_guidelines.yml
vendored
6
.github/workflows/coding_guidelines.yml
vendored
@@ -4,7 +4,7 @@ on: pull_request
|
||||
|
||||
jobs:
|
||||
compliance_job:
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-20.04
|
||||
name: Run coding guidelines checks on patch series (PR)
|
||||
steps:
|
||||
- name: Checkout the code
|
||||
@@ -28,7 +28,9 @@ jobs:
|
||||
- name: Install Packages
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install coccinelle
|
||||
sudo apt-get install ocaml-base-nox
|
||||
wget https://launchpad.net/~npalix/+archive/ubuntu/coccinelle/+files/coccinelle_1.0.8~20.04npalix1_amd64.deb
|
||||
sudo dpkg -i coccinelle_1.0.8~20.04npalix1_amd64.deb
|
||||
|
||||
- name: Run Coding Guildeines Checks
|
||||
continue-on-error: true
|
||||
|
||||
38
.github/workflows/compliance.yml
vendored
38
.github/workflows/compliance.yml
vendored
@@ -3,8 +3,24 @@ name: Compliance Checks
|
||||
on: pull_request
|
||||
|
||||
jobs:
|
||||
maintainer_check:
|
||||
runs-on: ubuntu-20.04
|
||||
name: Check MAINTAINERS file
|
||||
steps:
|
||||
- name: Checkout the code
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.head.sha }}
|
||||
fetch-depth: 0
|
||||
- name: Run Maintainers Script
|
||||
id: maintainer
|
||||
env:
|
||||
BASE_REF: ${{ github.base_ref }}
|
||||
run: |
|
||||
python3 ./scripts/get_maintainer.py path CMakeLists.txt
|
||||
|
||||
check_compliance:
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-20.04
|
||||
name: Run compliance checks on patch series (PR)
|
||||
steps:
|
||||
- name: Update PATH for west
|
||||
@@ -27,7 +43,7 @@ jobs:
|
||||
run: |
|
||||
pip3 install setuptools
|
||||
pip3 install wheel
|
||||
pip3 install python-magic lxml junitparser gitlint pylint pykwalify yamllint
|
||||
pip3 install python-magic junitparser gitlint pylint pykwalify
|
||||
pip3 install west
|
||||
|
||||
- name: west setup
|
||||
@@ -37,9 +53,6 @@ jobs:
|
||||
git config --global user.email "you@example.com"
|
||||
git config --global user.name "Your Name"
|
||||
git remote -v
|
||||
# Ensure there's no merge commits in the PR
|
||||
[[ "$(git rev-list --merges --count origin/${BASE_REF}..)" == "0" ]] || \
|
||||
(echo "::error ::Merge commits not allowed, rebase instead";false)
|
||||
git rebase origin/${BASE_REF}
|
||||
# debug
|
||||
git log --pretty=oneline | head -n 10
|
||||
@@ -56,12 +69,11 @@ jobs:
|
||||
# debug
|
||||
ls -la
|
||||
git log --pretty=oneline | head -n 10
|
||||
./scripts/ci/check_compliance.py --annotate -e KconfigBasic \
|
||||
-c origin/${BASE_REF}..
|
||||
./scripts/ci/check_compliance.py -m Devicetree -m Gitlint -m Identity -m Nits -m pylint -m checkpatch -m Kconfig -c origin/${BASE_REF}..
|
||||
|
||||
- name: upload-results
|
||||
uses: actions/upload-artifact@v3
|
||||
continue-on-error: true
|
||||
continue-on-error: True
|
||||
with:
|
||||
name: compliance.xml
|
||||
path: compliance.xml
|
||||
@@ -72,15 +84,13 @@ jobs:
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
files=($(./scripts/ci/check_compliance.py -l))
|
||||
for file in "${files[@]}"; do
|
||||
f="${file}.txt"
|
||||
if [[ -s $f ]]; then
|
||||
errors=$(cat $f)
|
||||
for file in Nits.txt checkpatch.txt Identity.txt Gitlint.txt pylint.txt Devicetree.txt Kconfig.txt; do
|
||||
if [[ -s $file ]]; then
|
||||
errors=$(cat $file)
|
||||
errors="${errors//'%'/'%25'}"
|
||||
errors="${errors//$'\n'/'%0A'}"
|
||||
errors="${errors//$'\r'/'%0D'}"
|
||||
echo "::error file=${f}::$errors"
|
||||
echo "::error file=${file}::$errors"
|
||||
exit=1
|
||||
fi
|
||||
done
|
||||
|
||||
6
.github/workflows/daily_test_version.yml
vendored
6
.github/workflows/daily_test_version.yml
vendored
@@ -5,14 +5,14 @@ name: Publish commit for daily testing
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '50 22 * * *'
|
||||
- cron: '50 22 * * *'
|
||||
push:
|
||||
branches:
|
||||
- refs/tags/*
|
||||
- refs/tags/*
|
||||
|
||||
jobs:
|
||||
get_version:
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-20.04
|
||||
if: github.repository == 'zephyrproject-rtos/zephyr'
|
||||
|
||||
steps:
|
||||
|
||||
10
.github/workflows/devicetree_checks.yml
vendored
10
.github/workflows/devicetree_checks.yml
vendored
@@ -27,12 +27,12 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
python-version: [3.8, 3.9, '3.10']
|
||||
os: [ubuntu-22.04, macos-11, windows-2022]
|
||||
os: [ubuntu-20.04, macos-11, windows-2022]
|
||||
exclude:
|
||||
- os: macos-11
|
||||
python-version: 3.6
|
||||
- os: windows-2022
|
||||
python-version: 3.6
|
||||
- os: macos-11
|
||||
python-version: 3.6
|
||||
- os: windows-2022
|
||||
python-version: 3.6
|
||||
steps:
|
||||
- name: checkout
|
||||
uses: actions/checkout@v3
|
||||
|
||||
7
.github/workflows/do_not_merge.yml
vendored
7
.github/workflows/do_not_merge.yml
vendored
@@ -6,13 +6,12 @@ on:
|
||||
|
||||
jobs:
|
||||
do-not-merge:
|
||||
if: ${{ contains(github.event.*.labels.*.name, 'DNM') ||
|
||||
contains(github.event.*.labels.*.name, 'TSC') }}
|
||||
if: ${{ contains(github.event.*.labels.*.name, 'DNM') }}
|
||||
name: Prevent Merging
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- name: Check for label
|
||||
run: |
|
||||
echo "Pull request is labeled as 'DNM' or 'TSC'"
|
||||
echo "Pull request is labeled as 'DNM'"
|
||||
echo "This workflow fails so that the pull request cannot be merged"
|
||||
exit 1
|
||||
|
||||
36
.github/workflows/doc-build.yml
vendored
36
.github/workflows/doc-build.yml
vendored
@@ -22,20 +22,20 @@ 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
|
||||
WEST_VERSION: 1.0.0
|
||||
WEST_VERSION: 0.14.0
|
||||
# The latest CMake available directly with apt is 3.18, but we need >=3.20
|
||||
# so we fetch that through pip.
|
||||
CMAKE_VERSION: 3.20.5
|
||||
DOXYGEN_VERSION: 1.9.6
|
||||
DOXYGEN_VERSION: 1.9.4
|
||||
|
||||
jobs:
|
||||
doc-build-html:
|
||||
name: "Documentation Build (HTML)"
|
||||
runs-on: zephyr-runner-linux-x64-4xlarge
|
||||
runs-on: ubuntu-20.04
|
||||
timeout-minutes: 45
|
||||
concurrency:
|
||||
group: doc-build-html-${{ github.ref }}
|
||||
@@ -48,8 +48,8 @@ jobs:
|
||||
- name: install-pkgs
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y ninja-build graphviz
|
||||
wget --no-verbose "https://github.com/doxygen/doxygen/releases/download/Release_${DOXYGEN_VERSION//./_}/doxygen-${DOXYGEN_VERSION}.linux.bin.tar.gz"
|
||||
sudo apt-get install -y ninja-build graphviz libclang1-9 libclang-cpp9
|
||||
wget --no-verbose https://downloads.sourceforge.net/project/doxygen/rel-${DOXYGEN_VERSION}/doxygen-${DOXYGEN_VERSION}.linux.bin.tar.gz
|
||||
tar xf doxygen-${DOXYGEN_VERSION}.linux.bin.tar.gz
|
||||
echo "${PWD}/doxygen-${DOXYGEN_VERSION}/bin" >> $GITHUB_PATH
|
||||
|
||||
@@ -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: |
|
||||
@@ -116,10 +115,9 @@ jobs:
|
||||
|
||||
doc-build-pdf:
|
||||
name: "Documentation Build (PDF)"
|
||||
if: github.event_name != 'pull_request'
|
||||
runs-on: zephyr-runner-linux-x64-4xlarge
|
||||
runs-on: ubuntu-20.04
|
||||
container: texlive/texlive:latest
|
||||
timeout-minutes: 60
|
||||
timeout-minutes: 45
|
||||
concurrency:
|
||||
group: doc-build-pdf-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
@@ -137,7 +135,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 +146,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 +155,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 +165,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
|
||||
|
||||
2
.github/workflows/doc-publish-pr.yml
vendored
2
.github/workflows/doc-publish-pr.yml
vendored
@@ -13,7 +13,7 @@ on:
|
||||
jobs:
|
||||
doc-publish:
|
||||
name: Publish Documentation
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-20.04
|
||||
if: |
|
||||
github.event.workflow_run.event == 'pull_request' &&
|
||||
github.event.workflow_run.conclusion == 'success' &&
|
||||
|
||||
2
.github/workflows/doc-publish.yml
vendored
2
.github/workflows/doc-publish.yml
vendored
@@ -16,7 +16,7 @@ on:
|
||||
jobs:
|
||||
doc-publish:
|
||||
name: Publish Documentation
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-20.04
|
||||
if: |
|
||||
github.event.workflow_run.event != 'pull_request' &&
|
||||
github.event.workflow_run.conclusion == 'success' &&
|
||||
|
||||
6
.github/workflows/errno.yml
vendored
6
.github/workflows/errno.yml
vendored
@@ -8,11 +8,11 @@ on:
|
||||
|
||||
jobs:
|
||||
check-errno:
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-20.04
|
||||
container:
|
||||
image: ghcr.io/zephyrproject-rtos/ci:v0.26.4
|
||||
image: ghcr.io/zephyrproject-rtos/ci:v0.24.3
|
||||
env:
|
||||
ZEPHYR_SDK_INSTALL_DIR: /opt/toolchains/zephyr-sdk-0.16.1
|
||||
ZEPHYR_SDK_INSTALL_DIR: /opt/toolchains/zephyr-sdk-0.15.0
|
||||
|
||||
steps:
|
||||
- name: Apply container owner mismatch workaround
|
||||
|
||||
22
.github/workflows/footprint-tracking.yml
vendored
22
.github/workflows/footprint-tracking.yml
vendored
@@ -8,9 +8,6 @@ on:
|
||||
paths:
|
||||
- 'VERSION'
|
||||
- '.github/workflows/footprint-tracking.yml'
|
||||
branches:
|
||||
- main
|
||||
- v*-branch
|
||||
tags:
|
||||
# only publish v* tags, do not care about zephyr-v* which point to the
|
||||
# same commit
|
||||
@@ -22,15 +19,15 @@ concurrency:
|
||||
|
||||
jobs:
|
||||
footprint-tracking:
|
||||
runs-on: ubuntu-22.04
|
||||
if: github.repository_owner == 'zephyrproject-rtos'
|
||||
runs-on: ubuntu-20.04
|
||||
if: github.repository == 'zephyrproject-rtos/zephyr'
|
||||
container:
|
||||
image: ghcr.io/zephyrproject-rtos/ci:v0.26.4
|
||||
image: ghcr.io/zephyrproject-rtos/ci:v0.24.3
|
||||
options: '--entrypoint /bin/bash'
|
||||
strategy:
|
||||
fail-fast: false
|
||||
env:
|
||||
ZEPHYR_SDK_INSTALL_DIR: /opt/toolchains/zephyr-sdk-0.16.1
|
||||
ZEPHYR_SDK_INSTALL_DIR: /opt/toolchains/zephyr-sdk-0.15.0
|
||||
ZEPHYR_TOOLCHAIN_VARIANT: zephyr
|
||||
steps:
|
||||
- name: Apply container owner mismatch workaround
|
||||
@@ -44,11 +41,8 @@ jobs:
|
||||
- name: Update PATH for west
|
||||
run: |
|
||||
echo "$HOME/.local/bin" >> $GITHUB_PATH
|
||||
|
||||
- name: Install packages
|
||||
- name: Install pip packages
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y python3-venv
|
||||
sudo pip3 install -U setuptools wheel pip gitpython
|
||||
|
||||
- name: checkout
|
||||
@@ -76,10 +70,4 @@ jobs:
|
||||
run: |
|
||||
export ZEPHYR_BASE=${PWD}
|
||||
./scripts/footprint/track.py -p scripts/footprint/plan.txt
|
||||
|
||||
- name: Upload footprint data
|
||||
run: |
|
||||
python3 -m venv .venv
|
||||
. .venv/bin/activate
|
||||
pip3 install awscli
|
||||
aws s3 sync --quiet footprint_data/ s3://testing.zephyrproject.org/footprint_data/
|
||||
|
||||
6
.github/workflows/footprint.yml
vendored
6
.github/workflows/footprint.yml
vendored
@@ -8,15 +8,15 @@ concurrency:
|
||||
|
||||
jobs:
|
||||
footprint-delta:
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-20.04
|
||||
if: github.repository == 'zephyrproject-rtos/zephyr'
|
||||
container:
|
||||
image: ghcr.io/zephyrproject-rtos/ci:v0.26.4
|
||||
image: ghcr.io/zephyrproject-rtos/ci:v0.24.3
|
||||
options: '--entrypoint /bin/bash'
|
||||
strategy:
|
||||
fail-fast: false
|
||||
env:
|
||||
ZEPHYR_SDK_INSTALL_DIR: /opt/toolchains/zephyr-sdk-0.16.1
|
||||
ZEPHYR_SDK_INSTALL_DIR: /opt/toolchains/zephyr-sdk-0.15.0
|
||||
ZEPHYR_TOOLCHAIN_VARIANT: zephyr
|
||||
steps:
|
||||
- name: Apply container owner mismatch workaround
|
||||
|
||||
@@ -1,52 +0,0 @@
|
||||
name: Greet first time contributor
|
||||
|
||||
on:
|
||||
issues:
|
||||
types: [opened]
|
||||
pull_request_target:
|
||||
types: [opened, closed]
|
||||
|
||||
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
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
issue-message: >
|
||||
Hi @${{github.event.issue.user.login}}! We appreciate you submitting your first issue
|
||||
for our open-source project. 🌟
|
||||
|
||||
|
||||
Even though I'm a bot, I can assure you that the whole community is genuinely grateful
|
||||
for your time and effort. 🤖💙
|
||||
|
||||
pr-opened-message: >
|
||||
Hello @${{ github.event.pull_request.user.login }}, and thank you very much for your
|
||||
first pull request to the Zephyr project!
|
||||
|
||||
|
||||
A project maintainer just triggered our CI pipeline to run it against your PR and
|
||||
ensure it's compliant and doesn't cause any issues. You might want to take this
|
||||
opportunity to review the project's [Contributor
|
||||
Expectations](https://docs.zephyrproject.org/latest/contribute/contributor_expectations.html)
|
||||
and make any updates to your pull request if necessary. 😊
|
||||
|
||||
pr-merged-message: >
|
||||
Hi @${{ github.event.pull_request.user.login }}!
|
||||
|
||||
Congratulations on getting your very first Zephyr pull request merged 🎉🥳. This is a
|
||||
fantastic achievement, and we're thrilled to have you as part of our community!
|
||||
|
||||
|
||||
To celebrate this milestone and showcase your contribution, we'd love to award you the
|
||||
Zephyr Technical Contributor badge. If you're interested, please claim your badge by
|
||||
filling out this form: [Claim Your Zephyr Badge](https://forms.gle/oCw9iAPLhUsHTapc8).
|
||||
|
||||
|
||||
Thank you for your valuable input, and we look forward to seeing more of your
|
||||
contributions in the future! 🪁
|
||||
6
.github/workflows/issue_count.yml
vendored
6
.github/workflows/issue_count.yml
vendored
@@ -2,7 +2,7 @@ name: Issue Tracker
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '*/10 * * * *'
|
||||
- cron: '*/10 * * * *'
|
||||
|
||||
env:
|
||||
OUTPUT_FILE_NAME: IssuesReport.md
|
||||
@@ -14,7 +14,7 @@ env:
|
||||
jobs:
|
||||
track-issues:
|
||||
name: "Collect Issue Stats"
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-20.04
|
||||
if: github.repository == 'zephyrproject-rtos/zephyr'
|
||||
|
||||
steps:
|
||||
@@ -36,7 +36,7 @@ jobs:
|
||||
|
||||
- name: upload-stats
|
||||
uses: actions/upload-artifact@v3
|
||||
continue-on-error: true
|
||||
continue-on-error: True
|
||||
with:
|
||||
name: ${{ env.OUTPUT_FILE_NAME }}
|
||||
path: ${{ env.OUTPUT_FILE_NAME }}
|
||||
|
||||
4
.github/workflows/license_check.yml
vendored
4
.github/workflows/license_check.yml
vendored
@@ -4,11 +4,11 @@ on: [pull_request]
|
||||
|
||||
jobs:
|
||||
scancode_job:
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-20.04
|
||||
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
|
||||
|
||||
15
.github/workflows/manifest.yml
vendored
15
.github/workflows/manifest.yml
vendored
@@ -15,24 +15,13 @@ 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@f54422ea250adb7cc1b9f62bfe125978bb2c58ee
|
||||
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'
|
||||
labels: 'manifest, west'
|
||||
dnm-labels: 'DNM'
|
||||
|
||||
16
.github/workflows/release.yml
vendored
16
.github/workflows/release.yml
vendored
@@ -4,11 +4,10 @@ on:
|
||||
push:
|
||||
tags:
|
||||
- 'v*'
|
||||
- '!v*rc*'
|
||||
|
||||
jobs:
|
||||
release:
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-20.04
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
with:
|
||||
@@ -18,7 +17,6 @@ jobs:
|
||||
id: get_version
|
||||
run: |
|
||||
echo "VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
|
||||
echo "TRIMMED_VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: REUSE Compliance Check
|
||||
uses: fsfe/reuse-action@v1
|
||||
@@ -27,14 +25,18 @@ jobs:
|
||||
|
||||
- name: upload-results
|
||||
uses: actions/upload-artifact@v3
|
||||
continue-on-error: true
|
||||
continue-on-error: True
|
||||
with:
|
||||
name: zephyr-${{ steps.get_version.outputs.VERSION }}.spdx
|
||||
path: zephyr-${{ steps.get_version.outputs.VERSION }}.spdx
|
||||
|
||||
- name: Create empty release notes body
|
||||
- name: Get Diff since last tag
|
||||
run: |
|
||||
echo "TODO: add release overview and notes link" > release-notes.txt
|
||||
oldtag=$(git describe --abbrev=0 ${{ github.ref }}^)
|
||||
echo "Changes since ${oldtag}:" > release-notes.txt
|
||||
echo "" >> release-notes.txt
|
||||
echo "" >> release-notes.txt
|
||||
git shortlog ${oldtag}..${{ github.ref }} >> release-notes.txt
|
||||
|
||||
- name: Create Release
|
||||
id: create_release
|
||||
@@ -43,7 +45,7 @@ jobs:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
with:
|
||||
tag_name: ${{ github.ref }}
|
||||
release_name: Zephyr ${{ steps.get_version.outputs.TRIMMED_VERSION }}
|
||||
release_name: Zephyr ${{ github.ref }}
|
||||
body_path: release-notes.txt
|
||||
draft: true
|
||||
prerelease: true
|
||||
|
||||
71
.github/workflows/scripts_tests.yml
vendored
71
.github/workflows/scripts_tests.yml
vendored
@@ -1,71 +0,0 @@
|
||||
# Copyright 2023 Google LLC
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
name: Scripts tests
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
- v*-branch
|
||||
paths:
|
||||
- 'scripts/build/**'
|
||||
- '.github/workflows/scripts_tests.yml'
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
- v*-branch
|
||||
paths:
|
||||
- 'scripts/build/**'
|
||||
- '.github/workflows/scripts_tests.yml'
|
||||
|
||||
jobs:
|
||||
scripts-tests:
|
||||
name: Scripts tests
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
python-version: [3.8, 3.9, '3.10']
|
||||
os: [ubuntu-20.04]
|
||||
steps:
|
||||
- name: checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.head.sha }}
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Rebase
|
||||
continue-on-error: true
|
||||
env:
|
||||
BASE_REF: ${{ github.base_ref }}
|
||||
PR_HEAD: ${{ github.event.pull_request.head.sha }}
|
||||
run: |
|
||||
git config --global user.email "actions@zephyrproject.org"
|
||||
git config --global user.name "Github Actions"
|
||||
git rebase origin/${BASE_REF}
|
||||
git log --graph --oneline HEAD...${PR_HEAD}
|
||||
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
|
||||
- name: cache-pip-linux
|
||||
if: startsWith(runner.os, 'Linux')
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: ~/.cache/pip
|
||||
key: ${{ runner.os }}-pip-${{ matrix.python-version }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-pip-${{ matrix.python-version }}
|
||||
|
||||
- name: install-packages
|
||||
run: |
|
||||
pip3 install -r scripts/requirements-base.txt -r scripts/requirements-build-test.txt
|
||||
|
||||
- name: Run pytest
|
||||
env:
|
||||
ZEPHYR_BASE: ./
|
||||
run: |
|
||||
echo "Run script tests"
|
||||
pytest ./scripts/build
|
||||
@@ -1,28 +0,0 @@
|
||||
name: Stale Workflow Queue Cleanup
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
branches: [main]
|
||||
schedule:
|
||||
# everyday at 15:00
|
||||
- cron: '0 15 * * *'
|
||||
|
||||
concurrency:
|
||||
group: stale-workflow-queue-cleanup
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
cleanup:
|
||||
name: Cleanup
|
||||
runs-on: ubuntu-22.04
|
||||
|
||||
steps:
|
||||
- name: Delete stale queued workflow runs
|
||||
uses: MajorScruffy/delete-old-workflow-runs@v0.3.0
|
||||
with:
|
||||
repository: ${{ github.repository }}
|
||||
# Remove any workflow runs in "queued" state for more than 1 day
|
||||
older-than-seconds: 86400
|
||||
status: queued
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
15
.github/workflows/stale_issue.yml
vendored
15
.github/workflows/stale_issue.yml
vendored
@@ -6,19 +6,14 @@ on:
|
||||
jobs:
|
||||
stale:
|
||||
name: Find Stale issues and PRs
|
||||
runs-on: ubuntu-22.04
|
||||
runs-on: ubuntu-20.04
|
||||
if: github.repository == 'zephyrproject-rtos/zephyr'
|
||||
steps:
|
||||
- uses: actions/stale@v8
|
||||
- uses: actions/stale@v3
|
||||
with:
|
||||
stale-pr-message: 'This pull request has been marked as stale because it has been open (more
|
||||
than) 60 days with no activity. Remove the stale label or add a comment saying that you
|
||||
would like to have the label removed otherwise this pull request will automatically be
|
||||
closed in 14 days. Note, that you can always re-open a closed pull request at any time.'
|
||||
stale-issue-message: 'This issue has been marked as stale because it has been open (more
|
||||
than) 60 days with no activity. Remove the stale label or add a comment saying that you
|
||||
would like to have the label removed otherwise this issue will automatically be closed in
|
||||
14 days. Note, that you can always re-open a closed issue at any time.'
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
stale-pr-message: 'This pull request has been marked as stale because it has been open (more than) 60 days with no activity. Remove the stale label or add a comment saying that you would like to have the label removed otherwise this pull request will automatically be closed in 14 days. Note, that you can always re-open a closed pull request at any time.'
|
||||
stale-issue-message: 'This issue has been marked as stale because it has been open (more than) 60 days with no activity. Remove the stale label or add a comment saying that you would like to have the label removed otherwise this issue will automatically be closed in 14 days. Note, that you can always re-open a closed issue at any time.'
|
||||
days-before-stale: 60
|
||||
days-before-close: 14
|
||||
stale-issue-label: 'Stale'
|
||||
|
||||
60
.github/workflows/twister.yaml
vendored
60
.github/workflows/twister.yaml
vendored
@@ -10,8 +10,8 @@ on:
|
||||
- main
|
||||
- v*-branch
|
||||
schedule:
|
||||
# Run at 03:00 UTC on every Sunday
|
||||
- cron: '0 3 * * 0'
|
||||
# Run at 00:00 on Wednesday and Saturday
|
||||
- cron: '0 0 * * 3,6'
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.head_ref || github.ref }}
|
||||
@@ -19,10 +19,9 @@ concurrency:
|
||||
|
||||
jobs:
|
||||
twister-build-prep:
|
||||
if: github.repository_owner == 'zephyrproject-rtos'
|
||||
runs-on: zephyr-runner-linux-x64-4xlarge
|
||||
container:
|
||||
image: ghcr.io/zephyrproject-rtos/ci:v0.26.4
|
||||
image: ghcr.io/zephyrproject-rtos/ci:v0.24.3
|
||||
options: '--entrypoint /bin/bash'
|
||||
volumes:
|
||||
- /repo-cache/zephyrproject:/github/cache/zephyrproject
|
||||
@@ -34,9 +33,7 @@ jobs:
|
||||
MATRIX_SIZE: 10
|
||||
PUSH_MATRIX_SIZE: 15
|
||||
DAILY_MATRIX_SIZE: 80
|
||||
ZEPHYR_SDK_INSTALL_DIR: /opt/toolchains/zephyr-sdk-0.16.1
|
||||
BSIM_OUT_PATH: /opt/bsim/
|
||||
BSIM_COMPONENTS_PATH: /opt/bsim/components
|
||||
ZEPHYR_SDK_INSTALL_DIR: /opt/toolchains/zephyr-sdk-0.15.0
|
||||
TESTS_PER_BUILDER: 700
|
||||
COMMIT_RANGE: ${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }}
|
||||
BASE_REF: ${{ github.base_ref }}
|
||||
@@ -120,7 +117,7 @@ jobs:
|
||||
needs: twister-build-prep
|
||||
if: needs.twister-build-prep.outputs.size != 0
|
||||
container:
|
||||
image: ghcr.io/zephyrproject-rtos/ci:v0.26.4
|
||||
image: ghcr.io/zephyrproject-rtos/ci:v0.24.3
|
||||
options: '--entrypoint /bin/bash'
|
||||
volumes:
|
||||
- /repo-cache/zephyrproject:/github/cache/zephyrproject
|
||||
@@ -129,13 +126,11 @@ jobs:
|
||||
matrix:
|
||||
subset: ${{fromJSON(needs.twister-build-prep.outputs.subset)}}
|
||||
env:
|
||||
ZEPHYR_SDK_INSTALL_DIR: /opt/toolchains/zephyr-sdk-0.16.1
|
||||
BSIM_OUT_PATH: /opt/bsim/
|
||||
BSIM_COMPONENTS_PATH: /opt/bsim/components
|
||||
ZEPHYR_SDK_INSTALL_DIR: /opt/toolchains/zephyr-sdk-0.15.0
|
||||
TWISTER_COMMON: ' --force-color --inline-logs -v -N -M --retry-failed 3 '
|
||||
DAILY_OPTIONS: ' -M --build-only --all --show-footprint'
|
||||
DAILY_OPTIONS: ' -M --build-only --all'
|
||||
PR_OPTIONS: ' --clobber-output --integration'
|
||||
PUSH_OPTIONS: ' --clobber-output -M --show-footprint'
|
||||
PUSH_OPTIONS: ' --clobber-output -M'
|
||||
COMMIT_RANGE: ${{ github.event.pull_request.base.sha }}..${{ github.event.pull_request.head.sha }}
|
||||
BASE_REF: ${{ github.base_ref }}
|
||||
steps:
|
||||
@@ -200,7 +195,7 @@ jobs:
|
||||
continue-on-error: true
|
||||
with:
|
||||
key: ${{ steps.ccache_cache_timestamp.outputs.repo }}-${{ github.ref_name }}-${{github.event_name}}-${{ matrix.subset }}-ccache
|
||||
path: /github/home/.cache/ccache
|
||||
path: /github/home/.ccache
|
||||
aws-s3-bucket: ccache.zephyrproject.org
|
||||
aws-access-key-id: ${{ vars.AWS_CCACHE_ACCESS_KEY_ID }}
|
||||
aws-secret-access-key: ${{ secrets.AWS_CCACHE_SECRET_ACCESS_KEY }}
|
||||
@@ -208,8 +203,7 @@ jobs:
|
||||
|
||||
- name: ccache stats initial
|
||||
run: |
|
||||
mkdir -p /github/home/.cache
|
||||
test -d github/home/.cache/ccache && rm -rf /github/home/.cache/ccache && mv github/home/.cache/ccache /github/home/.cache/ccache
|
||||
test -d github/home/.ccache && rm -rf /github/home/.ccache && mv github/home/.ccache /github/home/.ccache
|
||||
ccache -M 10G -s
|
||||
|
||||
- if: github.event_name == 'push'
|
||||
@@ -255,7 +249,6 @@ jobs:
|
||||
|
||||
- name: ccache stats post
|
||||
run: |
|
||||
ccache -p
|
||||
ccache -s
|
||||
|
||||
- name: Upload Unit Test Results
|
||||
@@ -266,48 +259,22 @@ jobs:
|
||||
if-no-files-found: ignore
|
||||
path: |
|
||||
twister-out/twister.xml
|
||||
twister-out/twister.json
|
||||
module_tests/twister.xml
|
||||
testplan.json
|
||||
|
||||
twister-test-results:
|
||||
name: "Publish Unit Tests Results"
|
||||
env:
|
||||
ELASTICSEARCH_KEY: ${{ secrets.ELASTICSEARCH_KEY }}
|
||||
ELASTICSEARCH_SERVER: "https://elasticsearch.zephyrproject.io:443"
|
||||
needs: twister-build
|
||||
runs-on: ubuntu-22.04
|
||||
# the build-and-test job might be skipped, we don't need to run this job then
|
||||
runs-on: ubuntu-20.04
|
||||
# the build-and-test job might be skipped, we don't need to run this job then
|
||||
if: success() || failure()
|
||||
|
||||
steps:
|
||||
# Needed for opensearch and upload script
|
||||
- if: github.event_name == 'push' || github.event_name == 'schedule'
|
||||
name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 0
|
||||
persist-credentials: false
|
||||
|
||||
- name: Download Artifacts
|
||||
uses: actions/download-artifact@v3
|
||||
with:
|
||||
path: artifacts
|
||||
|
||||
- if: github.event_name == 'push' || github.event_name == 'schedule'
|
||||
name: Upload to opensearch
|
||||
run: |
|
||||
pip3 install elasticsearch
|
||||
# set run date on upload to get consistent and unified data across the matrix.
|
||||
run_date=`date --iso-8601=minutes`
|
||||
if [ "${{github.event_name}}" = "push" ]; then
|
||||
python3 ./scripts/ci/upload_test_results_es.py -r ${run_date} \
|
||||
--index zephyr-main-ci-push-1 artifacts/*/*/twister.json
|
||||
elif [ "${{github.event_name}}" = "schedule" ]; then
|
||||
python3 ./scripts/ci/upload_test_results_es.py -r ${run_date} \
|
||||
--index zephyr-main-ci-weekly-1 artifacts/*/*/twister.json
|
||||
fi
|
||||
|
||||
- name: Merge Test Results
|
||||
run: |
|
||||
pip3 install junitparser junit2html
|
||||
@@ -324,8 +291,9 @@ jobs:
|
||||
junit.html
|
||||
|
||||
- name: Publish Unit Test Results
|
||||
uses: EnricoMi/publish-unit-test-result-action@v2
|
||||
uses: EnricoMi/publish-unit-test-result-action@v1
|
||||
with:
|
||||
check_name: Unit Test Results
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
files: "**/twister.xml"
|
||||
comment_mode: off
|
||||
|
||||
12
.github/workflows/twister_tests.yml
vendored
12
.github/workflows/twister_tests.yml
vendored
@@ -30,7 +30,7 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
python-version: [3.8, 3.9, '3.10']
|
||||
os: [ubuntu-22.04]
|
||||
os: [ubuntu-20.04]
|
||||
steps:
|
||||
- name: checkout
|
||||
uses: actions/checkout@v3
|
||||
@@ -49,18 +49,10 @@ jobs:
|
||||
- name: install-packages
|
||||
run: |
|
||||
pip3 install -r scripts/requirements-base.txt -r scripts/requirements-build-test.txt
|
||||
- name: Run pytest for twisterlib
|
||||
- name: Run pytest
|
||||
env:
|
||||
ZEPHYR_BASE: ./
|
||||
ZEPHYR_TOOLCHAIN_VARIANT: zephyr
|
||||
run: |
|
||||
echo "Run twister tests"
|
||||
PYTHONPATH=./scripts/tests pytest ./scripts/tests/twister
|
||||
- name: Run pytest for pytest-twister-harness
|
||||
env:
|
||||
ZEPHYR_BASE: ./
|
||||
ZEPHYR_TOOLCHAIN_VARIANT: zephyr
|
||||
PYTHONPATH: ./scripts/pylib/pytest-twister-harness/src:${PYTHONPATH}
|
||||
run: |
|
||||
echo "Run twister tests"
|
||||
pytest ./scripts/pylib/pytest-twister-harness/tests
|
||||
|
||||
12
.github/workflows/west_cmds.yml
vendored
12
.github/workflows/west_cmds.yml
vendored
@@ -28,12 +28,12 @@ jobs:
|
||||
strategy:
|
||||
matrix:
|
||||
python-version: [3.8, 3.9, '3.10']
|
||||
os: [ubuntu-22.04, macos-11, windows-2022]
|
||||
os: [ubuntu-20.04, macos-11, windows-2022]
|
||||
exclude:
|
||||
- os: macos-11
|
||||
python-version: 3.6
|
||||
- os: windows-2022
|
||||
python-version: 3.6
|
||||
- os: macos-11
|
||||
python-version: 3.6
|
||||
- os: windows-2022
|
||||
python-version: 3.6
|
||||
steps:
|
||||
- name: checkout
|
||||
uses: actions/checkout@v3
|
||||
@@ -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
|
||||
- name: run pytest-win
|
||||
if: runner.os == 'Windows'
|
||||
run: |
|
||||
|
||||
19
.gitignore
vendored
19
.gitignore
vendored
@@ -13,7 +13,6 @@ build*/
|
||||
!doc/build/
|
||||
!scripts/build
|
||||
!tests/drivers/build_all
|
||||
!scripts/pylib/build_helpers
|
||||
cscope.*
|
||||
.dir
|
||||
|
||||
@@ -37,9 +36,7 @@ doc/latex
|
||||
doc/themes/zephyr-docs-theme
|
||||
sanity-out*
|
||||
twister-out*
|
||||
bsim_out
|
||||
bsim_bt_out
|
||||
tests/RunResults.xml
|
||||
scripts/grub
|
||||
doc/reference/kconfig/*.rst
|
||||
doc/doc.warnings
|
||||
@@ -65,19 +62,3 @@ TAGS
|
||||
tags
|
||||
|
||||
.idea
|
||||
|
||||
# from check_compliance.py
|
||||
BinaryFiles.txt
|
||||
Checkpatch.txt
|
||||
DevicetreeBindings.txt
|
||||
Gitlint.txt
|
||||
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
|
||||
|
||||
146
.mailmap
146
.mailmap
@@ -1,121 +1,35 @@
|
||||
Alexandr Kolosov <rikorsev@gmail.com>
|
||||
Alexandre d'Alton <alexandre.dalton@intel.com>
|
||||
Dirk Brandewie <dirk.j.brandewie@intel.com> <dirk.j.brandewie@intel.com>
|
||||
Mike Hirst <michael.hirst@windriver.com> <michael.hirst@windriver.com>
|
||||
Johan Kruger <johan.kruger@windriver.com> <johan.kruger@windriver.com>
|
||||
Leona Cook <leonax.cook@intel.com> <lsc@hackeress.com>
|
||||
Leona Cook <leonax.cook@intel.com> <leonax.cook@intel.com>
|
||||
Thomas Heeley <thomas.heeley@intel.com> <thomas.heeley@intel.com>
|
||||
Shuang He <shuang.he@intel.com> <shuang.he@intel.com>
|
||||
Chuck Jordan <cjordan@synopsys.com> <cjordan@synopsys.com>
|
||||
Jeremie Garcia <jeremie.garcia@intel.com> <jeremie.garcia@intel.com>
|
||||
Bit Pathe <bitpathe@gmail.com> <bitpathe@gmail.com>
|
||||
Carles Cufi <carles.cufi@nordicsemi.no> <carles.cufi@nordicsemi.no>
|
||||
Kuo-Lang Tseng <kuo-lang.tseng@intel.com> <kuo-lang.tseng@intel.com>
|
||||
Gerardo Aceves <gerardo.aceves@intel.com> <gerardo.aceves@intel.com>
|
||||
Evan Couzens <evanx.couzens@intel.com> <evanx.couzens@intel.com>
|
||||
Lei Liu <lei.a.liu@intel.com> <lei.a.liu@intel.com>
|
||||
Douglas Su <d0u9.su@outlook.com> <d0u9.su@outlook.com>
|
||||
Keren Siman-Tov <keren.siman-tov@intel.com> <keren.siman-tov@intel.com>
|
||||
Naga Raja Rao Tulasi <tulasi.r@tcs.com> <tulasi.r@tcs.com>
|
||||
Felipe Neves <ryukokki.felipe@gmail.com> <ryukokki.felipe@gmail.com>
|
||||
Amir Kaplan <amir.kaplan@intel.com> <amir.kaplan@intel.com>
|
||||
Anas Nashif <anas.nashif@intel.com> <anas.nashif@intel.com>
|
||||
Andrzej Kuroś <andrzej.kuros@nordicsemi.no>
|
||||
Anthony Smigielski <thebasti0ncode@gmail.com>
|
||||
Armand Ciejak <armand@riedonetworks.com> <armandciejak@users.noreply.github.com>
|
||||
Aska Wu <aska.wu@linaro.org>
|
||||
Bit Pathe <bitpathe@gmail.com> <bitpathe@gmail.com>
|
||||
Bjarki Arge Andreasen <baa@trackunit.com>
|
||||
Carles Cufi <carles.cufi@nordicsemi.no> <carles.cufi@nordicsemi.no>
|
||||
chao an <anchao@xiaomi.com>
|
||||
Charles E. Youse <charles.youse@intel.com>
|
||||
Chen Xingyu <hi@xingrz.me>
|
||||
Christoph Schnetzler <christoph.schnetzler@husqvarnagroup.com>
|
||||
Christoph Schramm <schramm@makaio.com>
|
||||
Christopher Friedt <cfriedt@meta.com>
|
||||
Christopher Friedt <cfriedt@meta.com> <cfriedt@fb.com>
|
||||
Chuck Jordan <cjordan@synopsys.com> <cjordan@synopsys.com>
|
||||
Chunlin Han <chunlin.han@linaro.org> <chunlin.han@acer.com>
|
||||
David B. Kinder <david.b.kinder@intel.com>
|
||||
David Komel <a8961713@gmail.com>
|
||||
David Leach <david.leach@nxp.com>
|
||||
Dirk Brandewie <dirk.j.brandewie@intel.com> <dirk.j.brandewie@intel.com>
|
||||
Douglas Su <d0u9.su@outlook.com> <d0u9.su@outlook.com>
|
||||
Enjia Mai <enjia.mai@intel.com>
|
||||
Enjia Mai <enjia.mai@intel.com> <enjiax.mai@intel.com>
|
||||
Evan Couzens <evanx.couzens@intel.com> <evanx.couzens@intel.com>
|
||||
Evgeniy Paltsev <PaltsevEvgeniy@gmail.com>
|
||||
Evgeniy Paltsev <PaltsevEvgeniy@gmail.com> <Eugeniy.Paltsev@synopsys.com>
|
||||
Felipe Neves <ryukokki.felipe@gmail.com> <ryukokki.felipe@gmail.com>
|
||||
Findlay Feng <i@fengch.me>
|
||||
Flavio Arieta Netto <flavio@exati.com.br>
|
||||
Francois Ramu <francois.ramu@st.com>
|
||||
Gerardo Aceves <gerardo.aceves@intel.com> <gerardo.aceves@intel.com>
|
||||
Gregory Shue <gregory.shue@legrand.com>
|
||||
Gregory Shue <gregory.shue@legrand.com> <gregory.shue@legrand.us>
|
||||
HaiLong Yang <cameledyang@pm.me>
|
||||
James Johnson <james.johnson672@t-mobile.com>
|
||||
Jarno Lämsä <jarno.lamsa@nordicsemi.no>
|
||||
Jędrzej Ciupis <jedrzej.ciupis@nordicsemi.no>
|
||||
Jeremie Garcia <jeremie.garcia@intel.com> <jeremie.garcia@intel.com>
|
||||
Jim Benjamin Luther <jilu@oticon.com>
|
||||
Johan Kruger <johan.kruger@windriver.com> <johan.kruger@windriver.com>
|
||||
Johann Fischer <j.fischer@phytec.de>
|
||||
Jørgen Kvalvaag <jorgen.kvalvaag@nordicsemi.no>
|
||||
Juan Manuel Cruz Alcaraz <juan.m.cruz.alcaraz@intel.com>
|
||||
Juan Solano <juanx.solano.menacho@intel.com>
|
||||
Julien D'Ascenzio <julien.dascenzio@paratronic.fr>
|
||||
Jun Li <jun.r.li@intel.com>
|
||||
Justin Watson <jwatson5@gmail.com>
|
||||
Kamil Sroka <kamil.sroka@nordicsemi.no>
|
||||
Katarzyna Giądła <katarzyna.giadla@nordicsemi.no>
|
||||
Keren Siman-Tov <keren.siman-tov@intel.com> <keren.siman-tov@intel.com>
|
||||
Krzysztof Chruściński <krzysztof.chruscinski@nordicsemi.no>
|
||||
Kuo-Lang Tseng <kuo-lang.tseng@intel.com> <kuo-lang.tseng@intel.com>
|
||||
Lei Liu <lei.a.liu@intel.com> <lei.a.liu@intel.com>
|
||||
Leona Cook <leonax.cook@intel.com> <leonax.cook@intel.com>
|
||||
Leona Cook <leonax.cook@intel.com> <lsc@hackeress.com>
|
||||
Lixin Guo <lixinx.guo@intel.com>
|
||||
Łukasz Mazur <lukasz.mazur@hidglobal.com>
|
||||
Manuel Argüelles <manuel.arguelles@nxp.com>
|
||||
Manuel Argüelles <manuel.arguelles@nxp.com> <manuel.arguelles@coredumplabs.com>
|
||||
Marc Herbert <marc.herbert@intel.com> <46978960+marc-hb@users.noreply.github.com>
|
||||
Marin Jurjević <marin.jurjevic@hotmail.com>
|
||||
Mariusz Ryndzionek <mariusz.ryndzionek@firmwave.com>
|
||||
Mariusz Skamra <mariusz.skamra@codecoup.pl>
|
||||
Mariusz Skamra <mariusz.skamra@codecoup.pl> <mariusz.skamra@tieto.com>
|
||||
Martí Bolívar <marti.bolivar@nordicsemi.no>
|
||||
Martí Bolívar <marti.bolivar@nordicsemi.no> <marti.bolivar@linaro.org>
|
||||
Martí Bolívar <marti.bolivar@nordicsemi.no> <marti.f.bolivar@gmail.com>
|
||||
Martí Bolívar <marti.bolivar@nordicsemi.no> <marti@foundries.io>
|
||||
Martí Bolívar <marti.bolivar@nordicsemi.no> <marti@opensourcefoundries.com>
|
||||
Martin Jäger <martin@libre.solar> <17674105+martinjaeger@users.noreply.github.com>
|
||||
Mateusz Hołenko <mholenko@antmicro.com>
|
||||
Michael Rosen <michael.r.rosen@intel.com>
|
||||
Michal Narajowski <michal.narajowski@codecoup.pl>
|
||||
Mike Hirst <michael.hirst@windriver.com> <michael.hirst@windriver.com>
|
||||
Ming Shao <ming.shao@intel.com>
|
||||
Mohan Kumar Kumar <mohankm@fb.com>
|
||||
Naga Raja Rao Tulasi <tulasi.r@tcs.com> <tulasi.r@tcs.com>
|
||||
Navin Sankar Velliangiri <navin@linumiz.com>
|
||||
NingX Zhao <ningx.zhao@intel.com>
|
||||
Nishikant Nayak <nishikantax.nayak@intel.com>
|
||||
Ole Sæther <ole.saether@nordicsemi.no>
|
||||
Pavel Král <pavel.kral@omsquare.com>
|
||||
Pavel Vasilyev <pavel.vasilyev@nordicsemi.no>
|
||||
Paweł Czarnecki <pczarnecki@antmicro.com>
|
||||
Paweł Czarnecki <pczarnecki@antmicro.com>
|
||||
Paweł Czarnecki <pczarnecki@antmicro.com> <pczarnecki@internships.antmicro.com>
|
||||
Paweł Kwiek <pawel.kwiek@nordicsemi.no>
|
||||
Peng Chen <peng1.chen@intel.com>
|
||||
Peter Bigot <peter.bigot@nordicsemi.no>
|
||||
Peter Bigot <peter.bigot@nordicsemi.no> <pab@pabigot.com>
|
||||
Peter Johanson <peter@peterjohanson.com>
|
||||
Piyush Itankar <piyush.t.itankar@intel.com>
|
||||
Radosław Koppel <radoslaw.koppel@nordicsemi.no>
|
||||
Radosław Koppel <radoslaw.koppel@nordicsemi.no> <r.koppel@k-el.com>
|
||||
Raja D. Singh <rdsingh@iotwizards.com>
|
||||
Ricardo Salveti <ricardo@opensourcefoundries.com>
|
||||
Ricardo Salveti <ricardo@opensourcefoundries.com> <ricardo.salveti@linaro.org>
|
||||
Ruud Derwig <Ruud.Derwig@synopsys.com> <Ruud.Derwig@synopsys.com>
|
||||
Saku Rautio <saku.rautio@nordicsemi.no>
|
||||
Scott Worley <scott.worley@microchip.com>
|
||||
Sean Nyekjaer <sean@geanix.com> <sean.nyekjaer@prevas.dk>
|
||||
Sean Nyekjaer <sean@geanix.com> <sean@nyekjaer.dk>
|
||||
Sharron Liu <sharron.liu@intel.com>
|
||||
Shilpashree L C <shilpashree.lc@intel.com>
|
||||
Shuang He <shuang.he@intel.com> <shuang.he@intel.com>
|
||||
Sigvart Hovland <sigvart.hovland@nordicsemi.no>
|
||||
Stéphane D'Alu <sdalu@sdalu.com>
|
||||
Stine Åkredalen <stine.akredalen@nordicsemi.no>
|
||||
Thomas Heeley <thomas.heeley@intel.com> <thomas.heeley@intel.com>
|
||||
Tim Sørensen <tims@demant.com>
|
||||
Tim Sørensen <tims@demant.com> <tims@oticon.com>
|
||||
Vinayak Kariappa Chettimada <vinayak.kariappa.chettimada@nordicsemi.no> <vinayak.kariappa.chettimada@nordicsemi.no> <vich@nordicsemi.no> <vinayak.kariappa@gmail.com>
|
||||
Flavio Arieta Netto <flavio@exati.com.br>
|
||||
Nishikant Nayak <nishikantax.nayak@intel.com>
|
||||
Justin Watson <jwatson5@gmail.com>
|
||||
Johann Fischer <j.fischer@phytec.de>
|
||||
Jun Li <jun.r.li@intel.com>
|
||||
Xiaorui Hu <xiaorui.hu@linaro.org>
|
||||
Yannis Damigos <giannis.damigos@gmail.com> <ydamigos@iccs.gr>
|
||||
Yonattan Louise <yonattan.a.louise.mendoza@intel.com>
|
||||
Yonattan Louise <yonattan.a.louise.mendoza@intel.com> <yonattan.a.louise.mendoza@linux.intel.com>
|
||||
YouhuaX Zhu <youhuax.zhu@intel.com>
|
||||
Vinayak Kariappa Chettimada <vinayak.kariappa.chettimada@nordicsemi.no> <vinayak.kariappa.chettimada@nordicsemi.no> <vich@nordicsemi.no> <vinayak.kariappa@gmail.com>
|
||||
Sean Nyekjaer <sean@geanix.com> <sean.nyekjaer@prevas.dk>
|
||||
Sean Nyekjaer <sean@geanix.com> <sean@nyekjaer.dk>
|
||||
Marc Herbert <marc.herbert@intel.com> <46978960+marc-hb@users.noreply.github.com>
|
||||
Martin Jäger <martin@libre.solar> <17674105+martinjaeger@users.noreply.github.com>
|
||||
Armand Ciejak <armand@riedonetworks.com> <armandciejak@users.noreply.github.com>
|
||||
|
||||
16
.yamllint
16
.yamllint
@@ -1,16 +0,0 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
extends: default
|
||||
|
||||
rules:
|
||||
line-length:
|
||||
max: 100
|
||||
comments:
|
||||
min-spaces-from-content: 1
|
||||
indentation:
|
||||
spaces: 2
|
||||
indent-sequences: consistent
|
||||
document-start:
|
||||
present: false
|
||||
truthy:
|
||||
check-keys: false
|
||||
294
CMakeLists.txt
294
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
|
||||
@@ -109,6 +104,10 @@ add_library(zephyr_interface INTERFACE)
|
||||
# flags that come with zephyr_interface.
|
||||
zephyr_library_named(zephyr)
|
||||
|
||||
if(CONFIG_LEGACY_INCLUDE_PATH)
|
||||
zephyr_include_directories(include/zephyr)
|
||||
endif()
|
||||
|
||||
zephyr_include_directories(
|
||||
include
|
||||
${PROJECT_BINARY_DIR}/include/generated
|
||||
@@ -157,26 +156,9 @@ endif()
|
||||
zephyr_compile_options($<$<COMPILE_LANGUAGE:C>:$<TARGET_PROPERTY:compiler,no_strict_aliasing>>)
|
||||
zephyr_compile_options($<$<COMPILE_LANGUAGE:CXX>:$<TARGET_PROPERTY:compiler-cpp,no_strict_aliasing>>)
|
||||
|
||||
# Extra warnings options for twister run
|
||||
if (CONFIG_COMPILER_WARNINGS_AS_ERRORS)
|
||||
zephyr_compile_options($<$<COMPILE_LANGUAGE:C>:$<TARGET_PROPERTY:compiler,warnings_as_errors>>)
|
||||
zephyr_compile_options($<$<COMPILE_LANGUAGE:ASM>:$<TARGET_PROPERTY:asm,warnings_as_errors>>)
|
||||
zephyr_link_libraries($<TARGET_PROPERTY:linker,warnings_as_errors>)
|
||||
endif()
|
||||
|
||||
# @Intent: Set compiler flags to enable buffer overflow checks in libc functions
|
||||
# @details:
|
||||
# Kconfig.zephyr "Detect buffer overflows in libc calls" is a kconfig choice,
|
||||
# ensuring at most *one* of CONFIG_FORTIFY_SOURCE_{COMPILE_TIME,RUN_TIME} is
|
||||
# set. Refer to Kconfig.zephyr for selection logic and description of these
|
||||
# choices. Toolchains set both of the security_fortify_{compile_time,run_time}
|
||||
# properties and the Kconfig settings are used here to select between those.
|
||||
#
|
||||
if(CONFIG_FORTIFY_SOURCE_RUN_TIME)
|
||||
zephyr_compile_definitions($<TARGET_PROPERTY:compiler,security_fortify_run_time> )
|
||||
elseif(CONFIG_FORTIFY_SOURCE_COMPILE_TIME)
|
||||
zephyr_compile_definitions($<TARGET_PROPERTY:compiler,security_fortify_compile_time> )
|
||||
endif()
|
||||
# @config in CONFIG_NO_OPTIMIZATIONS optional : Optimizations may affect security
|
||||
zephyr_compile_definitions($<TARGET_PROPERTY:compiler,security_fortify> )
|
||||
|
||||
# @Intent: Set compiler flags to detect general stack overflows across all functions
|
||||
if(CONFIG_STACK_CANARIES)
|
||||
@@ -229,7 +211,7 @@ zephyr_compile_options(${OPTIMIZATION_FLAG})
|
||||
zephyr_compile_options($<$<COMPILE_LANGUAGE:CXX>:$<TARGET_PROPERTY:compiler-cpp,required>>)
|
||||
|
||||
# @Intent: Obtain compiler specific flags for compiling under different ISO standards of C++
|
||||
if(CONFIG_CPP)
|
||||
if(CONFIG_CPLUSPLUS)
|
||||
# From kconfig choice, pick a single dialect.
|
||||
# Kconfig choice ensures only one of these CONFIG_STD_CPP* is set.
|
||||
if(CONFIG_STD_CPP98)
|
||||
@@ -261,12 +243,12 @@ if(CONFIG_CPP)
|
||||
zephyr_compile_options($<$<COMPILE_LANGUAGE:CXX>:${STD_CPP_DIALECT_FLAGS}>)
|
||||
endif()
|
||||
|
||||
if(NOT CONFIG_CPP_EXCEPTIONS)
|
||||
if(NOT CONFIG_EXCEPTIONS)
|
||||
# @Intent: Obtain compiler specific flags related to C++ Exceptions
|
||||
zephyr_compile_options($<$<COMPILE_LANGUAGE:CXX>:$<TARGET_PROPERTY:compiler-cpp,no_exceptions>>)
|
||||
endif()
|
||||
|
||||
if(NOT CONFIG_CPP_RTTI)
|
||||
if(NOT CONFIG_RTTI)
|
||||
# @Intent: Obtain compiler specific flags related to C++ Run Time Type Information
|
||||
zephyr_compile_options($<$<COMPILE_LANGUAGE:CXX>:$<TARGET_PROPERTY:compiler-cpp,no_rtti>>)
|
||||
endif()
|
||||
@@ -287,38 +269,29 @@ endif()
|
||||
# @Intent: Set compiler specific macro inclusion of AUTOCONF_H
|
||||
zephyr_compile_options("SHELL: $<TARGET_PROPERTY:compiler,imacros> ${AUTOCONF_H}")
|
||||
|
||||
if(CONFIG_COMPILER_FREESTANDING)
|
||||
if(NOT CONFIG_PICOLIBC)
|
||||
# @Intent: Set compiler specific flag for bare metal freestanding option
|
||||
zephyr_compile_options($<$<COMPILE_LANGUAGE:C>:$<TARGET_PROPERTY:compiler,freestanding>>)
|
||||
zephyr_compile_options($<$<COMPILE_LANGUAGE:ASM>:$<TARGET_PROPERTY:compiler,freestanding>>)
|
||||
endif()
|
||||
|
||||
if (CONFIG_PICOLIBC AND NOT CONFIG_PICOLIBC_IO_FLOAT)
|
||||
# @Intent: Set compiler specific flag to disable printf-related optimizations
|
||||
zephyr_compile_options($<$<COMPILE_LANGUAGE:C>:$<TARGET_PROPERTY:compiler,no_printf_return_value>>)
|
||||
endif()
|
||||
|
||||
# @Intent: Set compiler specific flag for tentative definitions, no-common
|
||||
zephyr_compile_options($<TARGET_PROPERTY:compiler,no_common>)
|
||||
|
||||
# @Intent: Set compiler specific flag for production of debug information
|
||||
zephyr_compile_options($<TARGET_PROPERTY:compiler,debug>)
|
||||
|
||||
if(CONFIG_COMPILER_SAVE_TEMPS)
|
||||
# @Intent: Set compiler specific flag for saving temporary object files
|
||||
zephyr_compile_options($<TARGET_PROPERTY:compiler,save_temps>)
|
||||
endif()
|
||||
|
||||
if(NOT CONFIG_COMPILER_TRACK_MACRO_EXPANSION)
|
||||
# @Intent: Set compiler specific flags to not track macro expansion
|
||||
zephyr_compile_options($<TARGET_PROPERTY:compiler,no_track_macro_expansion>)
|
||||
endif()
|
||||
|
||||
if(CONFIG_COMPILER_COLOR_DIAGNOSTICS)
|
||||
# @Intent: Set compiler specific flag for diagnostic messages
|
||||
zephyr_compile_options($<TARGET_PROPERTY:compiler,diagnostic>)
|
||||
endif()
|
||||
|
||||
if("${SPARSE}" STREQUAL "y")
|
||||
list(APPEND TOOLCHAIN_C_FLAGS -D__CHECKER__)
|
||||
# Avoid compiler "attribute directive ignored" warnings
|
||||
list(APPEND TOOLCHAIN_C_FLAGS -Wno-attributes)
|
||||
endif()
|
||||
|
||||
zephyr_compile_options(
|
||||
${TOOLCHAIN_C_FLAGS}
|
||||
)
|
||||
@@ -346,12 +319,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_LIB_CPLUSPLUS)
|
||||
# @Intent: Set linker specific flags for C++
|
||||
toolchain_ld_cpp()
|
||||
endif()
|
||||
@@ -393,13 +366,6 @@ 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>)
|
||||
|
||||
# Allow the user to inject options when calling cmake, e.g.
|
||||
# 'cmake -DEXTRA_CFLAGS="-Werror -Wno-deprecated-declarations" ..'
|
||||
@@ -407,10 +373,6 @@ include(cmake/extra_flags.cmake)
|
||||
|
||||
zephyr_cc_option(-fno-asynchronous-unwind-tables)
|
||||
|
||||
if(CONFIG_USERSPACE)
|
||||
zephyr_compile_options($<TARGET_PROPERTY:compiler,no_global_merge>)
|
||||
endif()
|
||||
|
||||
if(CONFIG_THREAD_LOCAL_STORAGE)
|
||||
# Only support local exec TLS model at this point.
|
||||
zephyr_cc_option(-ftls-model=local-exec)
|
||||
@@ -458,15 +420,14 @@ zephyr_cc_option_ifdef(CONFIG_STACK_USAGE -fstack-usage)
|
||||
# application code. This saves some memory, stops leaking user locations
|
||||
# in binaries, makes failure logs more deterministic and most
|
||||
# importantly makes builds more deterministic
|
||||
if(CONFIG_BUILD_OUTPUT_STRIP_PATHS)
|
||||
# If several match then the last one wins. This matters for instances
|
||||
# like tests/ and samples/: they're inside all of them! Then let's
|
||||
# strip as little as possible.
|
||||
zephyr_cc_option(-fmacro-prefix-map=${CMAKE_SOURCE_DIR}=CMAKE_SOURCE_DIR)
|
||||
zephyr_cc_option(-fmacro-prefix-map=${ZEPHYR_BASE}=ZEPHYR_BASE)
|
||||
if(WEST_TOPDIR)
|
||||
zephyr_cc_option(-fmacro-prefix-map=${WEST_TOPDIR}=WEST_TOPDIR)
|
||||
endif()
|
||||
|
||||
# If several match then the last one wins. This matters for instances
|
||||
# like tests/ and samples/: they're inside all of them! Then let's
|
||||
# strip as little as possible.
|
||||
zephyr_cc_option(-fmacro-prefix-map=${CMAKE_SOURCE_DIR}=CMAKE_SOURCE_DIR)
|
||||
zephyr_cc_option(-fmacro-prefix-map=${ZEPHYR_BASE}=ZEPHYR_BASE)
|
||||
if(WEST_TOPDIR)
|
||||
zephyr_cc_option(-fmacro-prefix-map=${WEST_TOPDIR}=WEST_TOPDIR)
|
||||
endif()
|
||||
|
||||
# TODO: Archiver arguments
|
||||
@@ -485,9 +446,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})
|
||||
@@ -555,31 +515,12 @@ add_custom_command(
|
||||
OUTPUT ${PROJECT_BINARY_DIR}/include/generated/version.h
|
||||
COMMAND ${CMAKE_COMMAND} -DZEPHYR_BASE=${ZEPHYR_BASE}
|
||||
-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}
|
||||
)
|
||||
add_custom_target(version_h DEPENDS ${PROJECT_BINARY_DIR}/include/generated/version.h)
|
||||
|
||||
if(EXISTS ${APPLICATION_SOURCE_DIR}/VERSION)
|
||||
add_custom_command(
|
||||
OUTPUT ${PROJECT_BINARY_DIR}/include/generated/app_version.h
|
||||
COMMAND ${CMAKE_COMMAND} -DZEPHYR_BASE=${ZEPHYR_BASE}
|
||||
-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}
|
||||
)
|
||||
add_custom_target(app_version_h DEPENDS ${PROJECT_BINARY_DIR}/include/generated/app_version.h)
|
||||
add_dependencies(zephyr_interface app_version_h)
|
||||
endif()
|
||||
|
||||
# Unfortunately, the order in which CMakeLists.txt code is processed
|
||||
# matters so we need to be careful about how we order the processing
|
||||
# of subdirectories. One example is "Compiler flags added late in the
|
||||
@@ -603,7 +544,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)
|
||||
@@ -626,9 +572,6 @@ endforeach()
|
||||
set(ZEPHYR_CURRENT_MODULE_DIR)
|
||||
set(ZEPHYR_CURRENT_CMAKE_DIR)
|
||||
|
||||
get_property(LIBC_LINK_LIBRARIES TARGET zephyr_interface PROPERTY LIBC_LINK_LIBRARIES)
|
||||
zephyr_link_libraries(${LIBC_LINK_LIBRARIES})
|
||||
|
||||
set(syscall_list_h ${CMAKE_CURRENT_BINARY_DIR}/include/generated/syscall_list.h)
|
||||
set(syscalls_json ${CMAKE_CURRENT_BINARY_DIR}/misc/generated/syscalls.json)
|
||||
set(struct_tags_json ${CMAKE_CURRENT_BINARY_DIR}/misc/generated/struct_tags.json)
|
||||
@@ -655,7 +598,7 @@ execute_process(
|
||||
${ZEPHYR_BASE}/scripts/build/subfolder_list.py
|
||||
--directory ${ZEPHYR_BASE}/include # Walk this directory
|
||||
--out-file ${syscalls_subdirs_txt} # Write file with discovered folder
|
||||
--trigger-file ${syscalls_subdirs_trigger} # Trigger file that is used for json generation
|
||||
--trigger ${syscalls_subdirs_trigger} # Trigger file that is used for json generation
|
||||
${syscalls_links} # If defined, create symlinks for dependencies
|
||||
)
|
||||
file(STRINGS ${syscalls_subdirs_txt} PARSE_SYSCALLS_PATHS_DEPENDS ENCODING UTF-8)
|
||||
@@ -688,7 +631,7 @@ else()
|
||||
${ZEPHYR_BASE}/scripts/build/subfolder_list.py
|
||||
--directory ${ZEPHYR_BASE}/include # Walk this directory
|
||||
--out-file ${syscalls_subdirs_txt} # Write file with discovered folder
|
||||
--trigger-file ${syscalls_subdirs_trigger} # Trigger file that is used for json generation
|
||||
--trigger ${syscalls_subdirs_trigger} # Trigger file that is used for json generation
|
||||
${syscalls_links} # If defined, create symlinks for dependencies
|
||||
DEPENDS ${PARSE_SYSCALLS_PATHS_DEPENDS}
|
||||
)
|
||||
@@ -712,15 +655,6 @@ endif()
|
||||
|
||||
if(CONFIG_ZTEST)
|
||||
list(APPEND SYSCALL_INCLUDE_DIRS ${ZEPHYR_BASE}/subsys/testsuite/ztest/include)
|
||||
|
||||
if(CONFIG_NO_OPTIMIZATIONS AND CONFIG_ZTEST_WARN_NO_OPTIMIZATIONS)
|
||||
message(WARNING "Running tests with CONFIG_NO_OPTIMIZATIONS is generally "
|
||||
"not supported and known to break in many cases due to stack overflow or "
|
||||
"other problems. Please do not file issues about it unless the test is "
|
||||
"specifically tuned to run in this configuration. To disable this warning "
|
||||
"set CONFIG_ZTEST_WARN_NO_OPTIMIZATIONS=n.")
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
||||
foreach(d ${SYSCALL_INCLUDE_DIRS})
|
||||
@@ -736,16 +670,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
|
||||
@@ -789,7 +720,6 @@ add_custom_command(OUTPUT include/generated/syscall_dispatch.c ${syscall_list_h}
|
||||
--base-output include/generated/syscalls # Write to this dir
|
||||
--syscall-dispatch include/generated/syscall_dispatch.c # Write this file
|
||||
--syscall-list ${syscall_list_h}
|
||||
$<$<BOOL:${CONFIG_USERSPACE}>:--gen-mrsh-files>
|
||||
${SYSCALL_LONG_REGISTERS_ARG}
|
||||
${SYSCALL_SPLIT_TIMEOUT_ARG}
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||
@@ -797,7 +727,7 @@ add_custom_command(OUTPUT include/generated/syscall_dispatch.c ${syscall_list_h}
|
||||
)
|
||||
|
||||
# This is passed into all calls to the gen_kobject_list.py script.
|
||||
set(gen_kobject_list_include_args --include-subsystem-list ${struct_tags_json})
|
||||
set(gen_kobject_list_include_args --include ${struct_tags_json})
|
||||
|
||||
set(DRV_VALIDATION ${PROJECT_BINARY_DIR}/include/generated/driver-validation.h)
|
||||
add_custom_command(
|
||||
@@ -861,14 +791,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,27 +837,22 @@ 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)
|
||||
endif()
|
||||
if(CONFIG_PM_DEVICE_POWER_DOMAIN_DYNAMIC)
|
||||
set(number_of_dynamic_devices ${CONFIG_PM_DEVICE_POWER_DOMAIN_DYNAMIC_NUM})
|
||||
else()
|
||||
set(number_of_dynamic_devices 0)
|
||||
endif()
|
||||
|
||||
if(CONFIG_PM_DEVICE_POWER_DOMAIN_DYNAMIC)
|
||||
set(number_of_dynamic_devices ${CONFIG_PM_DEVICE_POWER_DOMAIN_DYNAMIC_NUM})
|
||||
else()
|
||||
set(number_of_dynamic_devices 0)
|
||||
endif()
|
||||
|
||||
# device_deps.c is generated from ${ZEPHYR_LINK_STAGE_EXECUTABLE} by
|
||||
# gen_device_deps.py
|
||||
if(CONFIG_HAS_DTS)
|
||||
# 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}
|
||||
--num-dynamic-devices ${number_of_dynamic_devices}
|
||||
--kernel $<TARGET_FILE:${ZEPHYR_LINK_STAGE_EXECUTABLE}>
|
||||
--zephyr-base ${ZEPHYR_BASE}
|
||||
@@ -943,10 +860,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 +1097,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 +1129,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
|
||||
)
|
||||
@@ -1362,7 +1277,6 @@ if(CONFIG_USERSPACE)
|
||||
OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${KOBJECT_HASH_OUTPUT_OBJ_RENAMED}
|
||||
COMMAND $<TARGET_PROPERTY:bintools,elfconvert_command>
|
||||
$<TARGET_PROPERTY:bintools,elfconvert_flag>
|
||||
$<TARGET_PROPERTY:bintools,elfconvert_flag_section_rename>.literal=.kobject_data.literal
|
||||
$<TARGET_PROPERTY:bintools,elfconvert_flag_section_rename>.data=.kobject_data.data
|
||||
$<TARGET_PROPERTY:bintools,elfconvert_flag_section_rename>.sdata=.kobject_data.sdata
|
||||
$<TARGET_PROPERTY:bintools,elfconvert_flag_section_rename>.text=.kobject_data.text
|
||||
@@ -1431,12 +1345,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}
|
||||
@@ -1554,7 +1465,7 @@ if(CONFIG_BUILD_OUTPUT_ADJUST_LMA)
|
||||
)
|
||||
endif()
|
||||
|
||||
if(NOT CONFIG_CPP_EXCEPTIONS)
|
||||
if(NOT CONFIG_EXCEPTIONS)
|
||||
set(eh_frame_section ".eh_frame")
|
||||
else()
|
||||
set(eh_frame_section "")
|
||||
@@ -1582,8 +1493,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 +1515,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 +1549,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)
|
||||
@@ -1647,7 +1557,7 @@ if(CONFIG_BUILD_OUTPUT_META)
|
||||
COMMAND ${PYTHON_EXECUTABLE} ${ZEPHYR_BASE}/scripts/zephyr_module.py
|
||||
${WEST_ARG}
|
||||
${ZEPHYR_MODULES_ARG}
|
||||
${EXTRA_ZEPHYR_MODULES_ARG}
|
||||
${ZEPHYR_EXTRA_MODULES_ARG}
|
||||
--meta-out ${KERNEL_META_NAME}
|
||||
$<$<BOOL:${CONFIG_BUILD_OUTPUT_META_STATE_PROPAGATE}>:--meta-state-propagate>
|
||||
)
|
||||
@@ -1687,8 +1597,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 +1621,7 @@ if(CONFIG_OUTPUT_DISASSEMBLE_ALL)
|
||||
list(APPEND
|
||||
post_build_byproducts
|
||||
${KERNEL_LST_NAME}
|
||||
# ${out_disassembly_byprod} # Needed ??
|
||||
)
|
||||
endif()
|
||||
|
||||
@@ -1729,6 +1641,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 +1674,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)
|
||||
@@ -1804,48 +1699,9 @@ if(CONFIG_BUILD_OUTPUT_INFO_HEADER)
|
||||
)
|
||||
endif()
|
||||
|
||||
if(CONFIG_CHECK_INIT_PRIORITIES)
|
||||
if(CONFIG_CHECK_INIT_PRIORITIES_FAIL_ON_WARNING)
|
||||
set(fail_on_warning "--fail-on-warning")
|
||||
endif()
|
||||
list(APPEND
|
||||
post_build_commands
|
||||
COMMAND ${PYTHON_EXECUTABLE} ${ZEPHYR_BASE}/scripts/build/check_init_priorities.py
|
||||
--elf-file=${ZEPHYR_BINARY_DIR}/${KERNEL_ELF_NAME}
|
||||
${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)
|
||||
if(NOT signing_script)
|
||||
set_target_properties(zephyr_property_target PROPERTIES SIGNING_SCRIPT ${CMAKE_CURRENT_LIST_DIR}/cmake/mcuboot.cmake)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Include signing script, if set
|
||||
get_target_property(signing_script zephyr_property_target SIGNING_SCRIPT)
|
||||
if(signing_script)
|
||||
message(STATUS "Including signing script: ${signing_script}")
|
||||
|
||||
include(${signing_script})
|
||||
endif()
|
||||
|
||||
# Generate USB-C VIF policies in XML format
|
||||
if (CONFIG_BUILD_OUTPUT_VIF)
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/cmake/vif.cmake)
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/cmake/mcuboot.cmake)
|
||||
endif()
|
||||
|
||||
get_property(extra_post_build_commands
|
||||
@@ -2006,7 +1862,7 @@ endif()
|
||||
zephyr_compile_options($<TARGET_PROPERTY:compiler,nostdinc>)
|
||||
target_include_directories(zephyr_interface SYSTEM INTERFACE $<TARGET_PROPERTY:compiler,nostdinc_include>)
|
||||
|
||||
if(CONFIG_MINIMAL_LIBCPP)
|
||||
if(NOT CONFIG_LIB_CPLUSPLUS)
|
||||
zephyr_compile_options($<$<COMPILE_LANGUAGE:CXX>:$<TARGET_PROPERTY:compiler-cpp,nostdincxx>>)
|
||||
endif()
|
||||
|
||||
|
||||
366
CODEOWNERS
366
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
|
||||
@@ -38,13 +38,11 @@
|
||||
/soc/arm/atmel_sam/sam4s/ @fallrisk
|
||||
/soc/arm/atmel_sam/same70/ @nandojve
|
||||
/soc/arm/atmel_sam/samv71/ @nandojve
|
||||
/soc/arm/cypress/ @ifyall @npal-cy
|
||||
/soc/arm/cypress/ @nandojve
|
||||
/soc/arm/bcm*/ @sbranden
|
||||
/soc/arm/gigadevice/ @nandojve
|
||||
/soc/arm/infineon_cat1/ @ifyall @npal-cy
|
||||
/soc/arm/infineon_xmc/ @parthitce
|
||||
/soc/arm/nxp*/ @mmahadevan108 @dleach02
|
||||
/soc/arm/nxp_s32/ @manuargue
|
||||
/soc/arm/nordic_nrf/ @anangl
|
||||
/soc/arm/nuvoton_npcx/ @MulinChao @ChiHuaL
|
||||
/soc/arm/nuvoton_numicro/ @ssekar15
|
||||
@@ -55,14 +53,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 +68,8 @@
|
||||
/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 @jenmwms @aasthagr
|
||||
/arch/nios2/ @nashif
|
||||
/arch/posix/ @aescolar @daor-oti
|
||||
/arch/riscv/ @kgugala @pgielda
|
||||
@@ -83,11 +77,10 @@
|
||||
/soc/posix/ @aescolar @daor-oti
|
||||
/soc/riscv/ @kgugala @pgielda
|
||||
/soc/riscv/openisa*/ @dleach02
|
||||
/soc/riscv/riscv-privileged/andes_v5/ @cwshu @kevinwang821020 @jimmyzhe
|
||||
/soc/riscv/riscv-privileged/neorv32/ @henrikbrixandersen
|
||||
/soc/riscv/riscv-privileged/gd32vf103/ @soburi
|
||||
/soc/riscv/riscv-privileged/niosv/ @sweeaun
|
||||
/soc/x86/ @dcpleung @nashif
|
||||
/soc/riscv/riscv-privilege/andes_v5/ @cwshu @kevinwang821020 @jimmyzhe
|
||||
/soc/riscv/riscv-privilege/neorv32/ @henrikbrixandersen
|
||||
/soc/riscv/riscv-privilege/gd32vf103/ @soburi
|
||||
/soc/x86/ @dcpleung @nashif @jenmwms @aasthagr
|
||||
/arch/xtensa/ @dcpleung @andyross @nashif
|
||||
/soc/xtensa/ @dcpleung @andyross @nashif
|
||||
/arch/sparc/ @julius-barendt
|
||||
@@ -103,8 +96,6 @@
|
||||
/boards/arm/96b_stm32_sensor_mez/ @Mani-Sadhasivam
|
||||
/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
|
||||
@@ -114,24 +105,23 @@
|
||||
/boards/arm/cc1352r1_launchxl/ @bwitherspoon
|
||||
/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/cy8* @nandojve
|
||||
/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/mg100/ @rerickson1
|
||||
/boards/arm/lpcxpresso*/doc/ @dleach02 @MeganHansen
|
||||
/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
|
||||
@@ -157,18 +147,15 @@
|
||||
/boards/arm/scobc_module1/ @yashi
|
||||
/boards/arm/v2m_beetle/ @fvincenzo
|
||||
/boards/arm/olimexino_stm32/ @ydamigos
|
||||
/boards/arm/s32*/ @manuargue
|
||||
/boards/arm/sensortile_box/ @avisconti
|
||||
/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
|
||||
@@ -178,17 +165,16 @@
|
||||
/boards/posix/nrf52_bsim/ @aescolar @wopu-ot
|
||||
/boards/riscv/ @kgugala @pgielda
|
||||
/boards/riscv/rv32m1_vega/ @dleach02
|
||||
/boards/riscv/beaglev_starlight_jh7100/ @rajnesh-kanwal
|
||||
/boards/riscv/adp_xc7k_ae350/ @cwshu @kevinwang821020 @jimmyzhe
|
||||
/boards/riscv/gd32*/ @gmarull
|
||||
/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/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 @jenmwms @aasthagr
|
||||
/boards/x86/acrn/ @enjiamai
|
||||
/boards/xtensa/ @nashif @dcpleung
|
||||
/boards/xtensa/odroid_go/ @ydamigos
|
||||
@@ -199,29 +185,23 @@
|
||||
/boards/arm64/mimx8mm_evk/ @MrVan @JiafeiPan
|
||||
/boards/arm64/mimx8mp_evk/ @MrVan @JiafeiPan
|
||||
/boards/arm64/mimx8mn_evk/ @JiafeiPan
|
||||
/boards/arm64/mimx93_evk/ @JiafeiPan
|
||||
/boards/arm64/nxp_ls1046ardb/ @JiafeiPan
|
||||
/boards/arm64/xenvm/ @lorc @firscity
|
||||
/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
|
||||
/cmake/*/arcmwdt/ @abrodkin @evgeniy-paltsev @tejlmand
|
||||
/CMakeLists.txt @tejlmand @nashif
|
||||
/doc/ @carlescufi
|
||||
/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/services/device_mgmt/smp_protocol.rst @de-nordic
|
||||
/doc/services/device_mgmt/smp_groups/ @de-nordic
|
||||
/doc/CMakeLists.txt @carlescufi
|
||||
/doc/_scripts/ @carlescufi
|
||||
/doc/connectivity/bluetooth/ @alwa-nordic @jhedberg @Vudentz
|
||||
/doc/build/dts/ @galak @mbolivar-ampere
|
||||
/doc/build/sysbuild/ @tejlmand @nordicjm
|
||||
/doc/build/dts/ @galak @mbolivar-nordic
|
||||
/doc/hardware/peripherals/canbus/ @alexanderwachter @henrikbrixandersen
|
||||
/doc/security/ @ceolin @d3zd3z
|
||||
/drivers/debug/ @nashif
|
||||
@@ -235,18 +215,11 @@
|
||||
/drivers/*/*lpc11u6x* @mbittan @simonguinot
|
||||
/drivers/*/*npcx* @MulinChao @ChiHuaL
|
||||
/drivers/*/*andes* @cwshu @kevinwang821020 @jimmyzhe
|
||||
/drivers/*/*ifx_cat1* @ifyall @npal-cy
|
||||
/drivers/*/*neorv32* @henrikbrixandersen
|
||||
/drivers/*/*_s32* @manuargue
|
||||
/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
|
||||
/drivers/bluetooth/hci/hci_esp32.c @sylvioalves
|
||||
@@ -254,10 +227,10 @@
|
||||
/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/*esp32* @extremegtx @glaubermaroto
|
||||
/drivers/clock_control/*cpg_mssr* @aaillet
|
||||
/drivers/counter/ @nordic-krch
|
||||
/drivers/console/ipm_console.c @finikorg
|
||||
@@ -265,17 +238,14 @@
|
||||
/drivers/console/jailhouse_debug_console.c @MrVan
|
||||
/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/counter/*esp32* @glaubermaroto
|
||||
/drivers/crypto/*nrf_ecb* @maciekfabia @anangl
|
||||
/drivers/display/display_framebuf.c @dcpleung
|
||||
/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,34 +255,30 @@
|
||||
/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/ec_host_cmd_periph/ @jettr
|
||||
/drivers/edac/ @finikorg
|
||||
/drivers/eeprom/ @henrikbrixandersen
|
||||
/drivers/eeprom/eeprom_stm32.c @KwonTae-young
|
||||
/drivers/entropy/*b91* @andy-liu-telink
|
||||
/drivers/entropy/*bt_hci* @JordanYates
|
||||
/drivers/entropy/*rv32m1* @dleach02
|
||||
/drivers/entropy/*gecko* @chrta
|
||||
/drivers/entropy/*litex* @mateusz-holenko @kgugala @pgielda
|
||||
/drivers/espi/ @albertofloyd @franciscomunoz @sjvasanth1
|
||||
/drivers/ethernet/ @tbursztyka @jukkar
|
||||
/drivers/ethernet/ @tbursztyka @pfalcon
|
||||
/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/*adin2111* @GeorgeCGV
|
||||
/drivers/ethernet/phy/ @rlubos @tbursztyka @arvinf
|
||||
/drivers/mdio/ @rlubos @tbursztyka @arvinf
|
||||
/drivers/mdio/*adin2111* @GeorgeCGV
|
||||
/drivers/flash/ @nashif @de-nordic
|
||||
/drivers/flash/ @nashif @nvlsianpu
|
||||
/drivers/flash/*stm32_qspi* @lmajewski
|
||||
/drivers/flash/*b91* @andy-liu-telink
|
||||
/drivers/flash/*cadence* @ngboonkhai
|
||||
/drivers/flash/*cc13xx_cc26xx* @pepe2k
|
||||
/drivers/flash/*nrf* @de-nordic
|
||||
/drivers/flash/*esp32* @sylvioalves
|
||||
/drivers/flash/*nrf* @nvlsianpu
|
||||
/drivers/flash/*esp32* @glaubermaroto
|
||||
/drivers/fpga/ @tgorochowik @kgugala
|
||||
/drivers/gpio/ @mnkp
|
||||
/drivers/gpio/*b91* @andy-liu-telink
|
||||
@@ -321,12 +287,9 @@
|
||||
/drivers/gpio/*stm32* @erwango
|
||||
/drivers/gpio/*eos_s3* @fkokosinski @kgugala
|
||||
/drivers/gpio/*rcar* @aaillet
|
||||
/drivers/gpio/*esp32* @sylvioalves
|
||||
/drivers/gpio/*esp32* @glaubermaroto
|
||||
/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,22 +299,21 @@
|
||||
/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
|
||||
/drivers/ieee802154/ieee802154_cc13xx* @bwitherspoon @cfriedt @vaishnavachath
|
||||
/drivers/ieee802154/ieee802154_cc13xx* @bwitherspoon @cfriedt
|
||||
/drivers/interrupt_controller/ @dcpleung @nashif
|
||||
/drivers/interrupt_controller/intc_gic.c @stephanosio
|
||||
/drivers/interrupt_controller/*esp32* @sylvioalves
|
||||
/drivers/interrupt_controller/*esp32* @glaubermaroto
|
||||
/drivers/interrupt_controller/intc_nuclei_eclic.c @soburi
|
||||
/drivers/ipm/ipm_mhu* @karl-zh
|
||||
/drivers/ipm/Kconfig.nrfx @masz-nordic
|
||||
@@ -362,15 +324,15 @@
|
||||
/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/memc/ @gmarull
|
||||
/drivers/misc/ @tejlmand
|
||||
/drivers/misc/ft8xx/ @hubertmis
|
||||
/drivers/mm/ @dcpleung
|
||||
@@ -382,19 +344,18 @@
|
||||
/drivers/pcie/ @dcpleung @nashif @jhedberg
|
||||
/drivers/peci/ @albertofloyd @franciscomunoz @sjvasanth1
|
||||
/drivers/pinctrl/ @gmarull
|
||||
/drivers/pinctrl/*esp32* @sylvioalves
|
||||
/drivers/pinctrl/*esp32* @glaubermaroto
|
||||
/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
|
||||
/drivers/ps2/*npcx* @MulinChao @ChiHuaL
|
||||
/drivers/pwm/*b91* @andy-liu-telink
|
||||
/drivers/pwm/*pca9685* @nixward
|
||||
/drivers/pwm/*rpi_pico* @burumaj
|
||||
/drivers/pwm/*rv32m1* @henrikbrixandersen
|
||||
/drivers/pwm/*sam0* @nzmichaelh
|
||||
/drivers/pwm/*stm32* @gmarull
|
||||
/drivers/pwm/*test* @JordanYates
|
||||
/drivers/pwm/*xlnx* @henrikbrixandersen
|
||||
/drivers/pwm/pwm_capture.c @henrikbrixandersen
|
||||
@@ -402,33 +363,23 @@
|
||||
/drivers/pwm/*gecko* @sun681
|
||||
/drivers/pwm/*it8xxx2* @RuibinChang
|
||||
/drivers/pwm/*esp32* @LucasTambor
|
||||
/drivers/pwm/*rcar* @aaillet
|
||||
/drivers/pwm/*max31790* @benediktibk
|
||||
/drivers/regulator/* @gmarull
|
||||
/drivers/regulator/regulator_pca9420.c @danieldegrasse
|
||||
/drivers/regulator/regulator_rpi_pico.c @soburi
|
||||
/drivers/regulator/regulator_shell.c @danieldegrasse
|
||||
/drivers/pwm/*rcar* @pmarzin
|
||||
/drivers/regulator/*pmic* @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
|
||||
/drivers/sensor/grow_r502a/ @DineshDK03
|
||||
/drivers/sensor/hts*/ @avisconti
|
||||
/drivers/sensor/ina23*/ @bbilas
|
||||
/drivers/sensor/lis*/ @avisconti
|
||||
/drivers/sensor/lps*/ @avisconti
|
||||
/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/*nrfx* @anangl
|
||||
/drivers/serial/uart_altera_jtag.c @nashif
|
||||
/drivers/serial/*ns16550* @dcpleung @nashif @jenmwms @aasthagr
|
||||
/drivers/serial/*nrfx* @Mierunski @anangl
|
||||
/drivers/serial/uart_liteuart.c @mateusz-holenko @kgugala @pgielda
|
||||
/drivers/serial/Kconfig.mcux_iuart @Mani-Sadhasivam
|
||||
/drivers/serial/uart_mcux_iuart.c @Mani-Sadhasivam
|
||||
@@ -449,18 +400,15 @@
|
||||
/drivers/serial/uart_hvc_xen_consoleio.c @lorc @firscity
|
||||
/drivers/serial/Kconfig.it8xxx2 @GTLin08
|
||||
/drivers/serial/uart_ite_it8xxx2.c @GTLin08
|
||||
/drivers/smbus/ @finikorg
|
||||
/drivers/sip_svc/ @maheshraotm
|
||||
/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/spi/*esp32* @glaubermaroto
|
||||
/drivers/sdhc/ @danieldegrasse
|
||||
/drivers/timer/*apic* @dcpleung @nashif
|
||||
/drivers/timer/apic_tsc.c @andyross
|
||||
@@ -470,7 +418,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
|
||||
@@ -485,7 +433,7 @@
|
||||
/drivers/timer/*hpet* @dcpleung
|
||||
/drivers/usb/ @jfischer-no
|
||||
/drivers/usb/device/usb_dc_stm32.c @ydamigos @loicpoulain
|
||||
/drivers/usb_c/ @sambhurst
|
||||
/drivers/usbc/ @sambhurst
|
||||
/drivers/video/ @loicpoulain
|
||||
/drivers/i2c/*b91* @andy-liu-telink
|
||||
/drivers/i2c/i2c_ll_stm32* @ydamigos
|
||||
@@ -494,6 +442,8 @@
|
||||
/drivers/i2c/i2c_dw* @dcpleung
|
||||
/drivers/i2c/*tca954x* @kurddt
|
||||
/drivers/*/*xec* @franciscomunoz @albertofloyd @sjvasanth1
|
||||
/drivers/mipi_dsi/ @gmarull
|
||||
/drivers/mipi_dsi/mipi_dsi.c @gmarull
|
||||
/drivers/w1/ @str4t0m
|
||||
/drivers/watchdog/*gecko* @oanerer
|
||||
/drivers/watchdog/*sifive* @katsuster
|
||||
@@ -503,9 +453,7 @@
|
||||
/drivers/watchdog/Kconfig.it8xxx2 @RuibinChang
|
||||
/drivers/watchdog/wdt_counter.c @nordic-krch
|
||||
/drivers/watchdog/*rpi_pico* @thedjnK
|
||||
/drivers/watchdog/*dw* @softwarecki
|
||||
/drivers/watchdog/*ifx* @sreeramIfx
|
||||
/drivers/wifi/ @rlubos @tbursztyka @jukkar
|
||||
/drivers/wifi/ @rlubos @tbursztyka @pfalcon
|
||||
/drivers/wifi/esp_at/ @mniestroj
|
||||
/drivers/wifi/eswifi/ @loicpoulain @nandojve
|
||||
/drivers/wifi/winc1500/ @kludentwo
|
||||
@@ -522,73 +470,64 @@
|
||||
/dts/arm/atmel/samv71* @nandojve
|
||||
/dts/arm/atmel/ @galak
|
||||
/dts/arm/broadcom/ @sbranden
|
||||
/dts/arm/cypress/ @ifyall @npal-cy
|
||||
/dts/arm/cypress/ @nandojve
|
||||
/dts/arm/gigadevice/ @nandojve
|
||||
/dts/arm/infineon/xmc4* @parthitce @ifyall @npal-cy
|
||||
/dts/arm/infineon/psoc6/ @ifyall @npal-cy
|
||||
/dts/arm/infineon/ @parthitce
|
||||
/dts/arm64/ @carlocaione
|
||||
/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
|
||||
/dts/arm/nordic/ @anangl @carlescufi
|
||||
/dts/arm/nuvoton/ @ssekar15 @MulinChao @ChiHuaL
|
||||
/dts/arm/nxp/ @mmahadevan108 @dleach02
|
||||
/dts/arm/nxp/nxp_s32* @manuargue
|
||||
/dts/arm/microchip/ @franciscomunoz @albertofloyd @sjvasanth1
|
||||
/dts/arm/rpi_pico/ @yonsch
|
||||
/dts/arm/silabs/efm32_pg_1b.dtsi @rdmeneze
|
||||
/dts/arm/silabs/efm32gg11b* @oanerer
|
||||
/dts/arm/silabs/efm32_jg_pg* @chrta
|
||||
/dts/arm/silabs/efr32bg13p* @mnkp
|
||||
/dts/arm/silabs/efr32bg22* @kgugala @fkokosinski @pczarnecki
|
||||
/dts/arm/silabs/efr32xg13p* @mnkp
|
||||
/dts/arm/silabs/efm32jg12b* @chrta
|
||||
/dts/arm/silabs/efm32pg12b* @chrta
|
||||
/dts/arm/silabs/efm32pg1b* @rdmeneze
|
||||
/dts/arm/silabs/efr32mg21* @l-alfred
|
||||
/dts/arm/silabs/efr32fg13* @yonsch
|
||||
/dts/riscv/ @kgugala @pgielda
|
||||
/dts/riscv/ite/ @ite
|
||||
/dts/riscv/microchip/microchip-miv.dtsi @galak
|
||||
/dts/riscv/microsemi/microsemi-miv.dtsi @galak
|
||||
/dts/riscv/openisa/rv32m1* @dleach02
|
||||
/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/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
|
||||
/dts/xtensa/espressif/ @sylvioalves
|
||||
/dts/xtensa/espressif/ @glaubermaroto
|
||||
/dts/xtensa/nxp/ @iuliana-prodan @dbaluta
|
||||
/dts/sparc/ @julius-barendt
|
||||
/dts/bindings/ @galak
|
||||
/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
|
||||
/dts/bindings/*/*psoc6* @ifyall @npal-cy
|
||||
/dts/bindings/*/*infineon*cat1* @ifyall @npal-cy
|
||||
/dts/bindings/*/*psoc6* @nandojve
|
||||
/dts/bindings/*/nordic* @anangl
|
||||
/dts/bindings/*/nxp* @mmahadevan108 @dleach02
|
||||
/dts/bindings/*/nxp*s32* @manuargue
|
||||
/dts/bindings/*/openisa* @dleach02
|
||||
/dts/bindings/*/raspberrypi*pico* @yonsch
|
||||
/dts/bindings/*/st* @erwango
|
||||
@@ -598,40 +537,24 @@
|
||||
/dts/bindings/*/vexriscv* @mateusz-holenko @kgugala @pgielda
|
||||
/dts/bindings/*/andes* @cwshu @kevinwang821020 @jimmyzhe
|
||||
/dts/bindings/*/neorv32* @henrikbrixandersen
|
||||
/dts/bindings/*/*lan91c111* @sgrrzhf
|
||||
/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
|
||||
/include/zephyr/drivers/counter.h @nordic-krch
|
||||
/include/zephyr/drivers/dac.h @martinjaeger
|
||||
/include/zephyr/drivers/espi.h @albertofloyd @franciscomunoz @sjvasanth1
|
||||
/include/zephyr/drivers/bluetooth/ @alwa-nordic @jhedberg @Vudentz
|
||||
/include/zephyr/drivers/flash.h @nashif @carlescufi @galak @MaureenHelm @de-nordic
|
||||
/include/zephyr/drivers/flash.h @nashif @carlescufi @galak @MaureenHelm @nvlsianpu
|
||||
/include/zephyr/drivers/i2c_emul.h @sjg20
|
||||
/include/zephyr/drivers/i3c.h @dcpleung
|
||||
/include/zephyr/drivers/i3c/ @dcpleung
|
||||
@@ -642,26 +565,23 @@
|
||||
/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
|
||||
/include/zephyr/drivers/sip_svc/ @maheshraotm
|
||||
/include/zephyr/drivers/lora.h @Mani-Sadhasivam
|
||||
/include/zephyr/drivers/peci.h @albertofloyd @franciscomunoz @sjvasanth1
|
||||
/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
|
||||
@@ -687,12 +607,11 @@
|
||||
/include/zephyr/dt-bindings/clock/kinetis_scg.h @henrikbrixandersen
|
||||
/include/zephyr/dt-bindings/ethernet/xlnx_gem.h @ibirnbaum
|
||||
/include/zephyr/dt-bindings/pcie/ @dcpleung
|
||||
/include/zephyr/dt-bindings/pinctrl/esp* @sylvioalves
|
||||
/include/zephyr/dt-bindings/pinctrl/esp* @glaubermaroto
|
||||
/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/fs/ @nashif @nvlsianpu @de-nordic
|
||||
/include/zephyr/init.h @nashif @andyross
|
||||
/include/zephyr/irq.h @dcpleung @nashif @andyross
|
||||
/include/zephyr/irq_offload.h @dcpleung @nashif @andyross
|
||||
@@ -703,28 +622,22 @@
|
||||
/include/zephyr/logging/ @nordic-krch
|
||||
/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/mgmt/mcumgr/ @de-nordic
|
||||
/include/zephyr/net/ @rlubos @tbursztyka @pfalcon
|
||||
/include/zephyr/net/buf.h @jhedberg @tbursztyka @pfalcon @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/posix/ @pfalcon
|
||||
/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
|
||||
/include/zephyr/sw_isr_table.h @dcpleung @nashif @andyross
|
||||
/include/zephyr/sd/ @danieldegrasse
|
||||
/include/zephyr/sip_svc/ @maheshraotm
|
||||
/include/zephyr/sys_clock.h @dcpleung @nashif @andyross
|
||||
/include/zephyr/sys/sys_io.h @dcpleung @nashif @andyross
|
||||
/include/zephyr/sys/kobject.h @dcpleung @nashif
|
||||
@@ -732,17 +645,15 @@
|
||||
/include/zephyr/toolchain/ @dcpleung @nashif @andyross
|
||||
/include/zephyr/zephyr.h @dcpleung @nashif @andyross
|
||||
/kernel/ @dcpleung @nashif @andyross
|
||||
/lib/cpp/ @stephanosio
|
||||
/lib/smf/ @sambhurst
|
||||
/lib/util/ @carlescufi @jakub-uC
|
||||
/lib/util/fnmatch/ @carlescufi @jakub-uC
|
||||
/lib/open-amp/ @arnopo
|
||||
/lib/os/ @dcpleung @nashif @andyross
|
||||
/lib/os/cbprintf_packaged.c @npitre
|
||||
/lib/posix/ @cfriedt
|
||||
/lib/posix/ @pfalcon
|
||||
/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
|
||||
@@ -755,7 +666,6 @@
|
||||
/kernel/device.c @andyross @nashif
|
||||
/kernel/idle.c @andyross @nashif
|
||||
/samples/ @nashif
|
||||
/samples/application_development/sysbuild/ @tejlmand @nordicjm
|
||||
/samples/basic/minimal/ @carlescufi
|
||||
/samples/basic/servo_motor/boards/*microbit* @jhe
|
||||
/samples/bluetooth/ @jhedberg @Vudentz @alwa-nordic @sjanc
|
||||
@@ -765,32 +675,25 @@
|
||||
/samples/drivers/eeprom/ @henrikbrixandersen
|
||||
/samples/drivers/ht16k33/ @henrikbrixandersen
|
||||
/samples/drivers/lora/ @Mani-Sadhasivam
|
||||
/samples/drivers/smbus/ @finikorg
|
||||
/samples/subsys/lorawan/ @Mani-Sadhasivam
|
||||
/samples/modules/canopennode/ @henrikbrixandersen
|
||||
/samples/net/ @rlubos @tbursztyka @jukkar
|
||||
/samples/net/ @rlubos @tbursztyka @pfalcon
|
||||
/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 @pfalcon
|
||||
/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 @pfalcon
|
||||
/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/sip_svc/ @maheshraotm
|
||||
/samples/subsys/mgmt/mcumgr/ @de-nordic @nordicjm
|
||||
/samples/subsys/shell/ @jakub-uC @nordic-krch
|
||||
/samples/subsys/mgmt/mcumgr/smp_svr/ @aunsbjerg @nvlsianpu
|
||||
/samples/subsys/mgmt/updatehub/ @nandojve @otavio
|
||||
/samples/subsys/mgmt/osdp/ @sidcha
|
||||
/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,44 +703,41 @@
|
||||
/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
|
||||
/arch/x86/gen_gdt.py @dcpleung @nashif
|
||||
/arch/x86/gen_idt.py @dcpleung @nashif
|
||||
/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
|
||||
/scripts/twister @nashif
|
||||
/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
|
||||
/scripts/valgrind.supp @aescolar @daor-oti
|
||||
/share/sysbuild/ @tejlmand @nordicjm
|
||||
/share/sysbuild/ @tejlmand
|
||||
/share/zephyr-package/ @tejlmand
|
||||
/share/zephyrunittest-package/ @tejlmand
|
||||
/subsys/bluetooth/ @alwa-nordic @jhedberg @Vudentz
|
||||
@@ -850,105 +750,95 @@ scripts/build/gen_image_info.py @tejlmand
|
||||
/subsys/debug/coredump/ @dcpleung
|
||||
/subsys/debug/gdbstub/ @ceolin
|
||||
/subsys/debug/gdbstub.c @ceolin
|
||||
/subsys/dfu/ @de-nordic @nordicjm
|
||||
/subsys/dfu/ @nvlsianpu
|
||||
/subsys/disk/ @jfischer-no
|
||||
/subsys/dsp/ @yperess
|
||||
/subsys/tracing/ @nashif
|
||||
/subsys/debug/asan_hacks.c @aescolar @daor-oti
|
||||
/subsys/demand_paging/ @dcpleung @nashif
|
||||
/subsys/emul/ @sjg20
|
||||
/subsys/fb/ @jfischer-no
|
||||
/subsys/fs/ @nashif
|
||||
/subsys/fs/fcb/ @nvlsianpu
|
||||
/subsys/fs/nvs/ @Laczen
|
||||
/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/log_backend_net.c @nordic-krch @rlubos
|
||||
/subsys/lorawan/ @Mani-Sadhasivam
|
||||
/subsys/mgmt/ec_host_cmd/ @jettr
|
||||
/subsys/mgmt/mcumgr/ @carlescufi @de-nordic @nordicjm
|
||||
/subsys/mgmt/mcumgr/ @carlescufi @nvlsianpu @de-nordic
|
||||
/subsys/mgmt/hawkbit/ @Navin-Sankar
|
||||
/subsys/mgmt/mcumgr/smp_udp.c @aunsbjerg
|
||||
/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 @pfalcon @rlubos
|
||||
/subsys/net/ip/ @rlubos @tbursztyka @pfalcon
|
||||
/subsys/net/lib/ @rlubos @tbursztyka @pfalcon
|
||||
/subsys/net/lib/dns/ @rlubos @tbursztyka @pfalcon @cfriedt
|
||||
/subsys/net/lib/lwm2m/ @rlubos
|
||||
/subsys/net/lib/config/ @rlubos @tbursztyka @jukkar
|
||||
/subsys/net/lib/config/ @rlubos @tbursztyka @pfalcon
|
||||
/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 @pfalcon
|
||||
/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
|
||||
/subsys/pm/ @nashif @ceolin
|
||||
/subsys/random/ @dleach02
|
||||
/subsys/settings/ @nvlsianpu
|
||||
/subsys/shell/ @jakub-uC @nordic-krch
|
||||
/subsys/shell/backends/shell_mqtt.c @ycsin
|
||||
/subsys/stats/ @nvlsianpu
|
||||
/subsys/storage/ @nvlsianpu
|
||||
/subsys/sd/ @danieldegrasse
|
||||
/subsys/sip_svc/ @maheshraotm
|
||||
/subsys/task_wdt/ @martinjaeger
|
||||
/subsys/testsuite/ @nashif
|
||||
/subsys/testsuite/ztest/*/ztress* @nordic-krch
|
||||
/subsys/timing/ @nashif @dcpleung
|
||||
/subsys/usb/ @jfischer-no
|
||||
/subsys/usb/usb_c/ @sambhurst
|
||||
/subsys/usb/device/class/dfu/usb_dfu.c @nvlsianpu
|
||||
/tests/ @nashif
|
||||
/tests/arch/arm/ @ioannisg @stephanosio
|
||||
/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
|
||||
/tests/bsim/bluetooth/mesh/ @jhedberg @Vudentz @wopu-ot @PavelVPV
|
||||
/tests/bluetooth/mesh_shell/ @jhedberg @Vudentz @sjanc @PavelVPV
|
||||
/tests/bluetooth/bsim_bt/ @alwa-nordic @jhedberg @Vudentz @wopu-ot
|
||||
/tests/bluetooth/bsim_bt/bsim_test_audio/ @jhedberg @Vudentz @wopu-ot @Thalley
|
||||
/tests/bluetooth/tester/ @alwa-nordic @jhedberg @Vudentz @sjanc
|
||||
/tests/posix/ @cfriedt
|
||||
/tests/posix/ @pfalcon
|
||||
/tests/crypto/ @ceolin
|
||||
/tests/crypto/mbedtls/ @nashif @ceolin @d3zd3z
|
||||
/tests/drivers/can/ @alexanderwachter @henrikbrixandersen
|
||||
/tests/drivers/counter/ @nordic-krch
|
||||
/tests/drivers/eeprom/ @henrikbrixandersen @sjg20
|
||||
/tests/drivers/flash_simulator/ @de-nordic
|
||||
/tests/drivers/flash_simulator/ @nvlsianpu
|
||||
/tests/drivers/gpio/ @mnkp
|
||||
/tests/drivers/hwinfo/ @alexanderwachter
|
||||
/tests/drivers/smbus/ @finikorg
|
||||
/tests/drivers/spi/ @tbursztyka
|
||||
/tests/drivers/uart/uart_async_api/ @anangl
|
||||
/tests/drivers/uart/uart_async_api/ @Mierunski
|
||||
/tests/drivers/w1/ @str4t0m
|
||||
/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 @pfalcon
|
||||
/tests/net/buf/ @jhedberg @tbursztyka @pfalcon
|
||||
/tests/net/lib/ @rlubos @tbursztyka @pfalcon
|
||||
/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 @pfalcon
|
||||
/tests/subsys/debug/coredump/ @dcpleung
|
||||
/tests/subsys/fs/ @nashif @de-nordic
|
||||
/tests/subsys/mgmt/mcumgr/ @de-nordic @nordicjm
|
||||
/tests/subsys/fs/ @nashif @nvlsianpu @de-nordic
|
||||
/tests/subsys/mgmt/mcumgr/ @de-nordic
|
||||
/tests/subsys/sd/ @danieldegrasse
|
||||
/tests/subsys/rtio/ @teburd
|
||||
/tests/subsys/settings/ @nvlsianpu
|
||||
/tests/subsys/shell/ @jakub-uC @nordic-krch
|
||||
# Get all docs reviewed
|
||||
*.rst @nashif
|
||||
|
||||
325
Kconfig.zephyr
325
Kconfig.zephyr
@@ -2,10 +2,8 @@
|
||||
|
||||
# Copyright (c) 2014-2015 Wind River Systems, Inc.
|
||||
# Copyright (c) 2016 Intel Corporation
|
||||
# Copyright (c) 2023 Nordic Semiconductor ASA
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
osource "${APPLICATION_SOURCE_DIR}/VERSION"
|
||||
|
||||
# Include Kconfig.defconfig files first so that they can override defaults and
|
||||
# other symbol/choice properties by adding extra symbol/choice definitions.
|
||||
@@ -56,7 +54,7 @@ menu "Build and Link Features"
|
||||
|
||||
menu "Linker Options"
|
||||
|
||||
choice LINKER_ORPHAN_CONFIGURATION
|
||||
choice
|
||||
prompt "Linker Orphan Section Handling"
|
||||
default LINKER_ORPHAN_SECTION_WARN
|
||||
|
||||
@@ -169,6 +167,13 @@ config CMAKE_LINKER_GENERATOR
|
||||
|
||||
endchoice
|
||||
|
||||
config LLVM_USE_LD
|
||||
bool "LLVM use ld linker"
|
||||
depends on "${ZEPHYR_TOOLCHAIN_VARIANT}" = "llvm"
|
||||
default y
|
||||
help
|
||||
Use binutils ld linker instead of LLVM built-in lld linker.
|
||||
|
||||
config HAVE_CUSTOM_LINKER_SCRIPT
|
||||
bool "Custom linker script provided"
|
||||
help
|
||||
@@ -261,49 +266,6 @@ config LINKER_GENERIC_SECTIONS_PRESENT_AT_BOOT
|
||||
|
||||
If unsure, say Y.
|
||||
|
||||
config LINKER_LAST_SECTION_ID
|
||||
bool "Last section identifier"
|
||||
default y
|
||||
depends on ARM || ARM64 || RISCV
|
||||
help
|
||||
If enabled, the last section will contain an identifier.
|
||||
This ensures that the '_flash_used' linker symbol will always be
|
||||
correctly calculated, even in cases where the location counter may
|
||||
have been incremented for alignment purposes but no data is placed
|
||||
after alignment.
|
||||
|
||||
Note: in cases where the flash is fully used, for example application
|
||||
specific data is written at the end of the flash area, then writing a
|
||||
last section identifier may cause rom region overflow.
|
||||
In such cases this setting should be disabled.
|
||||
|
||||
config LINKER_LAST_SECTION_ID_PATTERN
|
||||
hex "Last section identifier pattern"
|
||||
default "0xE015E015"
|
||||
depends on LINKER_LAST_SECTION_ID
|
||||
help
|
||||
Pattern to fill into last section as identifier.
|
||||
Default pattern is 0xE015 (end of last section), but any pattern can
|
||||
be used.
|
||||
The size of the pattern must not exceed 4 bytes.
|
||||
|
||||
config LINKER_USE_NO_RELAX
|
||||
bool
|
||||
help
|
||||
Hidden symbol to allow features to force the use of no relax.
|
||||
|
||||
config LINKER_USE_RELAX
|
||||
bool "Linker optimization of call addressing"
|
||||
depends on !LINKER_USE_NO_RELAX
|
||||
default y
|
||||
help
|
||||
This option performs global optimizations that become possible when the linker resolves
|
||||
addressing in the program, such as relaxing address modes and synthesizing new
|
||||
instructions in the output object file. For ld and lld, this enables `--relax`.
|
||||
On platforms where this is not supported, `--relax' is accepted, but ignored.
|
||||
Disabling it can reduce performance, as the linker is no longer able to substiture long /
|
||||
in-effective jump calls to shorter / more effective instructions.
|
||||
|
||||
endmenu # "Linker Sections"
|
||||
|
||||
endmenu
|
||||
@@ -316,39 +278,12 @@ config CODING_GUIDELINE_CHECK
|
||||
Use available compiler flags to check coding guideline rules during
|
||||
the build.
|
||||
|
||||
config NATIVE_BUILD
|
||||
bool
|
||||
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
|
||||
bool "Build as a native host application"
|
||||
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
|
||||
Configure the compiler to operate in freestanding mode according to
|
||||
the C and C++ language specifications. Freestanding mode reduces the
|
||||
requirements of the compiler and language environment, which can
|
||||
negatively impact the ability for the compiler to detect errors and
|
||||
perform optimizations.
|
||||
|
||||
choice COMPILER_OPTIMIZATIONS
|
||||
prompt "Optimization level"
|
||||
default NO_OPTIMIZATIONS if COVERAGE
|
||||
@@ -383,67 +318,14 @@ config NO_OPTIMIZATIONS
|
||||
Compiler optimizations will be set to -O0 independently of other
|
||||
options.
|
||||
|
||||
Selecting this option will likely require manual tuning of the
|
||||
default stack sizes in order to avoid stack overflows.
|
||||
endchoice
|
||||
|
||||
config COMPILER_WARNINGS_AS_ERRORS
|
||||
bool "Treat warnings as errors"
|
||||
help
|
||||
Turn on "warning as error" toolchain flags
|
||||
|
||||
config COMPILER_SAVE_TEMPS
|
||||
bool "Save temporary object files"
|
||||
help
|
||||
Instruct the compiler to save the temporary intermediate files
|
||||
permanently. These can be useful for troubleshooting build issues.
|
||||
|
||||
config COMPILER_TRACK_MACRO_EXPANSION
|
||||
bool "Track macro expansion"
|
||||
default y
|
||||
help
|
||||
When enabled, locations of tokens across macro expansions will be
|
||||
tracked. Disabling this option may be useful to debug long macro
|
||||
expansion chains.
|
||||
|
||||
config COMPILER_COLOR_DIAGNOSTICS
|
||||
bool "Colored diagnostics"
|
||||
default y
|
||||
help
|
||||
Compiler diagnostic messages are colorized.
|
||||
|
||||
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_COMPILE_TIME
|
||||
help
|
||||
Buffer overflow checking in libc calls. Supported by Clang and
|
||||
GCC when using Picolibc or Newlib. Requires compiler optimization
|
||||
to be enabled.
|
||||
|
||||
config FORTIFY_SOURCE_NONE
|
||||
bool "No detection"
|
||||
help
|
||||
Disables both compile-time and run-time checking.
|
||||
|
||||
config FORTIFY_SOURCE_COMPILE_TIME
|
||||
bool "Compile-time detection"
|
||||
help
|
||||
Enables only compile-time checking. Compile-time checking
|
||||
doesn't increase executable size or reduce performance, it
|
||||
limits checking to what can be done with information available
|
||||
at compile time.
|
||||
|
||||
config FORTIFY_SOURCE_RUN_TIME
|
||||
bool "Compile-time and run-time detection"
|
||||
help
|
||||
Enables both compile-time and run-time checking. Run-time
|
||||
checking increases coverage at the expense of additional code,
|
||||
and means that applications will raise a runtime exception
|
||||
when buffer overflow is detected.
|
||||
|
||||
endchoice
|
||||
|
||||
config COMPILER_OPT
|
||||
string "Custom compiler options"
|
||||
help
|
||||
@@ -507,6 +389,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 +419,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 +475,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
|
||||
@@ -614,7 +496,7 @@ config BUILD_OUTPUT_UF2_FAMILY_ID
|
||||
default "0x04240bdf" if SOC_SERIES_STM32L5X
|
||||
default "0x70d16653" if SOC_SERIES_STM32WBX
|
||||
default "0x5ee21072" if SOC_STM32F103XE
|
||||
default "0x57755a57" if SOC_SERIES_STM32F4X && (!SOC_STM32F407XE) && (!SOC_STM32F407XG)
|
||||
default "0x57755a57" if SOC_STM32F401XC || SOC_STM32F401XE
|
||||
default "0x6d0922fa" if SOC_STM32F407XE
|
||||
default "0x8fb060fe" if SOC_STM32F407XG
|
||||
help
|
||||
@@ -674,15 +556,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
|
||||
@@ -730,49 +603,6 @@ config BUILD_OUTPUT_META_STATE_PROPAGATE
|
||||
defined when `west update` was run the last time (`manifest-rev`).
|
||||
The off state is only present if a west workspace is found.
|
||||
|
||||
config BUILD_OUTPUT_STRIP_PATHS
|
||||
bool "Strip absolute paths from binaries"
|
||||
default y
|
||||
help
|
||||
If the compiler supports it, strip the ${ZEPHYR_BASE} prefix from the
|
||||
__FILE__ macro used in __ASSERT*, in the
|
||||
.noinit."/home/joe/zephyr/fu/bar.c" section names and in any
|
||||
application code.
|
||||
This saves some memory, stops leaking user locations in binaries, makes
|
||||
failure logs more deterministic and most importantly makes builds more
|
||||
deterministic.
|
||||
Debuggers usually have a path mapping feature to ensure the files are
|
||||
still found.
|
||||
|
||||
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
|
||||
derived from the devicetree definition.
|
||||
|
||||
Fails the build on priority errors (dependent devices, inverted
|
||||
priority), see CHECK_INIT_PRIORITIES_FAIL_ON_WARNING to fail on
|
||||
warnings (dependent devices, same priority) as well.
|
||||
|
||||
config CHECK_INIT_PRIORITIES_FAIL_ON_WARNING
|
||||
bool "Fail the build on priority check warnings"
|
||||
depends on CHECK_INIT_PRIORITIES
|
||||
help
|
||||
Fail the build if the dependency check script identifies any pair of
|
||||
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 +669,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
|
||||
@@ -849,10 +679,122 @@ config BOOTLOADER_SRAM_SIZE
|
||||
- Zephyr is a !XIP image, which implicitly assumes existence of a
|
||||
bootloader that loads the Zephyr !XIP image onto SRAM.
|
||||
|
||||
config MCUBOOT
|
||||
bool
|
||||
help
|
||||
Hidden option used to indicate that the current image is MCUBoot
|
||||
|
||||
config BOOTLOADER_MCUBOOT
|
||||
bool "MCUboot bootloader support"
|
||||
select USE_DT_CODE_PARTITION
|
||||
imply INIT_ARCH_HW_AT_BOOT if ARCH_SUPPORTS_ARCH_HW_INIT
|
||||
depends on !MCUBOOT
|
||||
help
|
||||
This option signifies that the target uses MCUboot as a bootloader,
|
||||
or in other words that the image is to be chain-loaded by MCUboot.
|
||||
This sets several required build system and Device Tree options in
|
||||
order for the image generated to be bootable using the MCUboot open
|
||||
source bootloader. Currently this includes:
|
||||
|
||||
* Setting ROM_START_OFFSET to a default value that allows space
|
||||
for the MCUboot image header
|
||||
* Activating SW_VECTOR_RELAY_CLIENT on Cortex-M0
|
||||
(or Armv8-M baseline) targets with no built-in vector relocation
|
||||
mechanisms
|
||||
|
||||
By default, this option instructs Zephyr to initialize the core
|
||||
architecture HW registers during boot, when this is supported by
|
||||
the application. This removes the need by MCUboot to reset
|
||||
the core registers' state itself.
|
||||
|
||||
if BOOTLOADER_MCUBOOT
|
||||
|
||||
config MCUBOOT_SIGNATURE_KEY_FILE
|
||||
string "Path to the mcuboot signing key file"
|
||||
default ""
|
||||
depends on !MCUBOOT_GENERATE_UNSIGNED_IMAGE
|
||||
help
|
||||
The file contains a key pair whose public half is verified
|
||||
by your target's MCUboot image. The file is in PEM format.
|
||||
|
||||
If set to a non-empty value, the build system tries to
|
||||
sign the final binaries using a 'west sign -t imgtool' command.
|
||||
The signed binaries are placed in the build directory
|
||||
at zephyr/zephyr.signed.bin and zephyr/zephyr.signed.hex.
|
||||
|
||||
The file names can be customized with CONFIG_KERNEL_BIN_NAME.
|
||||
The existence of bin and hex files depends on CONFIG_BUILD_OUTPUT_BIN
|
||||
and CONFIG_BUILD_OUTPUT_HEX.
|
||||
|
||||
This option should contain a path to the same file as the
|
||||
BOOT_SIGNATURE_KEY_FILE option in your MCUboot .config. The path
|
||||
may be absolute or relative to the west workspace topdir. (The MCUboot
|
||||
config option is used for the MCUboot bootloader image; this option is
|
||||
for your application which is to be loaded by MCUboot. The MCUboot
|
||||
config option can be a relative path from the MCUboot repository
|
||||
root.)
|
||||
|
||||
If left empty, you must sign the Zephyr binaries manually.
|
||||
|
||||
config MCUBOOT_ENCRYPTION_KEY_FILE
|
||||
string "Path to the mcuboot encryption key file"
|
||||
default ""
|
||||
depends on MCUBOOT_SIGNATURE_KEY_FILE != ""
|
||||
help
|
||||
The file contains the public key that is used to encrypt the
|
||||
ephemeral key that encrypts the image. The corresponding
|
||||
private key is hard coded in the MCUboot source code and is
|
||||
used to decrypt the ephemeral key that is embedded in the
|
||||
image. The file is in PEM format.
|
||||
|
||||
If set to a non-empty value, the build system tries to
|
||||
sign and encrypt the final binaries using a 'west sign -t imgtool'
|
||||
command. The binaries are placed in the build directory at
|
||||
zephyr/zephyr.signed.encrypted.bin and
|
||||
zephyr/zephyr.signed.encrypted.hex.
|
||||
|
||||
The file names can be customized with CONFIG_KERNEL_BIN_NAME.
|
||||
The existence of bin and hex files depends on CONFIG_BUILD_OUTPUT_BIN
|
||||
and CONFIG_BUILD_OUTPUT_HEX.
|
||||
|
||||
This option should either be an absolute path or a path relative to
|
||||
the west workspace topdir.
|
||||
Example: './bootloader/mcuboot/enc-rsa2048-pub.pem'
|
||||
|
||||
If left empty, you must encrypt the Zephyr binaries manually.
|
||||
|
||||
config MCUBOOT_EXTRA_IMGTOOL_ARGS
|
||||
string "Extra arguments to pass to imgtool"
|
||||
default ""
|
||||
help
|
||||
If CONFIG_MCUBOOT_SIGNATURE_KEY_FILE is a non-empty string,
|
||||
you can use this option to pass extra options to imgtool.
|
||||
For example, you could set this to "--version 1.2".
|
||||
|
||||
config MCUBOOT_GENERATE_UNSIGNED_IMAGE
|
||||
bool "Generate unsigned binary image bootable with MCUboot"
|
||||
help
|
||||
Enabling this configuration allows automatic unsigned binary image
|
||||
generation when MCUboot signing key is not provided,
|
||||
i.e., MCUBOOT_SIGNATURE_KEY_FILE is left empty.
|
||||
|
||||
config MCUBOOT_GENERATE_CONFIRMED_IMAGE
|
||||
bool "Also generate a padded, confirmed image"
|
||||
help
|
||||
The signed, padded, and confirmed binaries are placed in the build
|
||||
directory at zephyr/zephyr.signed.confirmed.bin and
|
||||
zephyr/zephyr.signed.confirmed.hex.
|
||||
|
||||
The file names can be customized with CONFIG_KERNEL_BIN_NAME.
|
||||
The existence of bin and hex files depends on CONFIG_BUILD_OUTPUT_BIN
|
||||
and CONFIG_BUILD_OUTPUT_HEX.
|
||||
|
||||
endif # BOOTLOADER_MCUBOOT
|
||||
|
||||
config BOOTLOADER_ESP_IDF
|
||||
bool "ESP-IDF bootloader support"
|
||||
depends on SOC_FAMILY_ESP32 && !BOOTLOADER_MCUBOOT && !MCUBOOT
|
||||
default y
|
||||
depends on (SOC_ESP32 || SOC_ESP32S2 || SOC_ESP32C3) && !BOOTLOADER_MCUBOOT
|
||||
default y
|
||||
help
|
||||
This option will trigger the compilation of the ESP-IDF bootloader
|
||||
inside the build folder.
|
||||
@@ -911,3 +853,14 @@ config COMPAT_INCLUDES
|
||||
deprecated header files.
|
||||
|
||||
endmenu
|
||||
|
||||
config LEGACY_INCLUDE_PATH
|
||||
bool "Allow for the legacy include paths (without the zephyr/ prefix) (DEPRECATED)"
|
||||
select DEPRECATED
|
||||
help
|
||||
DEPRECATED: Allow applications and libraries to use the Zephyr legacy
|
||||
include path which does not use the zephyr/ prefix. For example, the
|
||||
preferred way to include a Zephyr header is to use <zephyr/kernel.h>,
|
||||
but enabling CONFIG_LEGACY_INCLUDE_PATH will allow developers to use
|
||||
<kernel.h> instead. This (without the zephyr/ prefix) is deprecated
|
||||
and should be avoided. Eventually, it will not be supported.
|
||||
|
||||
1342
MAINTAINERS.yml
1342
MAINTAINERS.yml
File diff suppressed because it is too large
Load Diff
@@ -2,11 +2,7 @@
|
||||
|
||||
<a href="https://www.zephyrproject.org">
|
||||
<p align="center">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="doc/_static/images/logo-readme-dark.svg">
|
||||
<source media="(prefers-color-scheme: light)" srcset="doc/_static/images/logo-readme-light.svg">
|
||||
<img src="doc/_static/images/logo-readme-light.svg">
|
||||
</picture>
|
||||
<img src="doc/_static/images/logo-readme.svg">
|
||||
</p>
|
||||
</a>
|
||||
|
||||
|
||||
4
VERSION
4
VERSION
@@ -1,5 +1,5 @@
|
||||
VERSION_MAJOR = 3
|
||||
VERSION_MINOR = 4
|
||||
PATCHLEVEL = 99
|
||||
VERSION_MINOR = 2
|
||||
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(
|
||||
|
||||
72
arch/Kconfig
72
arch/Kconfig
@@ -34,7 +34,6 @@ config ARM
|
||||
# is really only necessary for Cortex-M with ARM MPU!
|
||||
select GEN_PRIV_STACKS
|
||||
select ARCH_HAS_THREAD_LOCAL_STORAGE if CPU_AARCH32_CORTEX_R || CPU_CORTEX_M || CPU_AARCH32_CORTEX_A
|
||||
select BARRIER_OPERATIONS_ARCH
|
||||
help
|
||||
ARM architecture
|
||||
|
||||
@@ -43,13 +42,11 @@ 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
|
||||
select USE_SWITCH_SUPPORTED
|
||||
select IRQ_OFFLOAD_NESTED if IRQ_OFFLOAD
|
||||
select BARRIER_OPERATIONS_ARCH
|
||||
help
|
||||
ARM64 (AArch64) architecture
|
||||
|
||||
@@ -92,7 +89,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
|
||||
|
||||
@@ -117,7 +113,6 @@ config RISCV
|
||||
select USE_SWITCH_SUPPORTED
|
||||
select USE_SWITCH
|
||||
select SCHED_IPI_SUPPORTED if SMP
|
||||
select BARRIER_OPERATIONS_BUILTIN
|
||||
imply XIP
|
||||
help
|
||||
RISCV architecture
|
||||
@@ -129,7 +124,6 @@ config XTENSA
|
||||
select USE_SWITCH
|
||||
select USE_SWITCH_SUPPORTED
|
||||
select IRQ_OFFLOAD_NESTED if IRQ_OFFLOAD
|
||||
select ARCH_HAS_CODE_DATA_RELOCATION
|
||||
select ARCH_HAS_TIMING_FUNCTIONS
|
||||
imply ATOMIC_OPERATIONS_ARCH
|
||||
help
|
||||
@@ -143,9 +137,8 @@ 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
|
||||
POSIX (native) architecture
|
||||
|
||||
@@ -173,14 +166,6 @@ config BIG_ENDIAN
|
||||
modifying it. The option is used to select linker script OUTPUT_FORMAT
|
||||
and command line option for gen_isr_tables.py.
|
||||
|
||||
config LITTLE_ENDIAN
|
||||
# Hidden Kconfig option representing the default little-endian architecture
|
||||
# This is just the opposite of BIG_ENDIAN and is used for non-negative
|
||||
# conditional compilation
|
||||
bool
|
||||
depends on !BIG_ENDIAN
|
||||
default y
|
||||
|
||||
config 64BIT
|
||||
bool
|
||||
help
|
||||
@@ -209,7 +194,7 @@ config SRAM_BASE_ADDRESS
|
||||
/chosen/zephyr,sram in devicetree. The user should generally avoid
|
||||
changing it via menuconfig or in configuration files.
|
||||
|
||||
if ARC || ARM || ARM64 || NIOS2 || X86 || RISCV
|
||||
if ARC || ARM || ARM64 || NIOS2 || X86
|
||||
|
||||
# Workaround for not being able to have commas in macro arguments
|
||||
DT_CHOSEN_Z_FLASH := zephyr,flash
|
||||
@@ -230,7 +215,7 @@ config FLASH_BASE_ADDRESS
|
||||
normally set by the board's defconfig file and the user should generally
|
||||
avoid modifying it via the menu configuration.
|
||||
|
||||
endif # ARM || ARM64 || ARC || NIOS2 || X86 || RISCV
|
||||
endif # ARM || ARM64 || ARC || NIOS2 || X86
|
||||
|
||||
if ARCH_HAS_TRUSTED_EXECUTION
|
||||
|
||||
@@ -280,7 +265,6 @@ config USERSPACE
|
||||
depends on RUNTIME_ERROR_CHECKS
|
||||
depends on SRAM_REGION_PERMISSIONS
|
||||
select THREAD_STACK_INFO
|
||||
select LINKER_USE_NO_RELAX
|
||||
help
|
||||
When enabled, threads may be created or dropped down to user mode,
|
||||
which has significantly restricted permissions and must interact
|
||||
@@ -295,7 +279,6 @@ config USERSPACE
|
||||
|
||||
config PRIVILEGED_STACK_SIZE
|
||||
int "Size of privileged stack"
|
||||
default 2048 if EMUL
|
||||
default 1024
|
||||
depends on ARCH_HAS_USERSPACE
|
||||
help
|
||||
@@ -403,23 +386,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 +446,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
|
||||
@@ -526,18 +491,6 @@ config EXTRA_EXCEPTION_INFO
|
||||
register state, when a fault occurs. This information can be useful
|
||||
to collect for post-mortem analysis and debug of issues.
|
||||
|
||||
config SIMPLIFIED_EXCEPTION_CODES
|
||||
bool "Convert arch specific exception codes to K_ERR_CPU_EXCEPTION"
|
||||
default y if ZTEST
|
||||
help
|
||||
The same piece of faulty code (NULL dereference, etc) can result in
|
||||
a multitude of potential exception codes at the CPU level, depending
|
||||
upon whether addresses exist, an MPU is configured, the particular
|
||||
implementation of the CPU or any number of other reasons. Enabling
|
||||
this option collapses all the architecture specific exception codes
|
||||
down to the generic K_ERR_CPU_EXCEPTION, which makes testing code
|
||||
much more portable.
|
||||
|
||||
endmenu # Interrupt configuration
|
||||
|
||||
config INIT_ARCH_HW_AT_BOOT
|
||||
@@ -618,9 +571,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
|
||||
#
|
||||
@@ -882,8 +832,8 @@ config CACHE_MANAGEMENT
|
||||
bool "Cache management features"
|
||||
depends on DCACHE || ICACHE
|
||||
help
|
||||
This option enables the cache management functions backed by arch or
|
||||
driver code.
|
||||
This links in the cache management functions (for d-cache and i-cache
|
||||
where possible).
|
||||
|
||||
config DCACHE_LINE_SIZE_DETECT
|
||||
bool "Detect d-cache line size at runtime"
|
||||
@@ -933,17 +883,17 @@ config ICACHE_LINE_SIZE
|
||||
choice CACHE_TYPE
|
||||
prompt "Cache type"
|
||||
depends on CACHE_MANAGEMENT
|
||||
default ARCH_CACHE
|
||||
default HAS_ARCH_CACHE
|
||||
|
||||
config ARCH_CACHE
|
||||
config HAS_ARCH_CACHE
|
||||
bool "Integrated cache controller"
|
||||
help
|
||||
Integrated on-core cache controller
|
||||
"Integrated on-core cache controller"
|
||||
|
||||
config EXTERNAL_CACHE
|
||||
config HAS_EXTERNAL_CACHE
|
||||
bool "External cache controller"
|
||||
help
|
||||
External cache controller
|
||||
"External cache controller or cache management system"
|
||||
|
||||
endchoice
|
||||
|
||||
|
||||
@@ -12,16 +12,11 @@ zephyr_cc_option(-fno-delete-null-pointer-checks)
|
||||
|
||||
zephyr_cc_option_ifdef(CONFIG_ARC_USE_UNALIGNED_MEM_ACCESS -munaligned-access)
|
||||
|
||||
if(NOT COMPILER STREQUAL arcmwdt)
|
||||
if(CONFIG_THREAD_LOCAL_STORAGE)
|
||||
# Instruct compiler to use proper register as cached thread pointer for thread local storage.
|
||||
# For ARCv2 the default register is usually not specified - so we need to specify it
|
||||
# For ARCv3 the register is fixed to r30, so we don't need to specify it
|
||||
zephyr_compile_options_ifdef(CONFIG_ISA_ARCV2 -mtp-regno=26)
|
||||
else()
|
||||
# If thread local storage isn't used - we can safely schedule thread pointer register
|
||||
zephyr_compile_options_ifdef(CONFIG_ISA_ARCV2 -mtp-regno=none)
|
||||
endif()
|
||||
if(CONFIG_ISA_ARCV2)
|
||||
# Instruct compiler to use register R26 as thread pointer
|
||||
# for thread local storage.
|
||||
# For ARCv3 the register is fixed to r30, so we don't need to specify it
|
||||
zephyr_cc_option_ifdef(CONFIG_THREAD_LOCAL_STORAGE -mtp-regno=26)
|
||||
endif()
|
||||
|
||||
add_subdirectory(core)
|
||||
|
||||
@@ -87,15 +87,7 @@ config CPU_HS3X
|
||||
select CPU_HAS_DCACHE
|
||||
select CPU_HAS_ICACHE
|
||||
help
|
||||
If y, the SoC uses an ARC HS3x CPU
|
||||
|
||||
config CPU_HS4X
|
||||
bool
|
||||
select CPU_ARCHS
|
||||
select CPU_HAS_DCACHE
|
||||
select CPU_HAS_ICACHE
|
||||
help
|
||||
If y, the SoC uses an HS4X CPU
|
||||
If y, the SoC uses an ARC HS3x or HS4x CPU
|
||||
|
||||
endif #ISA_ARCV2
|
||||
|
||||
@@ -179,7 +171,6 @@ config ARC_FIRQ
|
||||
bool "FIRQ enable"
|
||||
depends on ISA_ARCV2
|
||||
depends on NUM_IRQ_PRIO_LEVELS > 1
|
||||
depends on !ARC_HAS_SECURE
|
||||
default y
|
||||
help
|
||||
Fast interrupts are supported (FIRQ). If FIRQ enabled, for interrupts
|
||||
@@ -286,8 +277,8 @@ config CODE_DENSITY
|
||||
Enable code density option to get better code density
|
||||
|
||||
config ARC_HAS_ACCL_REGS
|
||||
bool "Reg Pair ACCL:ACCH (FPU and/or MPY > 6 and/or DSP)"
|
||||
default y if CPU_HS3X || CPU_HS4X || CPU_HS5X || CPU_HS6X
|
||||
bool "Reg Pair ACCL:ACCH (FPU and/or MPY > 6)"
|
||||
default y if CPU_HS3X || CPU_HS5X || CPU_HS6X
|
||||
help
|
||||
Depending on the configuration, CPU can contain accumulator reg-pair
|
||||
(also referred to as r58:r59). These can also be used by gcc as GPR so
|
||||
@@ -346,8 +337,6 @@ config ARC_NORMAL_FIRMWARE
|
||||
resources of the ARC processors, and, therefore, it shall avoid
|
||||
accessing them.
|
||||
|
||||
source "arch/arc/core/dsp/Kconfig"
|
||||
|
||||
menu "ARC MPU Options"
|
||||
depends on CPU_HAS_MPU
|
||||
|
||||
@@ -385,13 +374,6 @@ config ARC_EXCEPTION_DEBUG
|
||||
and parameters, at a cost of code/data size for the human-readable
|
||||
strings.
|
||||
|
||||
config ARC_EARLY_SOC_INIT
|
||||
bool "Make early stage SoC-specific initialization"
|
||||
help
|
||||
Call SoC per-core setup code on early stage initialization
|
||||
(before C runtime initialization). Setup code is called in form of
|
||||
soc_early_asm_init_percpu assembler macro.
|
||||
|
||||
endmenu
|
||||
|
||||
config MAIN_STACK_SIZE
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
if(CONFIG_ARCMWDT_LIBC OR CONFIG_CPP)
|
||||
if(CONFIG_ARCMWDT_LIBC OR CONFIG_CPLUSPLUS)
|
||||
zephyr_sources(arcmwdt-dtr-stubs.c)
|
||||
endif()
|
||||
|
||||
@@ -19,7 +19,7 @@ zephyr_library_sources(
|
||||
vector_table.c
|
||||
)
|
||||
|
||||
zephyr_library_sources_ifdef(CONFIG_ARCH_CACHE cache.c)
|
||||
zephyr_library_sources_ifdef(CONFIG_CACHE_MANAGEMENT cache.c)
|
||||
zephyr_library_sources_ifdef(CONFIG_ARC_FIRQ fast_irq.S)
|
||||
|
||||
zephyr_library_sources_ifdef(CONFIG_IRQ_OFFLOAD irq_offload.c)
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
@@ -14,13 +14,13 @@
|
||||
#include <zephyr/kernel_structs.h>
|
||||
#include <ksched.h>
|
||||
#include <zephyr/init.h>
|
||||
#include <zephyr/irq.h>
|
||||
#include <arc_irq_offload.h>
|
||||
|
||||
#define MP_PRIMARY_CPU_ID 0
|
||||
|
||||
volatile struct {
|
||||
arch_cpustart_t fn;
|
||||
void *arg;
|
||||
} arc_cpu_init[CONFIG_MP_MAX_NUM_CPUS];
|
||||
} arc_cpu_init[CONFIG_MP_NUM_CPUS];
|
||||
|
||||
/*
|
||||
* arc_cpu_wake_flag is used to sync up master core and slave cores
|
||||
@@ -36,7 +36,7 @@ volatile char *arc_cpu_sp;
|
||||
* _curr_cpu is used to record the struct of _cpu_t of each cpu.
|
||||
* for efficient usage in assembly
|
||||
*/
|
||||
volatile _cpu_t *_curr_cpu[CONFIG_MP_MAX_NUM_CPUS];
|
||||
volatile _cpu_t *_curr_cpu[CONFIG_MP_NUM_CPUS];
|
||||
|
||||
/* Called from Zephyr initialization */
|
||||
void arch_start_cpu(int cpu_num, k_thread_stack_t *stack, int sz,
|
||||
@@ -69,7 +69,7 @@ static void arc_connect_debug_mask_update(int cpu_num)
|
||||
* MDB debugger may modify debug_select and debug_mask registers on start, so we can't
|
||||
* rely on debug_select reset value.
|
||||
*/
|
||||
if (cpu_num != ARC_MP_PRIMARY_CPU_ID) {
|
||||
if (cpu_num != MP_PRIMARY_CPU_ID) {
|
||||
core_mask |= z_arc_connect_debug_select_read();
|
||||
}
|
||||
|
||||
@@ -86,8 +86,6 @@ static void arc_connect_debug_mask_update(int cpu_num)
|
||||
}
|
||||
#endif
|
||||
|
||||
void arc_core_private_intc_init(void);
|
||||
|
||||
/* the C entry of slave cores */
|
||||
void z_arc_slave_start(int cpu_num)
|
||||
{
|
||||
@@ -105,10 +103,6 @@ void z_arc_slave_start(int cpu_num)
|
||||
|
||||
z_irq_setup();
|
||||
|
||||
arc_core_private_intc_init();
|
||||
|
||||
arc_irq_offload_init_smp();
|
||||
|
||||
z_arc_connect_ici_clear();
|
||||
z_irq_priority_set(DT_IRQN(DT_NODELABEL(ici)),
|
||||
DT_IRQ(DT_NODELABEL(ici), priority), 0);
|
||||
@@ -138,15 +132,14 @@ void arch_sched_ipi(void)
|
||||
/* broadcast sched_ipi request to other cores
|
||||
* if the target is current core, hardware will ignore it
|
||||
*/
|
||||
unsigned int num_cpus = arch_num_cpus();
|
||||
|
||||
for (i = 0U; i < num_cpus; i++) {
|
||||
for (i = 0U; i < CONFIG_MP_NUM_CPUS; i++) {
|
||||
z_arc_connect_ici_generate(i);
|
||||
}
|
||||
}
|
||||
|
||||
static int arc_smp_init(void)
|
||||
static int arc_smp_init(const struct device *dev)
|
||||
{
|
||||
ARG_UNUSED(dev);
|
||||
struct arc_connect_bcr bcr;
|
||||
|
||||
/* necessary master core init */
|
||||
@@ -156,7 +149,7 @@ static int arc_smp_init(void)
|
||||
|
||||
if (bcr.dbg) {
|
||||
/* configure inter-core debug unit if available */
|
||||
arc_connect_debug_mask_update(ARC_MP_PRIMARY_CPU_ID);
|
||||
arc_connect_debug_mask_update(MP_PRIMARY_CPU_ID);
|
||||
}
|
||||
|
||||
if (bcr.ipi) {
|
||||
@@ -178,7 +171,7 @@ static int arc_smp_init(void)
|
||||
z_arc_connect_gfrc_enable();
|
||||
|
||||
/* when all cores halt, gfrc halt */
|
||||
z_arc_connect_gfrc_core_set((1 << arch_num_cpus()) - 1);
|
||||
z_arc_connect_gfrc_core_set((1 << CONFIG_MP_NUM_CPUS) - 1);
|
||||
z_arc_connect_gfrc_clear();
|
||||
} else {
|
||||
__ASSERT(0,
|
||||
|
||||
@@ -40,6 +40,7 @@ size_t sys_cache_line_size;
|
||||
#define DC_CTRL_INDIRECT_ACCESS 0x20 /* indirect access mode */
|
||||
#define DC_CTRL_OP_SUCCEEDED 0x4 /* d-cache operation succeeded */
|
||||
|
||||
|
||||
static bool dcache_available(void)
|
||||
{
|
||||
unsigned long val = z_arc_v2_aux_reg_read(_ARC_V2_D_CACHE_BUILD);
|
||||
@@ -60,12 +61,7 @@ void arch_dcache_enable(void)
|
||||
dcache_dc_ctrl(DC_CTRL_DC_ENABLE);
|
||||
}
|
||||
|
||||
void arch_dcache_disable(void)
|
||||
{
|
||||
/* nothing */
|
||||
}
|
||||
|
||||
int arch_dcache_flush_range(void *start_addr_ptr, size_t size)
|
||||
static void arch_dcache_flush(void *start_addr_ptr, size_t size)
|
||||
{
|
||||
size_t line_size = sys_cache_data_line_size_get();
|
||||
uintptr_t start_addr = (uintptr_t)start_addr_ptr;
|
||||
@@ -73,7 +69,7 @@ int arch_dcache_flush_range(void *start_addr_ptr, size_t size)
|
||||
unsigned int key;
|
||||
|
||||
if (!dcache_available() || (size == 0U) || line_size == 0U) {
|
||||
return -ENOTSUP;
|
||||
return;
|
||||
}
|
||||
|
||||
end_addr = start_addr + size;
|
||||
@@ -99,10 +95,9 @@ int arch_dcache_flush_range(void *start_addr_ptr, size_t size)
|
||||
|
||||
arch_irq_unlock(key); /* --exit critical section-- */
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int arch_dcache_invd_range(void *start_addr_ptr, size_t size)
|
||||
static void arch_dcache_invd(void *start_addr_ptr, size_t size)
|
||||
{
|
||||
size_t line_size = sys_cache_data_line_size_get();
|
||||
uintptr_t start_addr = (uintptr_t)start_addr_ptr;
|
||||
@@ -110,7 +105,7 @@ int arch_dcache_invd_range(void *start_addr_ptr, size_t size)
|
||||
unsigned int key;
|
||||
|
||||
if (!dcache_available() || (size == 0U) || line_size == 0U) {
|
||||
return -ENOTSUP;
|
||||
return;
|
||||
}
|
||||
end_addr = start_addr + size;
|
||||
start_addr = ROUND_DOWN(start_addr, line_size);
|
||||
@@ -125,26 +120,36 @@ int arch_dcache_invd_range(void *start_addr_ptr, size_t size)
|
||||
start_addr += line_size;
|
||||
} while (start_addr < end_addr);
|
||||
irq_unlock(key); /* -exit critical section- */
|
||||
}
|
||||
|
||||
int arch_dcache_range(void *addr, size_t size, int op)
|
||||
{
|
||||
if (op == K_CACHE_INVD) {
|
||||
/*
|
||||
* TODO: On invalidate we can contextually flush by setting the
|
||||
* DC_CTRL_INVALID_FLUSH bit
|
||||
*/
|
||||
arch_dcache_invd(addr, size);
|
||||
} else if (op == K_CACHE_WB) {
|
||||
arch_dcache_flush(addr, size);
|
||||
} else {
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int arch_dcache_flush_and_invd_range(void *start_addr_ptr, size_t size)
|
||||
int arch_icache_range(void *addr, size_t size, int op)
|
||||
{
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
int arch_dcache_flush_all(void)
|
||||
int arch_dcache_all(int op)
|
||||
{
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
int arch_dcache_invd_all(void)
|
||||
{
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
int arch_dcache_flush_and_invd_all(void)
|
||||
int arch_icache_all(int op)
|
||||
{
|
||||
return -ENOTSUP;
|
||||
}
|
||||
@@ -167,57 +172,9 @@ size_t arch_dcache_line_size_get(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
void arch_icache_enable(void)
|
||||
{
|
||||
/* nothing */
|
||||
}
|
||||
|
||||
void arch_icache_disable(void)
|
||||
{
|
||||
/* nothing */
|
||||
}
|
||||
|
||||
int arch_icache_flush_all(void)
|
||||
{
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
int arch_icache_invd_all(void)
|
||||
{
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
int arch_icache_flush_and_invd_all(void)
|
||||
{
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
int arch_icache_flush_range(void *addr, size_t size)
|
||||
{
|
||||
ARG_UNUSED(addr);
|
||||
ARG_UNUSED(size);
|
||||
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
int arch_icache_invd_range(void *addr, size_t size)
|
||||
{
|
||||
ARG_UNUSED(addr);
|
||||
ARG_UNUSED(size);
|
||||
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
int arch_icache_flush_and_invd_range(void *addr, size_t size)
|
||||
{
|
||||
ARG_UNUSED(addr);
|
||||
ARG_UNUSED(size);
|
||||
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
static int init_dcache(void)
|
||||
static int init_dcache(const struct device *unused)
|
||||
{
|
||||
ARG_UNUSED(unused);
|
||||
|
||||
arch_dcache_enable();
|
||||
|
||||
|
||||
@@ -1,75 +0,0 @@
|
||||
# Digital Signal Processing (DSP) configuration options
|
||||
|
||||
# Copyright (c) 2022 Synopsys
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
config ARC_HAS_DSP
|
||||
bool
|
||||
help
|
||||
This option is enabled when the ARC CPU has hardware DSP unit.
|
||||
|
||||
menu "ARC DSP Options"
|
||||
depends on ARC_HAS_DSP
|
||||
|
||||
config ARC_DSP
|
||||
bool "digital signal processing (DSP)"
|
||||
help
|
||||
This option enables DSP and DSP instructions.
|
||||
|
||||
config ARC_DSP_TURNED_OFF
|
||||
bool "Turn off DSP if it presents"
|
||||
depends on !ARC_DSP
|
||||
help
|
||||
This option disables DSP block via resetting DSP_CRTL register.
|
||||
|
||||
config ARC_DSP_SHARING
|
||||
bool "DSP register sharing"
|
||||
depends on ARC_DSP && MULTITHREADING
|
||||
select ARC_HAS_ACCL_REGS
|
||||
help
|
||||
This option enables preservation of the hardware DSP registers
|
||||
across context switches to allow multiple threads to perform concurrent
|
||||
DSP operations.
|
||||
|
||||
config ARC_DSP_BFLY_SHARING
|
||||
bool "ARC complex DSP operation"
|
||||
depends on ARC_DSP && CPU_ARCEM
|
||||
help
|
||||
This option is to enable Zephyr to store and restore DSP_BFLY0
|
||||
and FFT_CTRL registers during context switch. This option is
|
||||
only required when butterfly instructions are used in
|
||||
multi-thread.
|
||||
|
||||
config ARC_XY_ENABLE
|
||||
bool "ARC address generation unit registers"
|
||||
help
|
||||
Processors with XY memory and AGU registers can configure this
|
||||
option to accelerate DSP instrctions.
|
||||
|
||||
config ARC_AGU_SHARING
|
||||
bool "ARC address generation unit register sharing"
|
||||
depends on ARC_XY_ENABLE && MULTITHREADING
|
||||
default y if ARC_DSP_SHARING
|
||||
help
|
||||
This option enables preservation of the hardware AGU registers
|
||||
across context switches to allow multiple threads to perform concurrent
|
||||
operations on XY memory. Save and restore small size AGU registers is
|
||||
set as default, including 4 address pointers regs, 2 address offset regs
|
||||
and 4 modifiers regs.
|
||||
|
||||
config ARC_AGU_MEDIUM
|
||||
bool "ARC AGU medium size register"
|
||||
depends on ARC_AGU_SHARING
|
||||
help
|
||||
Save and restore medium AGU registers, including 8 address pointers regs,
|
||||
4 address offset regs and 12 modifiers regs.
|
||||
|
||||
config ARC_AGU_LARGE
|
||||
bool "ARC AGU large size register"
|
||||
depends on ARC_AGU_SHARING
|
||||
select ARC_AGU_MEDIUM
|
||||
help
|
||||
Save and restore large AGU registers, including 12 address pointers regs,
|
||||
8 address offset regs and 24 modifiers regs.
|
||||
|
||||
endmenu
|
||||
@@ -1,70 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2022 Synopsys.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @brief ARCv2 DSP and AGU structure member offset definition file
|
||||
*
|
||||
*/
|
||||
#ifdef CONFIG_ARC_DSP_SHARING
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, dsp_ctrl);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, acc0_glo);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, acc0_ghi);
|
||||
#ifdef CONFIG_ARC_DSP_BFLY_SHARING
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, dsp_bfly0);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, dsp_fft_ctrl);
|
||||
#endif
|
||||
#endif
|
||||
#ifdef CONFIG_ARC_AGU_SHARING
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_ap0);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_ap1);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_ap2);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_ap3);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_os0);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_os1);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_mod0);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_mod1);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_mod2);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_mod3);
|
||||
#ifdef CONFIG_ARC_AGU_MEDIUM
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_ap4);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_ap5);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_ap6);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_ap7);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_os2);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_os3);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_mod4);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_mod5);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_mod6);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_mod7);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_mod8);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_mod9);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_mod10);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_mod11);
|
||||
#endif
|
||||
#ifdef CONFIG_ARC_AGU_LARGE
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_ap8);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_ap9);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_ap10);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_ap11);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_os4);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_os5);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_os6);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_os7);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_mod12);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_mod13);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_mod14);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_mod15);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_mod16);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_mod17);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_mod18);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_mod19);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_mod20);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_mod21);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_mod22);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, agu_mod23);
|
||||
#endif
|
||||
#endif
|
||||
@@ -1,269 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2022 Synopsys.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
/**
|
||||
* @file
|
||||
* @brief save and load macro for ARCv2 DSP and AGU regs
|
||||
*
|
||||
*/
|
||||
.macro _save_dsp_regs
|
||||
#ifdef CONFIG_ARC_DSP_SHARING
|
||||
ld_s r13, [r2, ___thread_base_t_user_options_OFFSET]
|
||||
bbit0 r13, K_DSP_IDX, dsp_skip_save
|
||||
lr r13, [_ARC_V2_DSP_CTRL]
|
||||
st_s r13, [sp, ___callee_saved_stack_t_dsp_ctrl_OFFSET]
|
||||
lr r13, [_ARC_V2_ACC0_GLO]
|
||||
st_s r13, [sp, ___callee_saved_stack_t_acc0_glo_OFFSET]
|
||||
lr r13, [_ARC_V2_ACC0_GHI]
|
||||
st_s r13, [sp, ___callee_saved_stack_t_acc0_ghi_OFFSET]
|
||||
#ifdef CONFIG_ARC_DSP_BFLY_SHARING
|
||||
lr r13, [_ARC_V2_DSP_BFLY0]
|
||||
st_s r13, [sp, ___callee_saved_stack_t_dsp_bfly0_OFFSET]
|
||||
lr r13, [_ARC_V2_DSP_FFT_CTRL]
|
||||
st_s r13, [sp, ___callee_saved_stack_t_dsp_fft_ctrl_OFFSET]
|
||||
#endif
|
||||
#endif
|
||||
dsp_skip_save :
|
||||
#ifdef CONFIG_ARC_AGU_SHARING
|
||||
_save_agu_regs
|
||||
#endif
|
||||
.endm
|
||||
|
||||
.macro _save_agu_regs
|
||||
#ifdef CONFIG_ARC_AGU_SHARING
|
||||
ld_s r13, [r2, ___thread_base_t_user_options_OFFSET]
|
||||
btst r13, K_AGU_IDX
|
||||
|
||||
jeq agu_skip_save
|
||||
|
||||
lr r13, [_ARC_V2_AGU_AP0]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_ap0_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_AP1]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_ap1_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_AP2]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_ap2_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_AP3]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_ap3_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_OS0]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_os0_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_OS1]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_os1_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_MOD0]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_mod0_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_MOD1]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_mod1_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_MOD2]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_mod2_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_MOD3]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_mod3_OFFSET]
|
||||
#ifdef CONFIG_ARC_AGU_MEDIUM
|
||||
lr r13, [_ARC_V2_AGU_AP4]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_ap4_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_AP5]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_ap5_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_AP6]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_ap6_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_AP7]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_ap7_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_OS2]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_os2_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_OS3]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_os3_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_MOD4]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_mod4_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_MOD5]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_mod5_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_MOD6]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_mod6_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_MOD7]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_mod7_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_MOD8]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_mod8_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_MOD9]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_mod9_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_MOD10]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_mod10_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_MOD11]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_mod11_OFFSET]
|
||||
#endif
|
||||
#ifdef CONFIG_ARC_AGU_LARGE
|
||||
lr r13, [_ARC_V2_AGU_AP8]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_ap8_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_AP9]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_ap9_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_AP10]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_ap10_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_AP11]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_ap11_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_OS4]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_os4_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_OS5]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_os5_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_OS6]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_os6_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_OS7]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_os7_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_MOD12]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_mod12_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_MOD13]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_mod13_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_MOD14]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_mod14_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_MOD15]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_mod15_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_MOD16]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_mod16_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_MOD17]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_mod17_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_MOD18]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_mod18_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_MOD19]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_mod19_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_MOD20]
|
||||
st r13, [sp, ___callee_saved_stack_t_agu_mod20_OFFSET]
|
||||
lr r13, [_ARC_V2_AGU_MOD21]
|
||||
_st32_huge_offset r13, sp, ___callee_saved_stack_t_agu_mod21_OFFSET, r1
|
||||
lr r13, [_ARC_V2_AGU_MOD22]
|
||||
_st32_huge_offset r13, sp, ___callee_saved_stack_t_agu_mod22_OFFSET, r1
|
||||
lr r13, [_ARC_V2_AGU_MOD23]
|
||||
_st32_huge_offset r13, sp, ___callee_saved_stack_t_agu_mod23_OFFSET, r1
|
||||
#endif
|
||||
#endif
|
||||
agu_skip_save :
|
||||
.endm
|
||||
|
||||
.macro _load_dsp_regs
|
||||
#ifdef CONFIG_ARC_DSP_SHARING
|
||||
ld_s r13, [r2, ___thread_base_t_user_options_OFFSET]
|
||||
bbit0 r13, K_DSP_IDX, dsp_skip_load
|
||||
ld_s r13, [sp, ___callee_saved_stack_t_dsp_ctrl_OFFSET]
|
||||
sr r13, [_ARC_V2_DSP_CTRL]
|
||||
ld_s r13, [sp, ___callee_saved_stack_t_acc0_glo_OFFSET]
|
||||
sr r13, [_ARC_V2_ACC0_GLO]
|
||||
ld_s r13, [sp, ___callee_saved_stack_t_acc0_ghi_OFFSET]
|
||||
sr r13, [_ARC_V2_ACC0_GHI]
|
||||
#ifdef CONFIG_ARC_DSP_BFLY_SHARING
|
||||
ld_s r13, [sp, ___callee_saved_stack_t_dsp_bfly0_OFFSET]
|
||||
sr r13, [_ARC_V2_DSP_BFLY0]
|
||||
ld_s r13, [sp, ___callee_saved_stack_t_dsp_fft_ctrl_OFFSET]
|
||||
sr r13, [_ARC_V2_DSP_FFT_CTRL]
|
||||
#endif
|
||||
#endif
|
||||
dsp_skip_load :
|
||||
#ifdef CONFIG_ARC_AGU_SHARING
|
||||
_load_agu_regs
|
||||
#endif
|
||||
.endm
|
||||
|
||||
.macro _load_agu_regs
|
||||
#ifdef CONFIG_ARC_AGU_SHARING
|
||||
ld_s r13, [r2, ___thread_base_t_user_options_OFFSET]
|
||||
btst r13, K_AGU_IDX
|
||||
|
||||
jeq agu_skip_load
|
||||
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_ap0_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_AP0]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_ap1_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_AP1]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_ap2_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_AP2]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_ap3_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_AP3]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_os0_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_OS0]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_os1_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_OS1]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_mod0_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_MOD0]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_mod1_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_MOD1]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_mod2_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_MOD2]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_mod3_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_MOD3]
|
||||
#ifdef CONFIG_ARC_AGU_MEDIUM
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_ap4_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_AP4]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_ap5_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_AP5]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_ap6_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_AP6]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_ap7_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_AP7]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_os2_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_OS2]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_os3_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_OS3]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_mod4_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_MOD4]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_mod5_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_MOD5]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_mod6_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_MOD6]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_mod7_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_MOD7]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_mod8_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_MOD8]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_mod9_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_MOD9]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_mod10_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_MOD10]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_mod11_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_MOD11]
|
||||
#endif
|
||||
#ifdef CONFIG_ARC_AGU_LARGE
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_ap8_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_AP8]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_ap9_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_AP9]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_ap10_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_AP10]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_ap11_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_AP11]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_os4_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_OS4]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_os5_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_OS5]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_os6_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_OS6]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_os7_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_OS7]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_mod12_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_MOD12]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_mod13_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_MOD13]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_mod14_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_MOD14]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_mod15_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_MOD15]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_mod16_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_MOD16]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_mod17_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_MOD17]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_mod18_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_MOD18]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_mod19_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_MOD19]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_mod20_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_MOD20]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_mod21_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_MOD21]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_mod22_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_MOD22]
|
||||
ld r13, [sp, ___callee_saved_stack_t_agu_mod23_OFFSET]
|
||||
sr r13, [_ARC_V2_AGU_MOD23]
|
||||
#endif
|
||||
#endif
|
||||
agu_skip_load :
|
||||
.endm
|
||||
|
||||
.macro _dsp_extension_probe
|
||||
#ifdef CONFIG_ARC_DSP_TURNED_OFF
|
||||
mov r0, 0 /* DSP_CTRL_DISABLED_ALL */
|
||||
sr r0, [_ARC_V2_DSP_CTRL]
|
||||
#endif
|
||||
.endm
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -34,6 +34,9 @@ GTEXT(__ev_extension)
|
||||
GTEXT(__ev_div_zero)
|
||||
GTEXT(__ev_dc_error)
|
||||
GTEXT(__ev_maligned)
|
||||
#ifdef CONFIG_IRQ_OFFLOAD
|
||||
GTEXT(z_irq_do_offload);
|
||||
#endif
|
||||
|
||||
.macro _save_exc_regs_into_stack
|
||||
#ifdef CONFIG_ARC_HAS_SECURE
|
||||
@@ -118,11 +121,6 @@ _exc_return:
|
||||
|
||||
BREQR r0, 0, _exc_return_from_exc
|
||||
|
||||
/* Save old thread into switch handle which is required by z_sched_switch_spin which
|
||||
* will be called during old thread abort.
|
||||
*/
|
||||
STR r2, r2, ___thread_t_switch_handle_OFFSET
|
||||
|
||||
MOVR r2, r0
|
||||
|
||||
#ifdef CONFIG_ARC_SECURE_FIRMWARE
|
||||
@@ -233,4 +231,38 @@ valid_syscall_id:
|
||||
|
||||
_do_non_syscall_trap:
|
||||
#endif /* CONFIG_USERSPACE */
|
||||
#ifdef CONFIG_IRQ_OFFLOAD
|
||||
/*
|
||||
* IRQ_OFFLOAD is to simulate interrupt handling through exception,
|
||||
* so its entry is different with normal exception handling, it is
|
||||
* handled in isr stack
|
||||
*/
|
||||
CMPR ilink, _TRAP_S_SCALL_IRQ_OFFLOAD
|
||||
bne _exc_entry
|
||||
/* save caller saved registers */
|
||||
_create_irq_stack_frame
|
||||
|
||||
_save_exc_regs_into_stack
|
||||
|
||||
/* check whether irq stack is used */
|
||||
_check_and_inc_int_nest_counter r0, r1
|
||||
|
||||
bne.d exc_nest_handle
|
||||
MOVR r0, sp
|
||||
|
||||
_get_curr_cpu_irq_stack sp
|
||||
exc_nest_handle:
|
||||
PUSHR r0
|
||||
|
||||
jl z_irq_do_offload
|
||||
|
||||
POPR sp
|
||||
|
||||
_dec_int_nest_counter r0, r1
|
||||
|
||||
_pop_irq_stack_frame
|
||||
|
||||
/* ERSTATUS, ERET are not changed, so ok to rtie */
|
||||
rtie
|
||||
#endif /* CONFIG_IRQ_OFFLOAD */
|
||||
b _exc_entry
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
*/
|
||||
#if defined(CONFIG_ARC_FIRQ_STACK)
|
||||
#if defined(CONFIG_SMP)
|
||||
K_KERNEL_STACK_ARRAY_DEFINE(_firq_interrupt_stack, CONFIG_MP_MAX_NUM_CPUS,
|
||||
K_KERNEL_STACK_ARRAY_DEFINE(_firq_interrupt_stack, CONFIG_MP_NUM_CPUS,
|
||||
CONFIG_ARC_FIRQ_STACK_SIZE);
|
||||
#else
|
||||
K_KERNEL_STACK_DEFINE(_firq_interrupt_stack, CONFIG_ARC_FIRQ_STACK_SIZE);
|
||||
@@ -81,53 +81,6 @@ void z_arc_firq_stack_set(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* ARC CPU interrupt controllers hierarchy.
|
||||
*
|
||||
* Single-core (UP) case:
|
||||
*
|
||||
* --------------------------
|
||||
* | CPU core 0 |
|
||||
* --------------------------
|
||||
* | core 0 (private) |
|
||||
* | interrupt controller |
|
||||
* --------------------------
|
||||
* |
|
||||
* [internal interrupts]
|
||||
* [external interrupts]
|
||||
*
|
||||
*
|
||||
* Multi-core (SMP) case:
|
||||
*
|
||||
* -------------------------- --------------------------
|
||||
* | CPU core 0 | | CPU core 1 |
|
||||
* -------------------------- --------------------------
|
||||
* | core 0 (private) | | core 1 (private) |
|
||||
* | interrupt controller | | interrupt controller |
|
||||
* -------------------------- --------------------------
|
||||
* | | | | | |
|
||||
* | | [core 0 private internal interrupts] | | [core 1 private internal interrupts]
|
||||
* | | | |
|
||||
* | | | |
|
||||
* | ------------------------------------------- |
|
||||
* | | IDU (Interrupt Distribution Unit) | |
|
||||
* | ------------------------------------------- |
|
||||
* | | |
|
||||
* | [common (shared) interrupts] |
|
||||
* | |
|
||||
* | |
|
||||
* [core 0 private external interrupts] [core 1 private external interrupts]
|
||||
*
|
||||
*
|
||||
*
|
||||
* The interrupts are grouped in HW in the same order - firstly internal interrupts
|
||||
* (with lowest line numbers in IVT), than common interrupts (if present), than external
|
||||
* interrupts (with highest line numbers in IVT).
|
||||
*
|
||||
* NOTE: in case of SMP system we currently support in Zephyr only private internal and common
|
||||
* interrupts, so the core-private external interrupts are currently not supported for SMP.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @brief Enable an interrupt line
|
||||
*
|
||||
@@ -135,7 +88,11 @@ void z_arc_firq_stack_set(void)
|
||||
* line. After this call, the CPU will receive interrupts for the specified
|
||||
* @a irq.
|
||||
*/
|
||||
void arch_irq_enable(unsigned int irq);
|
||||
|
||||
void arch_irq_enable(unsigned int irq)
|
||||
{
|
||||
z_arc_v2_irq_unit_int_enable(irq);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Disable an interrupt line
|
||||
@@ -143,7 +100,11 @@ void arch_irq_enable(unsigned int irq);
|
||||
* Disable an interrupt line. After this call, the CPU will stop receiving
|
||||
* interrupts for the specified @a irq.
|
||||
*/
|
||||
void arch_irq_disable(unsigned int irq);
|
||||
|
||||
void arch_irq_disable(unsigned int irq)
|
||||
{
|
||||
z_arc_v2_irq_unit_int_disable(irq);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return IRQ enable state
|
||||
@@ -151,55 +112,10 @@ void arch_irq_disable(unsigned int irq);
|
||||
* @param irq IRQ line
|
||||
* @return interrupt enable state, true or false
|
||||
*/
|
||||
int arch_irq_is_enabled(unsigned int irq);
|
||||
|
||||
#ifdef CONFIG_ARC_CONNECT
|
||||
|
||||
#define IRQ_NUM_TO_IDU_NUM(id) ((id) - ARC_CONNECT_IDU_IRQ_START)
|
||||
#define IRQ_IS_COMMON(id) ((id) >= ARC_CONNECT_IDU_IRQ_START)
|
||||
|
||||
void arch_irq_enable(unsigned int irq)
|
||||
{
|
||||
if (IRQ_IS_COMMON(irq)) {
|
||||
z_arc_connect_idu_set_mask(IRQ_NUM_TO_IDU_NUM(irq), 0x0);
|
||||
} else {
|
||||
z_arc_v2_irq_unit_int_enable(irq);
|
||||
}
|
||||
}
|
||||
|
||||
void arch_irq_disable(unsigned int irq)
|
||||
{
|
||||
if (IRQ_IS_COMMON(irq)) {
|
||||
z_arc_connect_idu_set_mask(IRQ_NUM_TO_IDU_NUM(irq), 0x1);
|
||||
} else {
|
||||
z_arc_v2_irq_unit_int_disable(irq);
|
||||
}
|
||||
}
|
||||
|
||||
int arch_irq_is_enabled(unsigned int irq)
|
||||
{
|
||||
if (IRQ_IS_COMMON(irq)) {
|
||||
return !z_arc_connect_idu_read_mask(IRQ_NUM_TO_IDU_NUM(irq));
|
||||
} else {
|
||||
return z_arc_v2_irq_unit_int_enabled(irq);
|
||||
}
|
||||
}
|
||||
#else
|
||||
void arch_irq_enable(unsigned int irq)
|
||||
{
|
||||
z_arc_v2_irq_unit_int_enable(irq);
|
||||
}
|
||||
|
||||
void arch_irq_disable(unsigned int irq)
|
||||
{
|
||||
z_arc_v2_irq_unit_int_disable(irq);
|
||||
}
|
||||
|
||||
int arch_irq_is_enabled(unsigned int irq)
|
||||
{
|
||||
return z_arc_v2_irq_unit_int_enabled(irq);
|
||||
}
|
||||
#endif /* CONFIG_ARC_CONNECT */
|
||||
|
||||
/**
|
||||
* @internal
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2015 Intel corporation
|
||||
* Copyright (c) 2022 Synopsys
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
@@ -11,61 +10,24 @@
|
||||
|
||||
#include <zephyr/kernel.h>
|
||||
#include <zephyr/irq_offload.h>
|
||||
#include <zephyr/init.h>
|
||||
|
||||
/* Choose a reasonable default for interrupt line which is used for irq_offload with the option
|
||||
* to override it by setting interrupt line via device tree.
|
||||
*/
|
||||
#if DT_NODE_EXISTS(DT_NODELABEL(test_irq_offload_line_0))
|
||||
#define IRQ_OFFLOAD_LINE DT_IRQN(DT_NODELABEL(test_irq_offload_line_0))
|
||||
#else
|
||||
/* Last two lined are already used in the IRQ tests, so we choose 3rd from the end line */
|
||||
#define IRQ_OFFLOAD_LINE (CONFIG_NUM_IRQS - 3)
|
||||
#endif
|
||||
static irq_offload_routine_t offload_routine;
|
||||
static const void *offload_param;
|
||||
|
||||
#define IRQ_OFFLOAD_PRIO 0
|
||||
|
||||
#define CURR_CPU (IS_ENABLED(CONFIG_SMP) ? arch_curr_cpu()->id : 0)
|
||||
|
||||
static struct {
|
||||
volatile irq_offload_routine_t fn;
|
||||
const void *volatile arg;
|
||||
} offload_params[CONFIG_MP_MAX_NUM_CPUS];
|
||||
|
||||
static void arc_irq_offload_handler(const void *unused)
|
||||
/* Called by trap_s exception handler */
|
||||
void z_irq_do_offload(void)
|
||||
{
|
||||
ARG_UNUSED(unused);
|
||||
|
||||
offload_params[CURR_CPU].fn(offload_params[CURR_CPU].arg);
|
||||
offload_routine(offload_param);
|
||||
}
|
||||
|
||||
void arch_irq_offload(irq_offload_routine_t routine, const void *parameter)
|
||||
{
|
||||
offload_params[CURR_CPU].fn = routine;
|
||||
offload_params[CURR_CPU].arg = parameter;
|
||||
compiler_barrier();
|
||||
|
||||
z_arc_v2_aux_reg_write(_ARC_V2_AUX_IRQ_HINT, IRQ_OFFLOAD_LINE);
|
||||
offload_routine = routine;
|
||||
offload_param = parameter;
|
||||
|
||||
__asm__ volatile("sync");
|
||||
__asm__ volatile ("trap_s %[id]"
|
||||
:
|
||||
: [id] "i"(_TRAP_S_SCALL_IRQ_OFFLOAD) : );
|
||||
|
||||
/* If _current was aborted in the offload routine, we shouldn't be here */
|
||||
__ASSERT_NO_MSG((_current->base.thread_state & _THREAD_DEAD) == 0);
|
||||
}
|
||||
|
||||
/* need to be executed on every core in the system */
|
||||
int arc_irq_offload_init(void)
|
||||
{
|
||||
|
||||
IRQ_CONNECT(IRQ_OFFLOAD_LINE, IRQ_OFFLOAD_PRIO, arc_irq_offload_handler, NULL, 0);
|
||||
|
||||
/* The line is triggered and controlled with core private interrupt controller,
|
||||
* so even in case common (IDU) interrupt line usage on SMP we need to enable it not
|
||||
* with generic irq_enable() but via z_arc_v2_irq_unit_int_enable().
|
||||
*/
|
||||
z_arc_v2_irq_unit_int_enable(IRQ_OFFLOAD_LINE);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
SYS_INIT(arc_irq_offload_init, POST_KERNEL, 0);
|
||||
|
||||
@@ -5,12 +5,12 @@
|
||||
|
||||
config ARC_MPU_VER
|
||||
int "ARC MPU version"
|
||||
range 2 8
|
||||
range 2 6
|
||||
default 2
|
||||
help
|
||||
ARC MPU has several versions. For MPU v2, the minimum region is 2048 bytes;
|
||||
For other versions, the minimum region is 32 bytes; v4 has secure features,
|
||||
v6 supports up to 32 regions. Note: MPU v5 & v7 are not supported.
|
||||
v6 supports up to 32 regions.
|
||||
|
||||
config ARC_CORE_MPU
|
||||
bool "ARC Core MPU functionalities"
|
||||
@@ -32,8 +32,8 @@ config ARC_MPU
|
||||
select SRAM_REGION_PERMISSIONS
|
||||
select ARC_CORE_MPU
|
||||
select THREAD_STACK_INFO
|
||||
select GEN_PRIV_STACKS if !(ARC_MPU_VER = 4 || ARC_MPU_VER = 8)
|
||||
select MPU_REQUIRES_POWER_OF_TWO_ALIGNMENT if !(ARC_MPU_VER = 4 || ARC_MPU_VER = 8)
|
||||
select MPU_REQUIRES_NON_OVERLAPPING_REGIONS if (ARC_MPU_VER = 4 || ARC_MPU_VER = 8)
|
||||
select GEN_PRIV_STACKS if ARC_MPU_VER != 4
|
||||
select MPU_REQUIRES_POWER_OF_TWO_ALIGNMENT if ARC_MPU_VER !=4
|
||||
select MPU_REQUIRES_NON_OVERLAPPING_REGIONS if ARC_MPU_VER = 4
|
||||
help
|
||||
Target has ARC MPU
|
||||
Target has ARC MPU (currently only works for EMSK 2.2/2.3 ARCEM7D)
|
||||
|
||||
@@ -51,7 +51,7 @@ static inline uint32_t get_region_attr_by_type(uint32_t type)
|
||||
}
|
||||
}
|
||||
|
||||
#if (CONFIG_ARC_MPU_VER == 4) || (CONFIG_ARC_MPU_VER == 8)
|
||||
#if CONFIG_ARC_MPU_VER == 4
|
||||
#include "arc_mpu_v4_internal.h"
|
||||
#else
|
||||
#include "arc_mpu_common_internal.h"
|
||||
|
||||
@@ -238,8 +238,9 @@ int arc_core_mpu_buffer_validate(void *addr, size_t size, int write)
|
||||
* This function provides the default configuration mechanism for the Memory
|
||||
* Protection Unit (MPU).
|
||||
*/
|
||||
static int arc_mpu_init(void)
|
||||
static int arc_mpu_init(const struct device *arg)
|
||||
{
|
||||
ARG_UNUSED(arg);
|
||||
|
||||
uint32_t num_regions = get_num_regions();
|
||||
|
||||
|
||||
@@ -814,8 +814,9 @@ int arc_core_mpu_buffer_validate(void *addr, size_t size, int write)
|
||||
* This function provides the default configuration mechanism for the Memory
|
||||
* Protection Unit (MPU).
|
||||
*/
|
||||
static int arc_mpu_init(void)
|
||||
static int arc_mpu_init(const struct device *arg)
|
||||
{
|
||||
ARG_UNUSED(arg);
|
||||
uint32_t num_regions;
|
||||
uint32_t i;
|
||||
|
||||
|
||||
@@ -26,9 +26,6 @@
|
||||
#include <kernel_arch_data.h>
|
||||
#include <gen_offset.h>
|
||||
#include <kernel_offsets.h>
|
||||
#ifdef CONFIG_ARC_DSP_SHARING
|
||||
#include "../dsp/dsp_offsets.c"
|
||||
#endif
|
||||
|
||||
GEN_OFFSET_SYM(_thread_arch_t, relinquish_cause);
|
||||
#ifdef CONFIG_ARC_STACK_CHECKING
|
||||
@@ -79,6 +76,7 @@ GEN_OFFSET_SYM(_isf_t, status32);
|
||||
GEN_ABSOLUTE_SYM(___isf_t_SIZEOF, sizeof(_isf_t));
|
||||
|
||||
GEN_OFFSET_SYM(_callee_saved_t, sp);
|
||||
GEN_ABSOLUTE_SYM(___callee_saved_t_SIZEOF, sizeof(_callee_saved_t));
|
||||
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, r13);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, r14);
|
||||
@@ -119,8 +117,10 @@ GEN_OFFSET_SYM(_callee_saved_stack_t, dpfp2l);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, dpfp1h);
|
||||
GEN_OFFSET_SYM(_callee_saved_stack_t, dpfp1l);
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#endif
|
||||
GEN_ABSOLUTE_SYM(___callee_saved_stack_t_SIZEOF, sizeof(_callee_saved_stack_t));
|
||||
|
||||
GEN_ABSOLUTE_SYM(_K_THREAD_NO_FLOAT_SIZEOF, sizeof(struct k_thread));
|
||||
|
||||
GEN_ABS_SYM_END
|
||||
|
||||
@@ -16,9 +16,6 @@
|
||||
#include <zephyr/arch/cpu.h>
|
||||
#include <swap_macros.h>
|
||||
#include <zephyr/arch/arc/asm-compat/assembler.h>
|
||||
#ifdef CONFIG_ARC_EARLY_SOC_INIT
|
||||
#include <soc_ctrl.h>
|
||||
#endif
|
||||
|
||||
GDATA(z_interrupt_stacks)
|
||||
GDATA(z_main_stack)
|
||||
@@ -112,12 +109,6 @@ done_icache_invalidate:
|
||||
|
||||
done_dcache_invalidate:
|
||||
|
||||
#ifdef CONFIG_ARC_EARLY_SOC_INIT
|
||||
soc_early_asm_init_percpu
|
||||
#endif
|
||||
|
||||
_dsp_extension_probe
|
||||
|
||||
/*
|
||||
* Init ARC internal architecture state
|
||||
* Force to initialize internal architecture state to reset values
|
||||
@@ -126,8 +117,8 @@ done_dcache_invalidate:
|
||||
* substitution of normal hardware reset sequence.
|
||||
*/
|
||||
#ifdef CONFIG_INIT_ARCH_HW_AT_BOOT
|
||||
/* Set MPU (v4 or v8) registers to default */
|
||||
#if CONFIG_ARC_MPU_VER == 4 || CONFIG_ARC_MPU_VER == 8
|
||||
/* Set MPU (v4) registers to default */
|
||||
#if CONFIG_ARC_MPU_VER == 4
|
||||
/* Set default reset value to _ARC_V2_MPU_EN register */
|
||||
#define ARC_MPU_EN_RESET_VALUE 0x400181C0
|
||||
mov_s r1, ARC_MPU_EN_RESET_VALUE
|
||||
@@ -151,7 +142,7 @@ done_mpu_regions_reset:
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_SMP) || CONFIG_MP_MAX_NUM_CPUS > 1
|
||||
#if defined(CONFIG_SMP) || CONFIG_MP_NUM_CPUS > 1
|
||||
_get_cpu_id r0
|
||||
breq r0, 0, _master_core_startup
|
||||
|
||||
@@ -159,7 +150,7 @@ done_mpu_regions_reset:
|
||||
* Non-masters wait for master core (core 0) to boot enough
|
||||
*/
|
||||
_slave_core_wait:
|
||||
#if CONFIG_MP_MAX_NUM_CPUS == 1
|
||||
#if CONFIG_MP_NUM_CPUS == 1
|
||||
kflag 1
|
||||
#endif
|
||||
ld r1, [arc_cpu_wake_flag]
|
||||
|
||||
@@ -48,7 +48,7 @@ static void sjli_table_init(void)
|
||||
/*
|
||||
* @brief initialization of secureshield related functions.
|
||||
*/
|
||||
static int arc_secureshield_init(void)
|
||||
static int arc_secureshield_init(const struct device *arg)
|
||||
{
|
||||
sjli_table_init();
|
||||
|
||||
|
||||
@@ -14,15 +14,12 @@
|
||||
#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>
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_ARC_DSP) && defined(CONFIG_ARC_DSP_SHARING)
|
||||
#include <zephyr/arch/arc/v2/dsp/arc_dsp.h>
|
||||
static struct k_spinlock lock;
|
||||
#endif
|
||||
/* initial stack frame */
|
||||
struct init_stack_frame {
|
||||
uintptr_t pc;
|
||||
@@ -124,15 +121,10 @@ static inline void arch_setup_callee_saved_regs(struct k_thread *thread,
|
||||
|
||||
ARG_UNUSED(regs);
|
||||
|
||||
/* GCC uses tls pointer cached in register, MWDT just call for _mwget_tls */
|
||||
#if defined(CONFIG_THREAD_LOCAL_STORAGE) && !defined(__CCAC__)
|
||||
#ifdef CONFIG_THREAD_LOCAL_STORAGE
|
||||
#ifdef CONFIG_ISA_ARCV2
|
||||
#if __ARC_TLS_REGNO__ <= 0
|
||||
#error Compiler not configured for thread local storage
|
||||
#endif
|
||||
#define TLSREG _CONCAT(r, __ARC_TLS_REGNO__)
|
||||
/* __ARC_TLS_REGNO__ is used for thread pointer for ARCv2 */
|
||||
regs->TLSREG = thread->tls;
|
||||
/* R26 is used for thread pointer for ARCv2 */
|
||||
regs->r26 = thread->tls;
|
||||
#else
|
||||
/* R30 is used for thread pointer for ARCv3 */
|
||||
regs->r30 = thread->tls;
|
||||
@@ -273,7 +265,7 @@ int arch_float_enable(struct k_thread *thread, unsigned int options)
|
||||
|
||||
#if !defined(CONFIG_MULTITHREADING)
|
||||
|
||||
K_KERNEL_STACK_ARRAY_DECLARE(z_interrupt_stacks, CONFIG_MP_MAX_NUM_CPUS, CONFIG_ISR_STACK_SIZE);
|
||||
K_KERNEL_STACK_ARRAY_DECLARE(z_interrupt_stacks, CONFIG_MP_NUM_CPUS, CONFIG_ISR_STACK_SIZE);
|
||||
K_THREAD_STACK_DECLARE(z_main_stack, CONFIG_MAIN_STACK_SIZE);
|
||||
|
||||
extern void z_main_no_multithreading_entry_wrapper(void *p1, void *p2, void *p3,
|
||||
@@ -296,27 +288,3 @@ FUNC_NORETURN void z_arc_switch_to_main_no_multithreading(k_thread_entry_t main_
|
||||
CODE_UNREACHABLE; /* LCOV_EXCL_LINE */
|
||||
}
|
||||
#endif /* !CONFIG_MULTITHREADING */
|
||||
|
||||
#if defined(CONFIG_ARC_DSP) && defined(CONFIG_ARC_DSP_SHARING)
|
||||
void arc_dsp_disable(struct k_thread *thread, unsigned int options)
|
||||
{
|
||||
/* Ensure a preemptive context switch does not occur */
|
||||
k_spinlock_key_t key = k_spin_lock(&lock);
|
||||
|
||||
/* Disable DSP or AGU capabilities for the thread */
|
||||
thread->base.user_options &= ~(uint8_t)options;
|
||||
|
||||
k_spin_unlock(&lock, key);
|
||||
}
|
||||
|
||||
void arc_dsp_enable(struct k_thread *thread, unsigned int options)
|
||||
{
|
||||
/* Ensure a preemptive context switch does not occur */
|
||||
k_spinlock_key_t key = k_spin_lock(&lock);
|
||||
|
||||
/* Enable dsp or agu capabilities for the thread */
|
||||
thread->base.user_options |= (uint8_t)options;
|
||||
|
||||
k_spin_unlock(&lock, key);
|
||||
}
|
||||
#endif /* CONFIG_ARC_DSP && CONFIG_ARC_DSP_SHARING */
|
||||
|
||||
@@ -10,29 +10,6 @@
|
||||
#include <kernel_tls.h>
|
||||
#include <zephyr/sys/util.h>
|
||||
|
||||
#ifdef __CCAC__
|
||||
extern char _arcmwdt_tls_start[];
|
||||
extern char _arcmwdt_tls_size[];
|
||||
|
||||
size_t arch_tls_stack_setup(struct k_thread *new_thread, char *stack_ptr)
|
||||
{
|
||||
size_t tls_size = (size_t)_arcmwdt_tls_size;
|
||||
size_t tls_size_aligned = ROUND_UP(tls_size, ARCH_STACK_PTR_ALIGN);
|
||||
|
||||
stack_ptr -= tls_size_aligned;
|
||||
memcpy(stack_ptr, _arcmwdt_tls_start, tls_size);
|
||||
|
||||
new_thread->tls = POINTER_TO_UINT(stack_ptr);
|
||||
|
||||
return tls_size_aligned;
|
||||
}
|
||||
|
||||
void *_Preserve_flags _mwget_tls(void)
|
||||
{
|
||||
return (void *)(_current->tls);
|
||||
}
|
||||
|
||||
#else
|
||||
size_t arch_tls_stack_setup(struct k_thread *new_thread, char *stack_ptr)
|
||||
{
|
||||
/*
|
||||
@@ -63,4 +40,3 @@ size_t arch_tls_stack_setup(struct k_thread *new_thread, char *stack_ptr)
|
||||
|
||||
return (z_tls_data_size() + (sizeof(uintptr_t) * 2));
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2022 Synopsys.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#ifndef ZEPHYR_ARCH_ARC_INCLUDE_ARC_IRQ_OFFLOAD_H_
|
||||
#define ZEPHYR_ARCH_ARC_INCLUDE_ARC_IRQ_OFFLOAD_H_
|
||||
|
||||
#ifdef CONFIG_IRQ_OFFLOAD
|
||||
|
||||
int arc_irq_offload_init(const struct device *unused);
|
||||
|
||||
static inline void arc_irq_offload_init_smp(void)
|
||||
{
|
||||
arc_irq_offload_init(NULL);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
static inline void arc_irq_offload_init_smp(void) {}
|
||||
|
||||
#endif /* CONFIG_IRQ_OFFLOAD */
|
||||
|
||||
#endif /* ZEPHYR_ARCH_ARC_INCLUDE_ARC_IRQ_OFFLOAD_H_ */
|
||||
@@ -158,67 +158,7 @@ struct _callee_saved_stack {
|
||||
uintptr_t dpfp1h;
|
||||
uintptr_t dpfp1l;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ARC_DSP_SHARING
|
||||
#ifdef CONFIG_ARC_DSP_BFLY_SHARING
|
||||
uintptr_t dsp_fft_ctrl;
|
||||
uintptr_t dsp_bfly0;
|
||||
#endif
|
||||
uintptr_t acc0_ghi;
|
||||
uintptr_t acc0_glo;
|
||||
uintptr_t dsp_ctrl;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_ARC_AGU_SHARING
|
||||
uintptr_t agu_ap0;
|
||||
uintptr_t agu_ap1;
|
||||
uintptr_t agu_ap2;
|
||||
uintptr_t agu_ap3;
|
||||
uintptr_t agu_os0;
|
||||
uintptr_t agu_os1;
|
||||
uintptr_t agu_mod0;
|
||||
uintptr_t agu_mod1;
|
||||
uintptr_t agu_mod2;
|
||||
uintptr_t agu_mod3;
|
||||
#ifdef CONFIG_ARC_AGU_MEDIUM
|
||||
uintptr_t agu_ap4;
|
||||
uintptr_t agu_ap5;
|
||||
uintptr_t agu_ap6;
|
||||
uintptr_t agu_ap7;
|
||||
uintptr_t agu_os2;
|
||||
uintptr_t agu_os3;
|
||||
uintptr_t agu_mod4;
|
||||
uintptr_t agu_mod5;
|
||||
uintptr_t agu_mod6;
|
||||
uintptr_t agu_mod7;
|
||||
uintptr_t agu_mod8;
|
||||
uintptr_t agu_mod9;
|
||||
uintptr_t agu_mod10;
|
||||
uintptr_t agu_mod11;
|
||||
#endif
|
||||
#ifdef CONFIG_ARC_AGU_LARGE
|
||||
uintptr_t agu_ap8;
|
||||
uintptr_t agu_ap9;
|
||||
uintptr_t agu_ap10;
|
||||
uintptr_t agu_ap11;
|
||||
uintptr_t agu_os4;
|
||||
uintptr_t agu_os5;
|
||||
uintptr_t agu_os6;
|
||||
uintptr_t agu_os7;
|
||||
uintptr_t agu_mod12;
|
||||
uintptr_t agu_mod13;
|
||||
uintptr_t agu_mod14;
|
||||
uintptr_t agu_mod15;
|
||||
uintptr_t agu_mod16;
|
||||
uintptr_t agu_mod17;
|
||||
uintptr_t agu_mod18;
|
||||
uintptr_t agu_mod19;
|
||||
uintptr_t agu_mod20;
|
||||
uintptr_t agu_mod21;
|
||||
uintptr_t agu_mod22;
|
||||
uintptr_t agu_mod23;
|
||||
#endif
|
||||
#endif
|
||||
/*
|
||||
* No need to save r31 (blink), it's either already pushed as the pc or
|
||||
|
||||
@@ -15,8 +15,6 @@
|
||||
#include <zephyr/arch/cpu.h>
|
||||
#include <zephyr/arch/arc/tool-compat.h>
|
||||
#include <zephyr/arch/arc/asm-compat/assembler.h>
|
||||
#include <zephyr/kernel.h>
|
||||
#include "../core/dsp/swap_dsp_macros.h"
|
||||
|
||||
#ifdef _ASMLANGUAGE
|
||||
|
||||
@@ -71,7 +69,8 @@
|
||||
|
||||
#ifdef CONFIG_FPU_SHARING
|
||||
ld_s r13, [r2, ___thread_base_t_user_options_OFFSET]
|
||||
bbit0 r13, K_FP_IDX, fpu_skip_save
|
||||
/* K_FP_REGS is bit 1 */
|
||||
bbit0 r13, 1, 1f
|
||||
lr r13, [_ARC_V2_FPU_STATUS]
|
||||
st_s r13, [sp, ___callee_saved_stack_t_fpu_status_OFFSET]
|
||||
lr r13, [_ARC_V2_FPU_CTRL]
|
||||
@@ -87,9 +86,9 @@
|
||||
lr r13, [_ARC_V2_FPU_DPFP2H]
|
||||
st_s r13, [sp, ___callee_saved_stack_t_dpfp2h_OFFSET]
|
||||
#endif
|
||||
1 :
|
||||
#endif
|
||||
fpu_skip_save :
|
||||
_save_dsp_regs
|
||||
|
||||
/* save stack pointer in struct k_thread */
|
||||
STR sp, r2, _thread_offset_to_sp
|
||||
.endm
|
||||
@@ -108,7 +107,8 @@ fpu_skip_save :
|
||||
|
||||
#ifdef CONFIG_FPU_SHARING
|
||||
ld_s r13, [r2, ___thread_base_t_user_options_OFFSET]
|
||||
bbit0 r13, K_FP_IDX, fpu_skip_load
|
||||
/* K_FP_REGS is bit 1 */
|
||||
bbit0 r13, 1, 2f
|
||||
|
||||
ld_s r13, [sp, ___callee_saved_stack_t_fpu_status_OFFSET]
|
||||
sr r13, [_ARC_V2_FPU_STATUS]
|
||||
@@ -125,9 +125,9 @@ fpu_skip_save :
|
||||
ld_s r13, [sp, ___callee_saved_stack_t_dpfp2h_OFFSET]
|
||||
sr r13, [_ARC_V2_FPU_DPFP2H]
|
||||
#endif
|
||||
2 :
|
||||
#endif
|
||||
fpu_skip_load :
|
||||
_load_dsp_regs
|
||||
|
||||
#ifdef CONFIG_USERSPACE
|
||||
#ifdef CONFIG_ARC_HAS_SECURE
|
||||
#ifdef CONFIG_ARC_SECURE_FIRMWARE
|
||||
@@ -416,11 +416,11 @@ fpu_skip_load :
|
||||
.macro _store_old_thread_callee_regs
|
||||
|
||||
_save_callee_saved_regs
|
||||
/* Save old thread into switch handle which is required by z_sched_switch_spin.
|
||||
/* Save old thread into switch handle which is required by wait_for_switch.
|
||||
* NOTE: we shouldn't save anything related to old thread context after this point!
|
||||
* TODO: we should add SMP write-after-write data memory barrier here, as we want all
|
||||
* previous writes completed before setting switch_handle which is polled by other cores
|
||||
* in z_sched_switch_spin in case of SMP. Though it's not likely that this issue
|
||||
* in wait_for_switch in case of SMP. Though it's not likely that this issue
|
||||
* will reproduce in real world as there is some gap before reading switch_handle and
|
||||
* reading rest of the data we've stored before.
|
||||
*/
|
||||
@@ -543,29 +543,16 @@ fpu_skip_load :
|
||||
#endif
|
||||
.endm
|
||||
|
||||
|
||||
#define __arc_u9_max (255)
|
||||
#define __arc_u9_min (-256)
|
||||
#define __arc_ldst32_as_shift 2
|
||||
|
||||
/*
|
||||
* When we accessing bloated struct member we can exceed u9 operand in store
|
||||
* instruction. So we can use _st32_huge_offset macro instead
|
||||
*/
|
||||
.macro _st32_huge_offset, d, s, offset, temp
|
||||
.if MACRO_ARG(offset) <= __arc_u9_max && MACRO_ARG(offset) >= __arc_u9_min
|
||||
st MACRO_ARG(d), [MACRO_ARG(s), MACRO_ARG(offset)]
|
||||
/* Technically we can optimize with .as both big positive and negative offsets here, but
|
||||
* as we use only positive offsets in hand-written assembly code we keep only
|
||||
* positive offset case here for simplicity.
|
||||
*/
|
||||
.elseif !(MACRO_ARG(offset) % (1 << __arc_ldst32_as_shift)) && \
|
||||
MACRO_ARG(offset) <= (__arc_u9_max << __arc_ldst32_as_shift) && \
|
||||
MACRO_ARG(offset) >= 0
|
||||
st.as MACRO_ARG(d), [MACRO_ARG(s), MACRO_ARG(offset) >> __arc_ldst32_as_shift]
|
||||
.else
|
||||
ADDR MACRO_ARG(temp), MACRO_ARG(s), MACRO_ARG(offset)
|
||||
.macro _st32_huge_offset, d, s, off, temp
|
||||
.if MACRO_ARG(off) > 255 || MACRO_ARG(off) < -256
|
||||
ADDR MACRO_ARG(temp), MACRO_ARG(s), MACRO_ARG(off)
|
||||
st MACRO_ARG(d), [MACRO_ARG(temp)]
|
||||
.else
|
||||
st MACRO_ARG(d), [MACRO_ARG(s), MACRO_ARG(off)]
|
||||
.endif
|
||||
.endm
|
||||
|
||||
|
||||
@@ -2,4 +2,4 @@
|
||||
|
||||
set_property(GLOBAL PROPERTY PROPERTY_OUTPUT_FORMAT elf32-littlearm)
|
||||
|
||||
add_subdirectory(core)
|
||||
add_subdirectory(core/aarch32)
|
||||
|
||||
@@ -45,31 +45,7 @@ config CODE_DATA_RELOCATION_SRAM
|
||||
config is used to create an MPU entry for the SRAM space used for code
|
||||
relocation.
|
||||
|
||||
config ARM_ON_ENTER_CPU_IDLE_HOOK
|
||||
bool
|
||||
help
|
||||
Enables a hook (z_arm_on_enter_cpu_idle()) that is called when
|
||||
the CPU is made idle (by k_cpu_idle() or k_cpu_atomic_idle()).
|
||||
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
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
zephyr_library()
|
||||
|
||||
zephyr_library_sources(
|
||||
fatal.c
|
||||
nmi.c
|
||||
nmi_on_reset.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_USERSPACE userspace.S)
|
||||
zephyr_library_sources_ifdef(CONFIG_ARM_ZIMAGE_HEADER header.S)
|
||||
|
||||
add_subdirectory_ifdef(CONFIG_CPU_CORTEX_M cortex_m)
|
||||
add_subdirectory_ifdef(CONFIG_CPU_CORTEX_M_HAS_CMSE cortex_m/cmse)
|
||||
add_subdirectory_ifdef(CONFIG_ARM_SECURE_FIRMWARE cortex_m/tz)
|
||||
add_subdirectory_ifdef(CONFIG_ARM_NONSECURE_FIRMWARE cortex_m/tz)
|
||||
|
||||
add_subdirectory_ifdef(CONFIG_ARM_MPU mpu)
|
||||
add_subdirectory_ifdef(CONFIG_ARM_AARCH32_MMU mmu)
|
||||
|
||||
add_subdirectory_ifdef(CONFIG_CPU_AARCH32_CORTEX_R cortex_a_r)
|
||||
add_subdirectory_ifdef(CONFIG_CPU_AARCH32_CORTEX_A cortex_a_r)
|
||||
|
||||
if (CONFIG_ARM_ZIMAGE_HEADER)
|
||||
zephyr_linker_sources(ROM_START SORT_KEY 0x0vectors zimage_header.ld)
|
||||
zephyr_linker_sources(ROM_START SORT_KEY 0x1vectors vector_table.ld)
|
||||
zephyr_linker_sources(ROM_START SORT_KEY 0x2vectors cortex_m/vector_table_pad.ld)
|
||||
else()
|
||||
zephyr_linker_sources(ROM_START SORT_KEY 0x0vectors vector_table.ld)
|
||||
zephyr_linker_sources(ROM_START SORT_KEY 0x1vectors cortex_m/vector_table_pad.ld)
|
||||
endif()
|
||||
@@ -1,323 +0,0 @@
|
||||
# ARM core configuration options
|
||||
|
||||
# Copyright (c) 2015 Wind River Systems, Inc.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
config CPU_CORTEX_M
|
||||
bool
|
||||
select CPU_CORTEX
|
||||
select ARCH_HAS_CUSTOM_SWAP_TO_MAIN
|
||||
select HAS_CMSIS_CORE
|
||||
select HAS_FLASH_LOAD_OFFSET
|
||||
select ARCH_HAS_SINGLE_THREAD_SUPPORT
|
||||
select ARCH_HAS_THREAD_ABORT
|
||||
select ARCH_HAS_TRUSTED_EXECUTION if ARM_TRUSTZONE_M
|
||||
select ARCH_HAS_STACK_PROTECTION if (ARM_MPU && !ARMV6_M_ARMV8_M_BASELINE) || CPU_CORTEX_M_HAS_SPLIM
|
||||
select ARCH_HAS_USERSPACE if ARM_MPU
|
||||
select ARCH_HAS_NOCACHE_MEMORY_SUPPORT if ARM_MPU && CPU_HAS_ARM_MPU && CPU_HAS_DCACHE
|
||||
select ARCH_HAS_RAMFUNC_SUPPORT
|
||||
select ARCH_HAS_NESTED_EXCEPTION_DETECTION
|
||||
select SWAP_NONATOMIC
|
||||
select ARCH_HAS_EXTRA_EXCEPTION_INFO
|
||||
select ARCH_HAS_TIMING_FUNCTIONS if CPU_CORTEX_M_HAS_DWT
|
||||
select ARCH_SUPPORTS_ARCH_HW_INIT
|
||||
select ARCH_HAS_SUSPEND_TO_RAM
|
||||
select ARCH_HAS_CODE_DATA_RELOCATION
|
||||
imply XIP
|
||||
help
|
||||
This option signifies the use of a CPU of the Cortex-M family.
|
||||
|
||||
config CPU_AARCH32_CORTEX_R
|
||||
bool
|
||||
select CPU_CORTEX
|
||||
select HAS_CMSIS_CORE
|
||||
select ARCH_HAS_NESTED_EXCEPTION_DETECTION
|
||||
select HAS_FLASH_LOAD_OFFSET
|
||||
select ARCH_HAS_USERSPACE if ARM_MPU
|
||||
select ARCH_HAS_EXTRA_EXCEPTION_INFO
|
||||
select ARCH_HAS_CODE_DATA_RELOCATION
|
||||
select ARCH_HAS_NOCACHE_MEMORY_SUPPORT if ARM_MPU && CPU_HAS_ARM_MPU && CPU_HAS_DCACHE
|
||||
help
|
||||
This option signifies the use of a CPU of the Cortex-R family.
|
||||
|
||||
config ARM_ZIMAGE_HEADER
|
||||
bool "zImage Header"
|
||||
depends on CPU_AARCH32_CORTEX_R || CPU_AARCH32_CORTEX_A || CPU_CORTEX_M_HAS_VTOR
|
||||
help
|
||||
This option adds a zImage Header.
|
||||
|
||||
config CPU_AARCH32_CORTEX_A
|
||||
bool
|
||||
select CPU_CORTEX
|
||||
select CPU_HAS_MMU
|
||||
select HAS_CMSIS_CORE
|
||||
select HAS_FLASH_LOAD_OFFSET
|
||||
select ARCH_HAS_EXTRA_EXCEPTION_INFO
|
||||
select ARCH_HAS_NOCACHE_MEMORY_SUPPORT
|
||||
help
|
||||
This option signifies the use of a CPU of the Cortex-A family.
|
||||
|
||||
config ISA_THUMB2
|
||||
bool
|
||||
help
|
||||
From: http://www.arm.com/products/processors/technologies/instruction-set-architectures.php
|
||||
|
||||
Thumb-2 technology is the instruction set underlying the ARM Cortex
|
||||
architecture which provides enhanced levels of performance, energy
|
||||
efficiency, and code density for a wide range of embedded
|
||||
applications.
|
||||
|
||||
Thumb-2 technology builds on the success of Thumb, the innovative
|
||||
high code density instruction set for ARM microprocessor cores, to
|
||||
increase the power of the ARM microprocessor core available to
|
||||
developers of low cost, high performance systems.
|
||||
|
||||
The technology is backwards compatible with existing ARM and Thumb
|
||||
solutions, while significantly extending the features available to
|
||||
the Thumb instructions set. This allows more of the application to
|
||||
benefit from the best in class code density of Thumb.
|
||||
|
||||
For performance optimized code Thumb-2 technology uses 31 percent
|
||||
less memory to reduce system cost, while providing up to 38 percent
|
||||
higher performance than existing high density code, which can be used
|
||||
to prolong battery-life or to enrich the product feature set. Thumb-2
|
||||
technology is featured in the processor, and in all ARMv7
|
||||
architecture-based processors.
|
||||
|
||||
config ISA_ARM
|
||||
bool
|
||||
help
|
||||
From: https://developer.arm.com/products/architecture/instruction-sets/a32-and-t32-instruction-sets
|
||||
|
||||
A32 instructions, known as Arm instructions in pre-Armv8 architectures,
|
||||
are 32 bits wide, and are aligned on 4-byte boundaries. A32 instructions
|
||||
are supported by both A-profile and R-profile architectures.
|
||||
|
||||
A32 was traditionally used in applications requiring the highest
|
||||
performance, or for handling hardware exceptions such as interrupts and
|
||||
processor start-up. Much of its functionality was subsumed into T32 with
|
||||
the introduction of Thumb-2 technology.
|
||||
|
||||
config ASSEMBLER_ISA_THUMB2
|
||||
bool
|
||||
default y if ISA_THUMB2 && !ISA_ARM
|
||||
depends on !ISA_ARM
|
||||
help
|
||||
This helper symbol specifies the default target instruction set for
|
||||
the assembler.
|
||||
|
||||
When only the Thumb-2 ISA is supported (i.e. on Cortex-M cores), the
|
||||
assembler must use the Thumb-2 instruction set.
|
||||
|
||||
When both the Thumb-2 and ARM ISAs are supported (i.e. on Cortex-A
|
||||
and Cortex-R cores), the assembler must use the ARM instruction set
|
||||
because the architecture assembly code makes use of the ARM
|
||||
instructions.
|
||||
|
||||
config COMPILER_ISA_THUMB2
|
||||
bool "Compile C/C++ functions using Thumb-2 instruction set"
|
||||
depends on ISA_THUMB2
|
||||
default y
|
||||
help
|
||||
This option configures the compiler to compile all C/C++ functions
|
||||
using the Thumb-2 instruction set.
|
||||
|
||||
N.B. The scope of this symbol is not necessarily limited to the C and
|
||||
C++ languages; in fact, this symbol refers to all forms of
|
||||
"compiled" code.
|
||||
|
||||
When an additional natively-compiled language support is added
|
||||
in the future, this symbol shall also specify the Thumb-2
|
||||
instruction set for that language.
|
||||
|
||||
config NUM_IRQS
|
||||
int
|
||||
|
||||
config STACK_ALIGN_DOUBLE_WORD
|
||||
bool "Align stacks on double-words (8 octets)"
|
||||
default y
|
||||
help
|
||||
This is needed to conform to AAPCS, the procedure call standard for
|
||||
the ARM. It wastes stack space. The option also enforces alignment
|
||||
of stack upon exception entry on Cortex-M3 and Cortex-M4 (ARMv7-M).
|
||||
Note that for ARMv6-M, ARMv8-M, and Cortex-M7 MCUs stack alignment
|
||||
on exception entry is enabled by default and it is not configurable.
|
||||
|
||||
config RUNTIME_NMI
|
||||
bool "Attach an NMI handler at runtime"
|
||||
select REBOOT
|
||||
help
|
||||
The kernel provides a simple NMI handler that simply hangs in a tight
|
||||
loop if triggered. This fills the requirement that there must be an
|
||||
NMI handler installed when the CPU boots. If a custom handler is
|
||||
needed, enable this option and attach it via z_arm_nmi_set_handler().
|
||||
|
||||
config PLATFORM_SPECIFIC_INIT
|
||||
bool "Platform (SOC) specific startup hook"
|
||||
help
|
||||
The platform specific initialization code (z_arm_platform_init) is
|
||||
executed at the beginning of the startup code (__start).
|
||||
|
||||
config FAULT_DUMP
|
||||
int "Fault dump level"
|
||||
default 2
|
||||
range 0 2
|
||||
help
|
||||
Different levels for display information when a fault occurs.
|
||||
|
||||
2: The default. Display specific and verbose information. Consumes
|
||||
the most memory (long strings).
|
||||
|
||||
1: Display general and short information. Consumes less memory
|
||||
(short strings).
|
||||
|
||||
0: Off.
|
||||
|
||||
config BUILTIN_STACK_GUARD
|
||||
bool "Thread Stack Guards based on built-in ARM stack limit checking"
|
||||
depends on CPU_CORTEX_M_HAS_SPLIM
|
||||
select THREAD_STACK_INFO
|
||||
help
|
||||
Enable Thread/Interrupt Stack Guards via built-in Stack Pointer
|
||||
limit checking. The functionality must be supported by HW.
|
||||
|
||||
config ARM_STACK_PROTECTION
|
||||
bool
|
||||
default y if HW_STACK_PROTECTION
|
||||
imply BUILTIN_STACK_GUARD if CPU_CORTEX_M_HAS_SPLIM
|
||||
select MPU_STACK_GUARD if (!BUILTIN_STACK_GUARD && ARM_MPU)
|
||||
help
|
||||
This option enables either:
|
||||
- The built-in Stack Pointer limit checking, or
|
||||
- the MPU-based stack guard
|
||||
to cause a system fatal error
|
||||
if the bounds of the current process stack are overflowed.
|
||||
The two stack guard options are mutually exclusive. The
|
||||
selection of the built-in Stack Pointer limit checking is
|
||||
prioritized over the MPU-based stack guard. The developer
|
||||
still has the option to manually select the MPU-based
|
||||
stack guard, if this is desired.
|
||||
|
||||
config ARM_SECURE_FIRMWARE
|
||||
bool
|
||||
depends on ARMV8_M_SE
|
||||
default y if TRUSTED_EXECUTION_SECURE
|
||||
help
|
||||
This option indicates that we are building a Zephyr image that
|
||||
is intended to execute in Secure state. The option is only
|
||||
applicable to ARMv8-M MCUs that implement the Security Extension.
|
||||
|
||||
This option enables Zephyr to include code that executes in
|
||||
Secure state, as well as to exclude code that is designed to
|
||||
execute only in Non-secure state.
|
||||
|
||||
Code executing in Secure state has access to both the Secure
|
||||
and Non-Secure resources of the Cortex-M MCU.
|
||||
|
||||
Code executing in Non-Secure state may trigger Secure Faults,
|
||||
if Secure MCU resources are accessed from the Non-Secure state.
|
||||
Secure Faults may only be handled by code executing in Secure
|
||||
state.
|
||||
|
||||
config ARM_NONSECURE_FIRMWARE
|
||||
bool
|
||||
depends on !ARM_SECURE_FIRMWARE
|
||||
depends on ARMV8_M_SE
|
||||
default y if TRUSTED_EXECUTION_NONSECURE
|
||||
help
|
||||
This option indicates that we are building a Zephyr image that
|
||||
is intended to execute in Non-Secure state. Execution of this
|
||||
image is triggered by Secure firmware that executes in Secure
|
||||
state. The option is only applicable to ARMv8-M MCUs that
|
||||
implement the Security Extension.
|
||||
|
||||
This option enables Zephyr to include code that executes in
|
||||
Non-Secure state only, as well as to exclude code that is
|
||||
designed to execute only in Secure state.
|
||||
|
||||
Code executing in Non-Secure state has no access to Secure
|
||||
resources of the Cortex-M MCU, and, therefore, it shall avoid
|
||||
accessing them.
|
||||
|
||||
config ARM_NONSECURE_PREEMPTIBLE_SECURE_CALLS
|
||||
bool "Allow secure function calls to be preempted"
|
||||
depends on ARM_NONSECURE_FIRMWARE
|
||||
help
|
||||
When enabled, this option indicates that preemptible Zephyr
|
||||
threads performing secure function calls, are allowed to be
|
||||
preempted. When disabled, the option indicates that such
|
||||
threads many not be context-switched-out while doing a Secure
|
||||
function call.
|
||||
|
||||
config ARM_STORE_EXC_RETURN
|
||||
bool
|
||||
default y if CPU_CORTEX_M && (FPU_SHARING || ARM_NONSECURE_PREEMPTIBLE_SECURE_CALLS)
|
||||
help
|
||||
Store the EXC_RETURN value when switching threads.
|
||||
This is needed when switching between threads that differ in either
|
||||
FPU usage or security domain.
|
||||
|
||||
choice
|
||||
prompt "Floating point ABI"
|
||||
default FP_HARDABI
|
||||
depends on FPU
|
||||
|
||||
config FP_HARDABI
|
||||
bool "Floating point Hard ABI"
|
||||
# TF-M build system does not build the NS app and libraries correctly with Hard ABI.
|
||||
# This limitation should be removed in the next TF-M synchronization.
|
||||
depends on !TFM_BUILD_NS
|
||||
depends on !(BUILD_WITH_TFM && !TFM_IPC)
|
||||
help
|
||||
This option selects the Floating point ABI in which hardware floating
|
||||
point instructions are generated and uses FPU-specific calling
|
||||
conventions.
|
||||
|
||||
Note: When building with TF-M enabled only the IPC mode is supported.
|
||||
|
||||
config FP_SOFTABI
|
||||
bool "Floating point Soft ABI"
|
||||
help
|
||||
This option selects the Floating point ABI in which hardware floating
|
||||
point instructions are generated but soft-float calling conventions.
|
||||
|
||||
endchoice
|
||||
|
||||
config FP16
|
||||
bool "Half-precision floating point support"
|
||||
default y
|
||||
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.
|
||||
|
||||
choice
|
||||
prompt "FP16 format"
|
||||
default FP16_IEEE
|
||||
depends on FP16
|
||||
|
||||
config FP16_IEEE
|
||||
bool "FP16 IEEE format"
|
||||
help
|
||||
This option selects the IEEE 754-2008 format for FP16. This format can
|
||||
represent normalized values in the range of 2^(-14) to 65504. There are
|
||||
11 bits of significand precision, approximately 3 decimal digits.
|
||||
|
||||
config FP16_ALT
|
||||
bool "FP16 ARM alternative format"
|
||||
help
|
||||
This option selects the ARM alternative format for FP16. This
|
||||
representation is similar to the IEEE 754-2008 format, but does not
|
||||
support infinites or NaNs. Instead, the range of exponents is extended,
|
||||
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"
|
||||
rsource "cortex_a_r/Kconfig"
|
||||
|
||||
rsource "mpu/Kconfig"
|
||||
rsource "mmu/Kconfig"
|
||||
40
arch/arm/core/aarch32/CMakeLists.txt
Normal file
40
arch/arm/core/aarch32/CMakeLists.txt
Normal file
@@ -0,0 +1,40 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
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_CPLUSPLUS __aeabi_atexit.c)
|
||||
zephyr_library_sources_ifdef(CONFIG_IRQ_OFFLOAD irq_offload.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)
|
||||
|
||||
if(CONFIG_HAS_ARCH_CACHE)
|
||||
zephyr_library_sources_ifdef(CONFIG_CACHE_MANAGEMENT cache.c)
|
||||
endif()
|
||||
|
||||
add_subdirectory_ifdef(CONFIG_CPU_CORTEX_M cortex_m)
|
||||
add_subdirectory_ifdef(CONFIG_CPU_CORTEX_M_HAS_CMSE cortex_m/cmse)
|
||||
add_subdirectory_ifdef(CONFIG_ARM_SECURE_FIRMWARE cortex_m/tz)
|
||||
add_subdirectory_ifdef(CONFIG_ARM_NONSECURE_FIRMWARE cortex_m/tz)
|
||||
|
||||
add_subdirectory_ifdef(CONFIG_ARM_MPU mpu)
|
||||
add_subdirectory_ifdef(CONFIG_ARM_AARCH32_MMU mmu)
|
||||
|
||||
add_subdirectory_ifdef(CONFIG_CPU_AARCH32_CORTEX_R cortex_a_r)
|
||||
add_subdirectory_ifdef(CONFIG_CPU_AARCH32_CORTEX_A cortex_a_r)
|
||||
|
||||
zephyr_linker_sources(ROM_START SORT_KEY 0x0vectors vector_table.ld)
|
||||
zephyr_linker_sources(ROM_START SORT_KEY 0x1vectors cortex_m/vector_table_pad.ld)
|
||||
314
arch/arm/core/aarch32/Kconfig
Normal file
314
arch/arm/core/aarch32/Kconfig
Normal file
@@ -0,0 +1,314 @@
|
||||
# ARM core configuration options
|
||||
|
||||
# Copyright (c) 2015 Wind River Systems, Inc.
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
config CPU_CORTEX_M
|
||||
bool
|
||||
select CPU_CORTEX
|
||||
select ARCH_HAS_CUSTOM_SWAP_TO_MAIN
|
||||
select HAS_CMSIS_CORE
|
||||
select HAS_FLASH_LOAD_OFFSET
|
||||
select ARCH_HAS_SINGLE_THREAD_SUPPORT
|
||||
select ARCH_HAS_THREAD_ABORT
|
||||
select ARCH_HAS_TRUSTED_EXECUTION if ARM_TRUSTZONE_M
|
||||
select ARCH_HAS_STACK_PROTECTION if (ARM_MPU && !ARMV6_M_ARMV8_M_BASELINE) || CPU_CORTEX_M_HAS_SPLIM
|
||||
select ARCH_HAS_USERSPACE if ARM_MPU
|
||||
select ARCH_HAS_NOCACHE_MEMORY_SUPPORT if ARM_MPU && CPU_HAS_ARM_MPU && CPU_HAS_DCACHE
|
||||
select ARCH_HAS_RAMFUNC_SUPPORT
|
||||
select ARCH_HAS_NESTED_EXCEPTION_DETECTION
|
||||
select SWAP_NONATOMIC
|
||||
select ARCH_HAS_EXTRA_EXCEPTION_INFO
|
||||
select ARCH_HAS_TIMING_FUNCTIONS if CPU_CORTEX_M_HAS_DWT
|
||||
select ARCH_SUPPORTS_ARCH_HW_INIT
|
||||
select ARCH_HAS_SUSPEND_TO_RAM
|
||||
select ARCH_HAS_CODE_DATA_RELOCATION
|
||||
imply XIP
|
||||
help
|
||||
This option signifies the use of a CPU of the Cortex-M family.
|
||||
|
||||
config CPU_AARCH32_CORTEX_R
|
||||
bool
|
||||
select CPU_CORTEX
|
||||
select HAS_CMSIS_CORE
|
||||
select ARCH_HAS_NESTED_EXCEPTION_DETECTION
|
||||
select HAS_FLASH_LOAD_OFFSET
|
||||
select ARCH_HAS_USERSPACE if ARM_MPU
|
||||
select ARCH_HAS_EXTRA_EXCEPTION_INFO
|
||||
select ARCH_HAS_CODE_DATA_RELOCATION
|
||||
help
|
||||
This option signifies the use of a CPU of the Cortex-R family.
|
||||
|
||||
config CPU_AARCH32_CORTEX_A
|
||||
bool
|
||||
select CPU_CORTEX
|
||||
select CPU_HAS_MMU
|
||||
select HAS_CMSIS_CORE
|
||||
select HAS_FLASH_LOAD_OFFSET
|
||||
select ARCH_HAS_EXTRA_EXCEPTION_INFO
|
||||
select ARCH_HAS_NOCACHE_MEMORY_SUPPORT
|
||||
help
|
||||
This option signifies the use of a CPU of the Cortex-A family.
|
||||
|
||||
config ISA_THUMB2
|
||||
bool
|
||||
help
|
||||
From: http://www.arm.com/products/processors/technologies/instruction-set-architectures.php
|
||||
|
||||
Thumb-2 technology is the instruction set underlying the ARM Cortex
|
||||
architecture which provides enhanced levels of performance, energy
|
||||
efficiency, and code density for a wide range of embedded
|
||||
applications.
|
||||
|
||||
Thumb-2 technology builds on the success of Thumb, the innovative
|
||||
high code density instruction set for ARM microprocessor cores, to
|
||||
increase the power of the ARM microprocessor core available to
|
||||
developers of low cost, high performance systems.
|
||||
|
||||
The technology is backwards compatible with existing ARM and Thumb
|
||||
solutions, while significantly extending the features available to
|
||||
the Thumb instructions set. This allows more of the application to
|
||||
benefit from the best in class code density of Thumb.
|
||||
|
||||
For performance optimized code Thumb-2 technology uses 31 percent
|
||||
less memory to reduce system cost, while providing up to 38 percent
|
||||
higher performance than existing high density code, which can be used
|
||||
to prolong battery-life or to enrich the product feature set. Thumb-2
|
||||
technology is featured in the processor, and in all ARMv7
|
||||
architecture-based processors.
|
||||
|
||||
config ISA_ARM
|
||||
bool
|
||||
help
|
||||
From: https://developer.arm.com/products/architecture/instruction-sets/a32-and-t32-instruction-sets
|
||||
|
||||
A32 instructions, known as Arm instructions in pre-Armv8 architectures,
|
||||
are 32 bits wide, and are aligned on 4-byte boundaries. A32 instructions
|
||||
are supported by both A-profile and R-profile architectures.
|
||||
|
||||
A32 was traditionally used in applications requiring the highest
|
||||
performance, or for handling hardware exceptions such as interrupts and
|
||||
processor start-up. Much of its functionality was subsumed into T32 with
|
||||
the introduction of Thumb-2 technology.
|
||||
|
||||
config ASSEMBLER_ISA_THUMB2
|
||||
bool
|
||||
default y if ISA_THUMB2 && !ISA_ARM
|
||||
depends on !ISA_ARM
|
||||
help
|
||||
This helper symbol specifies the default target instruction set for
|
||||
the assembler.
|
||||
|
||||
When only the Thumb-2 ISA is supported (i.e. on Cortex-M cores), the
|
||||
assembler must use the Thumb-2 instruction set.
|
||||
|
||||
When both the Thumb-2 and ARM ISAs are supported (i.e. on Cortex-A
|
||||
and Cortex-R cores), the assembler must use the ARM instruction set
|
||||
because the architecture assembly code makes use of the ARM
|
||||
instructions.
|
||||
|
||||
config COMPILER_ISA_THUMB2
|
||||
bool "Compile C/C++ functions using Thumb-2 instruction set"
|
||||
depends on ISA_THUMB2
|
||||
default y
|
||||
help
|
||||
This option configures the compiler to compile all C/C++ functions
|
||||
using the Thumb-2 instruction set.
|
||||
|
||||
N.B. The scope of this symbol is not necessarily limited to the C and
|
||||
C++ languages; in fact, this symbol refers to all forms of
|
||||
"compiled" code.
|
||||
|
||||
When an additional natively-compiled language support is added
|
||||
in the future, this symbol shall also specify the Thumb-2
|
||||
instruction set for that language.
|
||||
|
||||
config NUM_IRQS
|
||||
int
|
||||
|
||||
config STACK_ALIGN_DOUBLE_WORD
|
||||
bool "Align stacks on double-words (8 octets)"
|
||||
default y
|
||||
help
|
||||
This is needed to conform to AAPCS, the procedure call standard for
|
||||
the ARM. It wastes stack space. The option also enforces alignment
|
||||
of stack upon exception entry on Cortex-M3 and Cortex-M4 (ARMv7-M).
|
||||
Note that for ARMv6-M, ARMv8-M, and Cortex-M7 MCUs stack alignment
|
||||
on exception entry is enabled by default and it is not configurable.
|
||||
|
||||
config RUNTIME_NMI
|
||||
bool "Attach an NMI handler at runtime"
|
||||
select REBOOT
|
||||
help
|
||||
The kernel provides a simple NMI handler that simply hangs in a tight
|
||||
loop if triggered. This fills the requirement that there must be an
|
||||
NMI handler installed when the CPU boots. If a custom handler is
|
||||
needed, enable this option and attach it via _NmiHandlerSet().
|
||||
|
||||
config PLATFORM_SPECIFIC_INIT
|
||||
bool "Platform (SOC) specific startup hook"
|
||||
help
|
||||
The platform specific initialization code (z_arm_platform_init) is
|
||||
executed at the beginning of the startup code (__start).
|
||||
|
||||
config FAULT_DUMP
|
||||
int "Fault dump level"
|
||||
default 2
|
||||
range 0 2
|
||||
help
|
||||
Different levels for display information when a fault occurs.
|
||||
|
||||
2: The default. Display specific and verbose information. Consumes
|
||||
the most memory (long strings).
|
||||
|
||||
1: Display general and short information. Consumes less memory
|
||||
(short strings).
|
||||
|
||||
0: Off.
|
||||
|
||||
config BUILTIN_STACK_GUARD
|
||||
bool "Thread Stack Guards based on built-in ARM stack limit checking"
|
||||
depends on CPU_CORTEX_M_HAS_SPLIM
|
||||
select THREAD_STACK_INFO
|
||||
help
|
||||
Enable Thread/Interrupt Stack Guards via built-in Stack Pointer
|
||||
limit checking. The functionality must be supported by HW.
|
||||
|
||||
config ARM_STACK_PROTECTION
|
||||
bool
|
||||
default y if HW_STACK_PROTECTION
|
||||
imply BUILTIN_STACK_GUARD if CPU_CORTEX_M_HAS_SPLIM
|
||||
select MPU_STACK_GUARD if (!BUILTIN_STACK_GUARD && ARM_MPU)
|
||||
help
|
||||
This option enables either:
|
||||
- The built-in Stack Pointer limit checking, or
|
||||
- the MPU-based stack guard
|
||||
to cause a system fatal error
|
||||
if the bounds of the current process stack are overflowed.
|
||||
The two stack guard options are mutually exclusive. The
|
||||
selection of the built-in Stack Pointer limit checking is
|
||||
prioritized over the MPU-based stack guard. The developer
|
||||
still has the option to manually select the MPU-based
|
||||
stack guard, if this is desired.
|
||||
|
||||
config ARM_SECURE_FIRMWARE
|
||||
bool
|
||||
depends on ARMV8_M_SE
|
||||
default y if TRUSTED_EXECUTION_SECURE
|
||||
help
|
||||
This option indicates that we are building a Zephyr image that
|
||||
is intended to execute in Secure state. The option is only
|
||||
applicable to ARMv8-M MCUs that implement the Security Extension.
|
||||
|
||||
This option enables Zephyr to include code that executes in
|
||||
Secure state, as well as to exclude code that is designed to
|
||||
execute only in Non-secure state.
|
||||
|
||||
Code executing in Secure state has access to both the Secure
|
||||
and Non-Secure resources of the Cortex-M MCU.
|
||||
|
||||
Code executing in Non-Secure state may trigger Secure Faults,
|
||||
if Secure MCU resources are accessed from the Non-Secure state.
|
||||
Secure Faults may only be handled by code executing in Secure
|
||||
state.
|
||||
|
||||
config ARM_NONSECURE_FIRMWARE
|
||||
bool
|
||||
depends on !ARM_SECURE_FIRMWARE
|
||||
depends on ARMV8_M_SE
|
||||
default y if TRUSTED_EXECUTION_NONSECURE
|
||||
help
|
||||
This option indicates that we are building a Zephyr image that
|
||||
is intended to execute in Non-Secure state. Execution of this
|
||||
image is triggered by Secure firmware that executes in Secure
|
||||
state. The option is only applicable to ARMv8-M MCUs that
|
||||
implement the Security Extension.
|
||||
|
||||
This option enables Zephyr to include code that executes in
|
||||
Non-Secure state only, as well as to exclude code that is
|
||||
designed to execute only in Secure state.
|
||||
|
||||
Code executing in Non-Secure state has no access to Secure
|
||||
resources of the Cortex-M MCU, and, therefore, it shall avoid
|
||||
accessing them.
|
||||
|
||||
config ARM_NONSECURE_PREEMPTIBLE_SECURE_CALLS
|
||||
bool "Allow secure function calls to be preempted"
|
||||
depends on ARM_NONSECURE_FIRMWARE
|
||||
help
|
||||
When enabled, this option indicates that preemptible Zephyr
|
||||
threads performing secure function calls, are allowed to be
|
||||
preempted. When disabled, the option indicates that such
|
||||
threads many not be context-switched-out while doing a Secure
|
||||
function call.
|
||||
|
||||
config ARM_STORE_EXC_RETURN
|
||||
bool
|
||||
default y if CPU_CORTEX_M && (FPU_SHARING || ARM_NONSECURE_PREEMPTIBLE_SECURE_CALLS)
|
||||
help
|
||||
Store the EXC_RETURN value when switching threads.
|
||||
This is needed when switching between threads that differ in either
|
||||
FPU usage or security domain.
|
||||
|
||||
choice
|
||||
prompt "Floating point ABI"
|
||||
default FP_HARDABI
|
||||
depends on FPU
|
||||
|
||||
config FP_HARDABI
|
||||
bool "Floating point Hard ABI"
|
||||
# TF-M build system does not build the NS app and libraries correctly with Hard ABI.
|
||||
# This limitation should be removed in the next TF-M synchronization.
|
||||
depends on !TFM_BUILD_NS
|
||||
depends on !(BUILD_WITH_TFM && !TFM_IPC)
|
||||
help
|
||||
This option selects the Floating point ABI in which hardware floating
|
||||
point instructions are generated and uses FPU-specific calling
|
||||
conventions.
|
||||
|
||||
Note: When building with TF-M enabled only the IPC mode is supported.
|
||||
|
||||
config FP_SOFTABI
|
||||
bool "Floating point Soft ABI"
|
||||
help
|
||||
This option selects the Floating point ABI in which hardware floating
|
||||
point instructions are generated but soft-float calling conventions.
|
||||
|
||||
endchoice
|
||||
|
||||
config FP16
|
||||
bool "Half-precision floating point support"
|
||||
default y
|
||||
help
|
||||
This option enables the half-precision (16-bit) floating point support
|
||||
via the `__fp16` (both IEEE and ARM alternative formats) and the
|
||||
`_Float16` (IEEE format only) types.
|
||||
|
||||
choice
|
||||
prompt "FP16 format"
|
||||
default FP16_IEEE
|
||||
depends on FP16
|
||||
|
||||
config FP16_IEEE
|
||||
bool "FP16 IEEE format"
|
||||
help
|
||||
This option selects the IEEE 754-2008 format for FP16. This format can
|
||||
represent normalized values in the range of 2^(-14) to 65504. There are
|
||||
11 bits of significand precision, approximately 3 decimal digits.
|
||||
|
||||
config FP16_ALT
|
||||
bool "FP16 ARM alternative format"
|
||||
help
|
||||
This option selects the ARM alternative format for FP16. This
|
||||
representation is similar to the IEEE 754-2008 format, but does not
|
||||
support infinites or NaNs. Instead, the range of exponents is extended,
|
||||
so that this format can represent normalized values in the range of
|
||||
2^(-14) to 131008.
|
||||
|
||||
endchoice
|
||||
|
||||
rsource "cortex_m/Kconfig"
|
||||
rsource "cortex_a_r/Kconfig"
|
||||
|
||||
rsource "mpu/Kconfig"
|
||||
rsource "mmu/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.
|
||||
108
arch/arm/core/aarch32/cache.c
Normal file
108
arch/arm/core/aarch32/cache.c
Normal file
@@ -0,0 +1,108 @@
|
||||
/*
|
||||
* Copyright (c) 2013-2014 Wind River Systems, Inc.
|
||||
* Copyright (c) 2020-2022 Qualcomm Innovation Center, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
/**
|
||||
* @file
|
||||
* @brief Cache manipulation
|
||||
*
|
||||
* This module contains functions for manipulation caches.
|
||||
*/
|
||||
|
||||
#include <zephyr/arch/cpu.h>
|
||||
#include <zephyr/cache.h>
|
||||
#include <zephyr/arch/arm/aarch32/cortex_m/cmsis.h>
|
||||
|
||||
void arch_dcache_enable(void)
|
||||
{
|
||||
SCB_EnableDCache();
|
||||
}
|
||||
|
||||
void arch_dcache_disable(void)
|
||||
{
|
||||
SCB_DisableDCache();
|
||||
}
|
||||
|
||||
void arch_icache_enable(void)
|
||||
{
|
||||
SCB_EnableICache();
|
||||
}
|
||||
|
||||
void arch_icache_disable(void)
|
||||
{
|
||||
SCB_DisableICache();
|
||||
}
|
||||
|
||||
static void arch_dcache_flush(void *start_addr, size_t size)
|
||||
{
|
||||
SCB_CleanDCache_by_Addr(start_addr, size);
|
||||
}
|
||||
|
||||
static void arch_dcache_invd(void *start_addr, size_t size)
|
||||
{
|
||||
SCB_InvalidateDCache_by_Addr(start_addr, size);
|
||||
}
|
||||
|
||||
static void arch_dcache_flush_and_invd(void *start_addr, size_t size)
|
||||
{
|
||||
SCB_CleanInvalidateDCache_by_Addr(start_addr, size);
|
||||
}
|
||||
|
||||
static void arch_icache_invd(void *start_addr, size_t size)
|
||||
{
|
||||
SCB_InvalidateICache_by_Addr(start_addr, size);
|
||||
}
|
||||
|
||||
int arch_dcache_range(void *addr, size_t size, int op)
|
||||
{
|
||||
if (op == K_CACHE_INVD) {
|
||||
arch_dcache_invd(addr, size);
|
||||
} else if (op == K_CACHE_WB) {
|
||||
arch_dcache_flush(addr, size);
|
||||
} else if (op == K_CACHE_WB_INVD) {
|
||||
arch_dcache_flush_and_invd(addr, size);
|
||||
} else {
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int arch_dcache_all(int op)
|
||||
{
|
||||
if (op == K_CACHE_INVD) {
|
||||
SCB_InvalidateDCache();
|
||||
} else if (op == K_CACHE_WB) {
|
||||
SCB_CleanDCache();
|
||||
} else if (op == K_CACHE_WB_INVD) {
|
||||
SCB_CleanInvalidateDCache();
|
||||
} else {
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int arch_icache_all(int op)
|
||||
{
|
||||
if (op == K_CACHE_INVD) {
|
||||
SCB_InvalidateICache();
|
||||
} else {
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int arch_icache_range(void *addr, size_t size, int op)
|
||||
{
|
||||
if (op == K_CACHE_INVD) {
|
||||
arch_icache_invd(addr, size);
|
||||
} else {
|
||||
return -ENOTSUP;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
19
arch/arm/core/aarch32/cortex_a_r/CMakeLists.txt
Normal file
19
arch/arm/core/aarch32/cortex_a_r/CMakeLists.txt
Normal file
@@ -0,0 +1,19 @@
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
zephyr_library()
|
||||
|
||||
zephyr_library_sources(
|
||||
exc.S
|
||||
exc_exit.S
|
||||
fault.c
|
||||
irq_init.c
|
||||
reboot.c
|
||||
reset.S
|
||||
stacks.c
|
||||
tcm.c
|
||||
vector_table.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)
|
||||
187
arch/arm/core/aarch32/cortex_a_r/Kconfig
Normal file
187
arch/arm/core/aarch32/cortex_a_r/Kconfig
Normal file
@@ -0,0 +1,187 @@
|
||||
# ARM Cortex-A and Cortex-R platform configuration options
|
||||
|
||||
# Copyright (c) 2018 Marvell
|
||||
# Copyright (c) 2018 Lexmark International, Inc.
|
||||
# Copyright (c) 2021 Weidmueller Interface GmbH & Co. KG
|
||||
#
|
||||
# SPDX-License-Identifier: Apache-2.0
|
||||
|
||||
# NOTE: We have the specific core implementations first and outside of the
|
||||
# if CPU_AARCH32_CORTEX_A / if CPU_AARCH32_CORTEX_R block so that SoCs can
|
||||
# select which core they are using without having to select all the options
|
||||
# related to that core. Everything else is captured inside the if
|
||||
# CPU_AARCH32_CORTEX_A / if CPU_AARCH32_CORTEX_R blocks so they are not
|
||||
# exposed if one selects a different ARM Cortex Family (Cortex-M).
|
||||
|
||||
config CPU_CORTEX_A9
|
||||
bool
|
||||
select CPU_AARCH32_CORTEX_A
|
||||
select ARMV7_A
|
||||
help
|
||||
This option signifies the use of a Cortex-A9 CPU.
|
||||
|
||||
if CPU_AARCH32_CORTEX_A
|
||||
|
||||
config ARMV7_A
|
||||
bool
|
||||
select ATOMIC_OPERATIONS_BUILTIN
|
||||
select ISA_ARM
|
||||
|
||||
config ARMV7_EXCEPTION_STACK_SIZE
|
||||
int "Undefined Instruction and Abort stack size (in bytes)"
|
||||
default 256
|
||||
help
|
||||
This option specifies the size of the stack used by the undefined
|
||||
instruction and data abort exception handlers.
|
||||
|
||||
config ARMV7_FIQ_STACK_SIZE
|
||||
int "FIQ stack size (in bytes)"
|
||||
default 256
|
||||
help
|
||||
This option specifies the size of the stack used by the FIQ handler.
|
||||
|
||||
config ARMV7_SVC_STACK_SIZE
|
||||
int "SVC stack size (in bytes)"
|
||||
default 512
|
||||
help
|
||||
This option specifies the size of the stack used by the SVC handler.
|
||||
|
||||
config ARMV7_SYS_STACK_SIZE
|
||||
int "SYS stack size (in bytes)"
|
||||
default 1024
|
||||
help
|
||||
This option specifies the size of the stack used by the system mode.
|
||||
|
||||
config RUNTIME_NMI
|
||||
default y
|
||||
|
||||
config GEN_ISR_TABLES
|
||||
default y
|
||||
|
||||
config GEN_IRQ_VECTOR_TABLE
|
||||
default n
|
||||
|
||||
config DCACHE_LINE_SIZE
|
||||
default 32
|
||||
|
||||
config ICACHE_LINE_SIZE
|
||||
default 32
|
||||
|
||||
endif # CPU_AARCH32_CORTEX_A
|
||||
|
||||
config CPU_CORTEX_R4
|
||||
bool
|
||||
select CPU_AARCH32_CORTEX_R
|
||||
select ARMV7_R
|
||||
select ARMV7_R_FP if CPU_HAS_FPU
|
||||
help
|
||||
This option signifies the use of a Cortex-R4 CPU
|
||||
|
||||
config CPU_CORTEX_R5
|
||||
bool
|
||||
select CPU_AARCH32_CORTEX_R
|
||||
select ARMV7_R
|
||||
select ARMV7_R_FP if CPU_HAS_FPU
|
||||
help
|
||||
This option signifies the use of a Cortex-R5 CPU
|
||||
|
||||
config CPU_CORTEX_R7
|
||||
bool
|
||||
select CPU_AARCH32_CORTEX_R
|
||||
select ARMV7_R
|
||||
select ARMV7_R_FP if CPU_HAS_FPU
|
||||
help
|
||||
This option signifies the use of a Cortex-R7 CPU
|
||||
|
||||
config CPU_CORTEX_R52
|
||||
bool
|
||||
select CPU_AARCH32_CORTEX_R
|
||||
select AARCH32_ARMV8_R
|
||||
help
|
||||
This option signifies the use of a Cortex-R52 CPU
|
||||
|
||||
if CPU_AARCH32_CORTEX_R
|
||||
|
||||
config ARMV7_R
|
||||
bool
|
||||
select ATOMIC_OPERATIONS_BUILTIN
|
||||
select ISA_ARM
|
||||
select ISA_THUMB2
|
||||
help
|
||||
This option signifies the use of an ARMv7-R processor
|
||||
implementation.
|
||||
|
||||
From https://developer.arm.com/products/architecture/cpu-architecture/r-profile:
|
||||
The Armv7-R architecture implements a traditional Arm architecture with
|
||||
multiple modes and supports a Protected Memory System Architecture
|
||||
(PMSA) based on a Memory Protection Unit (MPU). It supports the Arm (32)
|
||||
and Thumb (T32) instruction sets.
|
||||
|
||||
config ARMV7_R_FP
|
||||
bool
|
||||
depends on ARMV7_R
|
||||
help
|
||||
This option signifies the use of an ARMv7-R processor
|
||||
implementation supporting the Floating-Point Extension.
|
||||
|
||||
config AARCH32_ARMV8_R
|
||||
bool
|
||||
select ATOMIC_OPERATIONS_BUILTIN
|
||||
help
|
||||
This option signifies the use of an ARMv8-R AArch32 processor
|
||||
implementation.
|
||||
|
||||
From https://developer.arm.com/products/architecture/cpu-architecture/r-profile:
|
||||
The Armv8-R architecture targets at the Real-time profile. It introduces
|
||||
virtualization at the highest security level while retaining the
|
||||
Protected Memory System Architecture (PMSA) based on a Memory Protection
|
||||
Unit (MPU). It supports the A32 and T32 instruction sets.
|
||||
|
||||
config ARMV7_EXCEPTION_STACK_SIZE
|
||||
int "Undefined Instruction and Abort stack size (in bytes)"
|
||||
default 256
|
||||
help
|
||||
This option specifies the size of the stack used by the undefined
|
||||
instruction and data abort exception handlers.
|
||||
|
||||
config ARMV7_FIQ_STACK_SIZE
|
||||
int "FIQ stack size (in bytes)"
|
||||
default 256
|
||||
help
|
||||
This option specifies the size of the stack used by the FIQ handler.
|
||||
|
||||
config ARMV7_SVC_STACK_SIZE
|
||||
int "SVC stack size (in bytes)"
|
||||
default 512
|
||||
help
|
||||
This option specifies the size of the stack used by the SVC handler.
|
||||
|
||||
config ARMV7_SYS_STACK_SIZE
|
||||
int "SYS stack size (in bytes)"
|
||||
default 1024
|
||||
help
|
||||
This option specifies the size of the stack used by the system mode.
|
||||
|
||||
config RUNTIME_NMI
|
||||
default y
|
||||
|
||||
config GEN_ISR_TABLES
|
||||
default y
|
||||
|
||||
config GEN_IRQ_VECTOR_TABLE
|
||||
default n
|
||||
|
||||
config DISABLE_TCM_ECC
|
||||
bool "Disable ECC on TCM"
|
||||
help
|
||||
This option disables ECC checks on Tightly Coupled Memory.
|
||||
|
||||
config DCACHE_LINE_SIZE
|
||||
default 64 if CPU_CORTEX_R52
|
||||
default 32
|
||||
|
||||
config ICACHE_LINE_SIZE
|
||||
default 64 if CPU_CORTEX_R52
|
||||
default 32
|
||||
|
||||
endif # CPU_AARCH32_CORTEX_R
|
||||
@@ -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 */
|
||||
@@ -133,11 +129,6 @@ SECTION_SUBSEC_FUNC(TEXT, _HandlerModeExit, z_arm_int_exit)
|
||||
bl z_check_stack_sentinel
|
||||
#endif /* CONFIG_STACK_SENTINEL */
|
||||
|
||||
/* Disable nested interrupts while exiting, this should happens
|
||||
* before context switch also, to ensure interrupts are disabled.
|
||||
*/
|
||||
cpsid i
|
||||
|
||||
#ifdef CONFIG_PREEMPT_ENABLED
|
||||
/* Do not context switch if exiting a nested interrupt */
|
||||
ldr r3, =_kernel
|
||||
@@ -148,10 +139,13 @@ 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 */
|
||||
|
||||
/* Disable nested interrupts while exiting */
|
||||
cpsid i
|
||||
|
||||
/* Decrement interrupt nesting count */
|
||||
ldr r2, =_kernel
|
||||
ldr r0, [r2, #_kernel_offset_to_nested]
|
||||
@@ -231,12 +225,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
|
||||
292
arch/arm/core/aarch32/cortex_a_r/fault.c
Normal file
292
arch/arm/core/aarch32/cortex_a_r/fault.c
Normal file
@@ -0,0 +1,292 @@
|
||||
/*
|
||||
* Copyright (c) 2020 Stephanos Ioannidis <root@stephanos.io>
|
||||
* Copyright (c) 2018 Lexmark International, Inc.
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
#include <zephyr/kernel.h>
|
||||
#include <kernel_internal.h>
|
||||
#include <zephyr/exc_handle.h>
|
||||
#include <zephyr/logging/log.h>
|
||||
LOG_MODULE_DECLARE(os, CONFIG_KERNEL_LOG_LEVEL);
|
||||
|
||||
#define FAULT_DUMP_VERBOSE (CONFIG_FAULT_DUMP == 2)
|
||||
|
||||
#if FAULT_DUMP_VERBOSE
|
||||
static const char *get_dbgdscr_moe_string(uint32_t moe)
|
||||
{
|
||||
switch (moe) {
|
||||
case DBGDSCR_MOE_HALT_REQUEST:
|
||||
return "Halt Request";
|
||||
case DBGDSCR_MOE_BREAKPOINT:
|
||||
return "Breakpoint";
|
||||
case DBGDSCR_MOE_ASYNC_WATCHPOINT:
|
||||
return "Asynchronous Watchpoint";
|
||||
case DBGDSCR_MOE_BKPT_INSTRUCTION:
|
||||
return "BKPT Instruction";
|
||||
case DBGDSCR_MOE_EXT_DEBUG_REQUEST:
|
||||
return "External Debug Request";
|
||||
case DBGDSCR_MOE_VECTOR_CATCH:
|
||||
return "Vector Catch";
|
||||
case DBGDSCR_MOE_OS_UNLOCK_CATCH:
|
||||
return "OS Unlock Catch";
|
||||
case DBGDSCR_MOE_SYNC_WATCHPOINT:
|
||||
return "Synchronous Watchpoint";
|
||||
default:
|
||||
return "Unknown";
|
||||
}
|
||||
}
|
||||
|
||||
static void dump_debug_event(void)
|
||||
{
|
||||
/* Read and parse debug mode of entry */
|
||||
uint32_t dbgdscr = __get_DBGDSCR();
|
||||
uint32_t moe = (dbgdscr & DBGDSCR_MOE_Msk) >> DBGDSCR_MOE_Pos;
|
||||
|
||||
/* Print debug event information */
|
||||
LOG_ERR("Debug Event (%s)", get_dbgdscr_moe_string(moe));
|
||||
}
|
||||
|
||||
static void dump_fault(uint32_t status, uint32_t addr)
|
||||
{
|
||||
/*
|
||||
* 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.
|
||||
*/
|
||||
switch (status) {
|
||||
case FSR_FS_ALIGNMENT_FAULT:
|
||||
LOG_ERR("Alignment Fault @ 0x%08x", addr);
|
||||
break;
|
||||
case FSR_FS_BACKGROUND_FAULT:
|
||||
LOG_ERR("Background Fault @ 0x%08x", addr);
|
||||
break;
|
||||
case FSR_FS_PERMISSION_FAULT:
|
||||
LOG_ERR("Permission Fault @ 0x%08x", addr);
|
||||
break;
|
||||
case FSR_FS_SYNC_EXTERNAL_ABORT:
|
||||
LOG_ERR("Synchronous External Abort @ 0x%08x", addr);
|
||||
break;
|
||||
case FSR_FS_ASYNC_EXTERNAL_ABORT:
|
||||
LOG_ERR("Asynchronous External Abort");
|
||||
break;
|
||||
case FSR_FS_SYNC_PARITY_ERROR:
|
||||
LOG_ERR("Synchronous Parity/ECC Error @ 0x%08x", addr);
|
||||
break;
|
||||
case FSR_FS_ASYNC_PARITY_ERROR:
|
||||
LOG_ERR("Asynchronous Parity/ECC Error");
|
||||
break;
|
||||
case FSR_FS_DEBUG_EVENT:
|
||||
dump_debug_event();
|
||||
break;
|
||||
default:
|
||||
LOG_ERR("Unknown (%u)", status);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(CONFIG_FPU_SHARING)
|
||||
/**
|
||||
* @brief FPU undefined instruction fault handler
|
||||
*
|
||||
* @return Returns true if the FPU is already enabled
|
||||
* implying a true undefined instruction
|
||||
* Returns false if the FPU was disabled
|
||||
*/
|
||||
bool z_arm_fault_undef_instruction_fp(void)
|
||||
{
|
||||
/*
|
||||
* Assume this is a floating point instruction that faulted because
|
||||
* the FP unit was disabled. Enable the FP unit and try again. If
|
||||
* the FP was already enabled then this was an actual undefined
|
||||
* instruction.
|
||||
*/
|
||||
if (__get_FPEXC() & FPEXC_EN)
|
||||
return true;
|
||||
|
||||
__set_FPEXC(FPEXC_EN);
|
||||
|
||||
if (_kernel.cpus[0].nested > 1) {
|
||||
/*
|
||||
* If the nested count is greater than 1, the undefined
|
||||
* instruction exception came from an irq/svc context. (The
|
||||
* irq/svc handler would have the nested count at 1 and then
|
||||
* the undef exception would increment it to 2).
|
||||
*/
|
||||
struct __fpu_sf *spill_esf =
|
||||
(struct __fpu_sf *)_kernel.cpus[0].fp_ctx;
|
||||
|
||||
if (spill_esf == NULL)
|
||||
return false;
|
||||
|
||||
_kernel.cpus[0].fp_ctx = NULL;
|
||||
|
||||
/*
|
||||
* If the nested count is 2 and the current thread has used the
|
||||
* VFP (whether or not it was actually using the VFP before the
|
||||
* current exception) OR if the nested count is greater than 2
|
||||
* and the VFP was enabled on the irq/svc entrance for the
|
||||
* saved exception stack frame, then save the floating point
|
||||
* context because it is about to be overwritten.
|
||||
*/
|
||||
if (((_kernel.cpus[0].nested == 2)
|
||||
&& (_current->base.user_options & K_FP_REGS))
|
||||
|| ((_kernel.cpus[0].nested > 2)
|
||||
&& (spill_esf->undefined & FPEXC_EN))) {
|
||||
/*
|
||||
* Spill VFP registers to specified exception stack
|
||||
* frame
|
||||
*/
|
||||
spill_esf->undefined |= FPEXC_EN;
|
||||
spill_esf->fpscr = __get_FPSCR();
|
||||
__asm__ volatile (
|
||||
"vstmia %0, {s0-s15};\n"
|
||||
: : "r" (&spill_esf->s[0])
|
||||
: "memory"
|
||||
);
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
* If the nested count is one, a thread was the faulting
|
||||
* context. Just flag that this thread uses the VFP. This
|
||||
* means that a thread that uses the VFP does not have to,
|
||||
* but should, set K_FP_REGS on thread creation.
|
||||
*/
|
||||
_current->base.user_options |= K_FP_REGS;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Undefined instruction fault handler
|
||||
*
|
||||
* @return Returns true if the fault is fatal
|
||||
*/
|
||||
bool z_arm_fault_undef_instruction(z_arch_esf_t *esf)
|
||||
{
|
||||
#if defined(CONFIG_FPU_SHARING)
|
||||
/*
|
||||
* This is a true undefined instruction and we will be crashing
|
||||
* so save away the VFP registers.
|
||||
*/
|
||||
esf->fpu.undefined = __get_FPEXC();
|
||||
esf->fpu.fpscr = __get_FPSCR();
|
||||
__asm__ volatile (
|
||||
"vstmia %0, {s0-s15};\n"
|
||||
: : "r" (&esf->fpu.s[0])
|
||||
: "memory"
|
||||
);
|
||||
#endif
|
||||
|
||||
/* Print fault information */
|
||||
LOG_ERR("***** UNDEFINED INSTRUCTION ABORT *****");
|
||||
|
||||
/* Invoke kernel fatal exception handler */
|
||||
z_arm_fatal_error(K_ERR_CPU_EXCEPTION, esf);
|
||||
|
||||
/* All undefined instructions are treated as fatal for now */
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Prefetch abort fault handler
|
||||
*
|
||||
* @return Returns true if the fault is fatal
|
||||
*/
|
||||
bool z_arm_fault_prefetch(z_arch_esf_t *esf)
|
||||
{
|
||||
/* Read and parse Instruction Fault Status Register (IFSR) */
|
||||
uint32_t ifsr = __get_IFSR();
|
||||
uint32_t fs = ((ifsr & IFSR_FS1_Msk) >> 6) | (ifsr & IFSR_FS0_Msk);
|
||||
|
||||
/* Read Instruction Fault Address Register (IFAR) */
|
||||
uint32_t ifar = __get_IFAR();
|
||||
|
||||
/* Print fault information*/
|
||||
LOG_ERR("***** PREFETCH ABORT *****");
|
||||
if (FAULT_DUMP_VERBOSE) {
|
||||
dump_fault(fs, ifar);
|
||||
}
|
||||
|
||||
/* Invoke kernel fatal exception handler */
|
||||
z_arm_fatal_error(K_ERR_CPU_EXCEPTION, esf);
|
||||
|
||||
/* All prefetch aborts are treated as fatal for now */
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_USERSPACE
|
||||
Z_EXC_DECLARE(z_arm_user_string_nlen);
|
||||
|
||||
static const struct z_exc_handle exceptions[] = {
|
||||
Z_EXC_HANDLE(z_arm_user_string_nlen)
|
||||
};
|
||||
|
||||
/* Perform an assessment whether an MPU fault shall be
|
||||
* treated as recoverable.
|
||||
*
|
||||
* @return true if error is recoverable, otherwise return false.
|
||||
*/
|
||||
static bool memory_fault_recoverable(z_arch_esf_t *esf)
|
||||
{
|
||||
for (int i = 0; i < ARRAY_SIZE(exceptions); i++) {
|
||||
/* Mask out instruction mode */
|
||||
uint32_t start = (uint32_t)exceptions[i].start & ~0x1U;
|
||||
uint32_t end = (uint32_t)exceptions[i].end & ~0x1U;
|
||||
|
||||
if (esf->basic.pc >= start && esf->basic.pc < end) {
|
||||
esf->basic.pc = (uint32_t)(exceptions[i].fixup);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* @brief Data abort fault handler
|
||||
*
|
||||
* @return Returns true if the fault is fatal
|
||||
*/
|
||||
bool z_arm_fault_data(z_arch_esf_t *esf)
|
||||
{
|
||||
/* Read and parse Data Fault Status Register (DFSR) */
|
||||
uint32_t dfsr = __get_DFSR();
|
||||
uint32_t fs = ((dfsr & DFSR_FS1_Msk) >> 6) | (dfsr & DFSR_FS0_Msk);
|
||||
|
||||
/* Read Data Fault Address Register (DFAR) */
|
||||
uint32_t dfar = __get_DFAR();
|
||||
|
||||
#if defined(CONFIG_USERSPACE)
|
||||
if ((fs == FSR_FS_BACKGROUND_FAULT)
|
||||
|| (fs == FSR_FS_PERMISSION_FAULT)) {
|
||||
if (memory_fault_recoverable(esf)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Print fault information*/
|
||||
LOG_ERR("***** DATA ABORT *****");
|
||||
if (FAULT_DUMP_VERBOSE) {
|
||||
dump_fault(fs, dfar);
|
||||
}
|
||||
|
||||
/* Invoke kernel fatal exception handler */
|
||||
z_arm_fatal_error(K_ERR_CPU_EXCEPTION, esf);
|
||||
|
||||
/* All data aborts are treated as fatal for now */
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Initialisation of fault handling
|
||||
*/
|
||||
void z_arm_fault_init(void)
|
||||
{
|
||||
/* Nothing to do for now */
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user