ch32v: Fix _reset_vector in non-small release modes. #863
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.
@Copper280z noticed that none of the examples worked when build in ReleaseSafe.
I took a look and noticed that the vector table started at 8 instead of 4:
vs.
Looks like it was because
_reset_vectorwas a function, the release mode was putting padding around it.I am not sure if there's a nicer way to avoid this, but I worked around it by emitting the assembly directly.
Strangely, I now get a error
I have no idea how this ever emitted a working binary at all.
That said, I came up with a different approach, where instead of trying to get the vector table to start at 4, I just adjust mtvec.base to configure the interrupts to start wherever that table lands.