cpu/esp: fix computation of coprocessor save area pointer in initial thread context #11461
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Contribution description
This PR fixes a problem that was figured out in issue #11443.
With commit 28d9599, the following change was introduced:
top_of_stack
isn't aligned down to the previous 16 byte aligned address. Furthermore,top_of_stack
as well asXT_CP_SIZE
are used unaligned incpu/esp_common/vendor/xtensa/portasm.S
in address computation for the coprocessor save area, .Aligning pointer
p
down to the previous 16 byte aligned address results in a wrong address of the coprocessor save area during the initialization of the thread context. This leads to wrong values and wrong positions of these values in the coprocessor save area in inital thread context.Since ESP8266 doesn't have a coprocessor, this bug affects only ESP32.
Testing procedure
The only known application suffering from this problem is
examples/lorawan
on one of the new LoRa32 board definitions in PR #11265 and #11418. Therefore, it is suggested to test this PR with one of these boards.Before the fix, the application hangs in function
semtech_loramac_init
and ends within a boot loop.With the fix, function
semtech_loramac_init
works and the application prints the message "Starting join procedure".Issues/PRs references
Fixes #11443