mirror of
https://github.com/logicog/RTLPlayground.git
synced 2026-10-29 17:54:14 +08:00
build: carry the sdas fix for SDCC bug 4070
The 8051 assembler sign-extends every value to 24 bits, so the top byte of a __sfr32 address list like 0xa4a5a6a7 comes out as 0xff. The patch keeps 32-bit arithmetic while leaving the 24-bit T line addresses alone, so the relocations are unchanged. Proposed upstream in the bug thread. With it SFR_DATA_U32 can be used again, which saves about 240 bytes of code in REG_SET.
This commit is contained in:
1 parent
0181276ec6
commit
9cc859ad30
2 files changed
+133
-1
No files matched your search
@@ -65,7 +65,9 @@ The first `make` downloads SDCC 4.6.0, applies the fixes in `sdcc/` and builds i
|
||||
`toolchain/`, which takes a few minutes. Later builds reuse it. The released SDCC 4.5.0
|
||||
and 4.6.0 miscompile parts of this code, see [SDCC bug #4153](https://sourceforge.net/p/sdcc/bugs/4153/)
|
||||
and [#4154](https://sourceforge.net/p/sdcc/bugs/4154/); both fixes are in SDCC trunk since
|
||||
r17039. To use an SDCC you installed yourself instead, run `make CC=sdcc ...`.
|
||||
r17039. The third patch is for [#4070](https://sourceforge.net/p/sdcc/bugs/4070/), where the
|
||||
assembler drops the top byte of a `__sfr32` address list; it is proposed upstream and lets
|
||||
`SFR_DATA_U32` be used again. To use an SDCC you installed yourself instead, run `make CC=sdcc ...`.
|
||||
|
||||
<details>
|
||||
<summary>If using Docker (click to expand)</summary>
|
||||
|
||||
Reference in new issue
Block a user