Skip to content

Conversation

@wernerlewis
Copy link
Contributor

@wernerlewis wernerlewis commented May 17, 2021

Summary of changes

Update GCC except.S to support ARM compiler, and use this source in CMake.
Update CMake to use GCC CMSIS assembly with both GCC_ARM and ARMC6.

When legacy ASM is compiled with ARM Compiler 6, armasm is used, which has
no support for Cortex-M55. GNU syntax is used by armclang assembler, so the GCC
version of except.S is updated to support the ARM toolchain, and this is used by
CMake for both ARM and GCC_ARM. The CMSIS GCC assembly is also used now
with ARMC6.

Fixes #14633

Impact of changes

Migration actions required

Documentation

None

Pull request type

[x] Patch update (Bug fix / Target update / Docs update / Test update / Refactor)
[] Feature update (New feature / Functionality change / New API)
[] Major update (Breaking change E.g. Return code change / API behaviour change)

Test results

[] No Tests required for this change (E.g docs only update)
[x] Covered by existing mbed-os tests (Greentea or Unittest)
[] Tests / results supplied as part of this PR

Reviewers


@ciarmcom ciarmcom added the release-type: patch Indentifies a PR as containing just a patch label May 17, 2021
@ciarmcom ciarmcom requested a review from a team May 17, 2021 12:00
@ciarmcom
Copy link
Member

@wernerlewis, thank you for your changes.
@ARMmbed/mbed-os-maintainers please review.

0xc0170
0xc0170 previously approved these changes May 17, 2021
@mergify mergify bot dismissed 0xc0170’s stale review May 17, 2021 15:09

Pull request has been modified.

@wernerlewis wernerlewis changed the title Update GCC except.S to support ARM C6 toolchain Update GCC except.S to support ARMC6 and use GCC assembly with ARM toolchain in CMake May 17, 2021
@ciarmcom ciarmcom requested a review from a team May 17, 2021 15:30
@ciarmcom
Copy link
Member

@wernerlewis, thank you for your changes.
@ARMmbed/mbed-os-maintainers please review.

0xc0170
0xc0170 previously approved these changes May 18, 2021
@mergify mergify bot added needs: CI and removed needs: review labels May 18, 2021
@0xc0170
Copy link
Contributor

0xc0170 commented May 18, 2021

Ci started

@mergify mergify bot added needs: work and removed needs: CI labels May 18, 2021
@mbed-ci
Copy link

mbed-ci commented May 18, 2021

Jenkins CI Test : ❌ FAILED

Build Number: 1 | 🔒 Jenkins CI Job | 🌐 Logs & Artifacts

CLICK for Detailed Summary

jobs Status
jenkins-ci/mbed-os-ci_unittests ✔️
jenkins-ci/mbed-os-ci_cmake-cloud-example-ARM ✔️
jenkins-ci/mbed-os-ci_build-cloud-example-ARM ✔️
jenkins-ci/mbed-os-ci_build-cloud-example-GCC_ARM ✔️
jenkins-ci/mbed-os-ci_cmake-cloud-example-GCC_ARM ✔️
jenkins-ci/mbed-os-ci_build-greentea-ARM ✔️
jenkins-ci/mbed-os-ci_cmake-example-GCC_ARM ✔️
jenkins-ci/mbed-os-ci_cmake-example-ARM
jenkins-ci/mbed-os-ci_build-greentea-GCC_ARM ✔️
jenkins-ci/mbed-os-ci_build-example-GCC_ARM ✔️
jenkins-ci/mbed-os-ci_build-example-ARM ✔️

@mergify mergify bot dismissed 0xc0170’s stale review May 18, 2021 14:43

Pull request has been modified.

LDMIA R0!,{R4-R7} // Restore R4..R7

MOVS R0,#~0xFFFFFFFD
MOVS R0,#2 // Binary complement of 0xFFFFFFFD
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since this file is for M0, does it mean we've decided to use GNU-style assembly for all cores and not just M55? If this is the case, could we remove all the legacy armasm assembly files and rename/remove the intermediate path TOOLCHAIN_GCC?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The legacy tools only use armasm for compiling assembly, so the files are needed to avoid breaking those tools.

Copy link
Contributor

@LDong-Arm LDong-Arm May 18, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The legacy tools only use armasm for compiling assembly, so the files are needed to avoid breaking those tools.

Fair enough. We should've switched to armclang a long time ago with the legacy tools, but now it's frozen so there's not much we could do...

