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

Update ARM_CRx_No_GIC port #1101

Merged
merged 10 commits into from
Jul 22, 2024

Conversation

kar-rahul-aws
Copy link
Member

Description

This PR makes the following improvements to the ARM_CRx_No_GIC port-

  1. Remove inline assembly and move all the assembly code to the portASM.S file.

  2. Add support for configUSE_TASK_FPU_SUPPORT -

    • When configUSE_TASK_FPU_SUPPORT is defined to 1, tasks are created without floating point context. Tasks that want to use floating point, need to call portTASK_USES_FLOATING_POINT(). This is the current behavior.
    • When configUSE_TASK_FPU_SUPPORT is defined to 2, each task is created with a floating point context.

    If left undefined, configUSE_TASK_FPU_SUPPORT defaults to 1 for backward compatibility.

  3. The application writer can now implement vApplicationSVCHandler to handle the SVC calls raised within the application. SVC 0 is used for the yield kernel operation and the application can use all the SVC calls other than 0.

Test Steps

Tested using register tests and standard full demo tests on the TI RM57 board.

Checklist:

  • I have tested my changes. No regression in existing tests.
  • [NA] I have modified and/or added unit-tests to cover the code changes in this Pull Request.

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

@kar-rahul-aws kar-rahul-aws requested a review from a team as a code owner July 12, 2024 08:35
@kar-rahul-aws kar-rahul-aws changed the title Update arm c rx no gic port safety Update ARM_CRx_No_GIC port Jul 12, 2024
aggarg
aggarg previously approved these changes Jul 12, 2024
aggarg
aggarg previously approved these changes Jul 15, 2024
Comment on lines 331 to 334
/* Write to the EOI register. */
LDR r0, ulICCEOIRConst
LDR r0, =ulICCEOIR
LDR r2, [r0]
STR r0, [r2]
Copy link
Member

Choose a reason for hiding this comment

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

I know that this is code that is already here, but this makes an assumption that the MCU being used has a memory-mapped EOI register, the ARM_CRx_MPU:FreeRTOS_IRQ_Handler removed this code, I'd recommend doing the same here.

Copy link
Member

Choose a reason for hiding this comment

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

The suggestion is good but this may break existing applications that rely on this behavior. I'd keep it here for backward compatibility.

@aggarg aggarg merged commit 5588ae6 into FreeRTOS:main Jul 22, 2024
15 checks passed
@aggarg aggarg deleted the update_ARM_CRx_No_GIC_port_Safety branch July 22, 2024 15:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants