Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

arch: deprecate z_arch_esf_t with struct arch_esf, introduce an arch-agnostic exception.h for it #73593

Merged
merged 9 commits into from
Jun 4, 2024

Conversation

ycsin
Copy link
Member

@ycsin ycsin commented May 31, 2024

@ycsin ycsin requested review from npitre and andyross June 4, 2024 04:54
@ycsin
Copy link
Member Author

ycsin commented Jun 4, 2024

Rebased & updated the git revision of sof to point at the hash after the merge of zephyrproject-rtos/sof#46

doc/releases/migration-guide-3.7.rst Show resolved Hide resolved
include/zephyr/arch/exception.h Outdated Show resolved Hide resolved
ycsin added 9 commits June 4, 2024 16:26
Create `zephyr/include/zephyr/arch/exception.h`, which will
redirect to the corrent architecture-specific exception header
based on Kconfig.

Some of the architectures define their esf struct in
architecture-specific `arch.h`, refactor them out into a
separate `exception.h`.

Signed-off-by: Yong Cong Sin <ycsin@meta.com>
`fatal.h` has 2 functions that use the `z_arch_esf_t` type.

Include `exception.h`, which should have the `z_arch_esf_t`
defined.

Signed-off-by: Yong Cong Sin <ycsin@meta.com>
Rename every architecture's esf struct to `struct esf`.

Signed-off-by: Yong Cong Sin <ycsin@meta.com>
Make `struct arch_esf` compulsory for all architectures by
declaring it in the `arch_interface.h` header.

After this commit, the named struct `z_arch_esf_t` is only used
internally to generate offsets, and is slated to be removed
from the `arch_interface.h` header in the future.

Signed-off-by: Yong Cong Sin <ycsin@meta.com>
Created `GEN_OFFSET_STRUCT` & `GEN_NAMED_OFFSET_STRUCT` that
works for `struct`, and remove the use of `z_arch_esf_t`
completely.

Signed-off-by: Yong Cong Sin <ycsin@meta.com>
Add a note about the introduction of `struct arch_esf` and the
deprecation of `z_arch_esf_t`.

Signed-off-by: Yong Cong Sin <ycsin@meta.com>
Update the git revision of the `sof` module.

Signed-off-by: Yong Cong Sin <ycsin@meta.com>
x86 32bit defines `CONFIG_X86` while its 64bit counterpart
defines an additional `CONFIG_X86_64`, by reordering the
include order we can make it look a bit cleaner.

Signed-off-by: Yong Cong Sin <ycsin@meta.com>
Zephyr support out-of-tree architectures so we shouldn't
throw error for archs not listed here.

Signed-off-by: Yong Cong Sin <ycsin@meta.com>
@ycsin ycsin added this to the v3.7.0 milestone Jun 4, 2024
@carlescufi carlescufi removed the Breaking API Change Breaking changes to stable, public APIs label Jun 4, 2024
@ycsin
Copy link
Member Author

ycsin commented Jun 4, 2024

ping @andyross could you please take another look? Thanks

@MaureenHelm MaureenHelm merged commit a2b0c2c into zephyrproject-rtos:main Jun 4, 2024
34 checks passed
@ycsin ycsin deleted the pr/arch_esf branch June 5, 2024 00:52
@Thalley
Copy link
Collaborator

Thalley commented Jun 5, 2024

Thanks for the quick fix @ycsin

One thing I can see today is that now zephyr/include/zephyr/arch/arm/cortex_m/exception.h may be included before sys_define_gpr_with_alias has been defined.

This effectively means that the new generic exception.h header cannot be included for ARM before zephyr/include/zephyr/arch/arm/arch.h has been included, as zephyr/include/zephyr/arch/arm/arch.h defines the sys_define_gpr_with_alias macro.

I almost expect that if we fix the above, yet another include issue will appear. These type of include issues will continue to appear unless verified by a tool (attempting to fix or verify manually will be nearly impossible).

@Thalley
Copy link
Collaborator

Thalley commented Jun 11, 2024

Thanks for the quick fix @ycsin

One thing I can see today is that now zephyr/include/zephyr/arch/arm/cortex_m/exception.h may be included before sys_define_gpr_with_alias has been defined.

This effectively means that the new generic exception.h header cannot be included for ARM before zephyr/include/zephyr/arch/arm/arch.h has been included, as zephyr/include/zephyr/arch/arm/arch.h defines the sys_define_gpr_with_alias macro.

I almost expect that if we fix the above, yet another include issue will appear. These type of include issues will continue to appear unless verified by a tool (attempting to fix or verify manually will be nearly impossible).

@ycsin are you looking into this? Otherwise I'll go ahead and create another issue :)

If you are not already, you may want to use a tool like the clang includer-cleaner or clangd to catch future issues.

@ycsin
Copy link
Member Author

ycsin commented Jun 11, 2024

@ycsin are you looking into this? Otherwise I'll go ahead and create another issue :)

Not looking into this, please feel free to create another issue

@Thalley
Copy link
Collaborator

Thalley commented Jun 11, 2024

@ycsin are you looking into this? Otherwise I'll go ahead and create another issue :)

Not looking into this, please feel free to create another issue

The fix for this was quite simple, so decided to take a look at fixing it myself: #74106

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area: Architectures area: Kernel area: native port Host native arch port (native_sim) area: NIOS2 NIOS2 Architecture area: SPARC SPARC Architecture area: X86 x86 Architecture (32-bit) manifest manifest-sof
Projects
None yet
10 participants