0xc0170
0xc0170 previously approved these changes May 19, 2021
@ciarmcom ciarmcom added the stale Stale Pull Request label May 20, 2021
@ciarmcom
Copy link
Member

This pull request has automatically been marked as stale because it has had no recent activity. @ARMmbed/mbed-os-maintainers, please start CI to get the PR merged.

@0xc0170 0xc0170 removed the stale Stale Pull Request label May 20, 2021
@0xc0170
Copy link
Contributor

0xc0170 commented May 20, 2021

CI started

@ciarmcom ciarmcom added the stale Stale Pull Request label May 20, 2021
@mbed-ci
Copy link

mbed-ci commented May 20, 2021

Jenkins CI Test : ✔️ SUCCESS

Build Number: 2 | 🔒 Jenkins CI Job | 🌐 Logs & Artifacts

CLICK for Detailed Summary

jobs Status
jenkins-ci/mbed-os-ci_build-cloud-example-ARM ✔️
jenkins-ci/mbed-os-ci_unittests ✔️
jenkins-ci/mbed-os-ci_cmake-cloud-example-ARM ✔️
jenkins-ci/mbed-os-ci_build-cloud-example-GCC_ARM ✔️
jenkins-ci/mbed-os-ci_cmake-cloud-example-GCC_ARM ✔️
jenkins-ci/mbed-os-ci_build-greentea-ARM ✔️
jenkins-ci/mbed-os-ci_build-example-GCC_ARM ✔️
jenkins-ci/mbed-os-ci_cmake-example-GCC_ARM ✔️
jenkins-ci/mbed-os-ci_cmake-example-ARM ✔️
jenkins-ci/mbed-os-ci_build-greentea-GCC_ARM ✔️
jenkins-ci/mbed-os-ci_build-example-ARM ✔️
jenkins-ci/mbed-os-ci_greentea-test ✔️

@0xc0170 0xc0170 removed the stale Stale Pull Request label May 21, 2021
@mergify mergify bot added the needs: work label May 24, 2021
@mergify
Copy link

mergify bot commented May 24, 2021

This PR cannot be merged due to conflicts. Please rebase to resolve them.

@adbridge
Copy link
Contributor

@wernerlewis looks like you have a conflict that needs addressing

ARM Compiler 6 supports GNU-style assembly with armclang. Instead of
relying on armasm with the legacy syntax, GCC except.S is updated so
that it can be used with ARM as well as GCC_ARM toolchains. CMake is
updated to use this version.
CMSIS provides both GNU and legacy ARM assembly files. Instead of using
armasm and legacy asm with ARM Compiler 6, CMakeLists is modified to
use the GNU format with both GCC_ARM and ARM C6.
@mergify mergify bot dismissed 0xc0170’s stale review May 24, 2021 12:58

Pull request has been modified.

@Patater
Copy link
Contributor

Patater commented May 25, 2021

CI started

@mbed-ci
Copy link

mbed-ci commented May 25, 2021

Jenkins CI Test : ✔️ SUCCESS

Build Number: 3 | 🔒 Jenkins CI Job | 🌐 Logs & Artifacts

CLICK for Detailed Summary

jobs Status
jenkins-ci/mbed-os-ci_unittests ✔️
jenkins-ci/mbed-os-ci_cmake-cloud-example-ARM ✔️
jenkins-ci/mbed-os-ci_build-cloud-example-ARM ✔️
jenkins-ci/mbed-os-ci_cmake-cloud-example-GCC_ARM ✔️
jenkins-ci/mbed-os-ci_build-cloud-example-GCC_ARM ✔️
jenkins-ci/mbed-os-ci_build-greentea-ARM ✔️
jenkins-ci/mbed-os-ci_build-greentea-GCC_ARM ✔️
jenkins-ci/mbed-os-ci_cmake-example-ARM ✔️
jenkins-ci/mbed-os-ci_cmake-example-GCC_ARM ✔️
jenkins-ci/mbed-os-ci_build-example-GCC_ARM ✔️
jenkins-ci/mbed-os-ci_build-example-ARM ✔️
jenkins-ci/mbed-os-ci_greentea-test ✔️

@Patater Patater merged commit 3dd9140 into ARMmbed:master May 27, 2021
@mergify mergify bot removed the ready for merge label May 27, 2021
@mbedmain mbedmain added release-version: 6.12.0 Release-pending and removed release-type: patch Indentifies a PR as containing just a patch Release-pending labels Jun 18, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ARMClang assembly files: use gcc versions (gnu syntax) instead of arm files

8 participants