<feed xmlns='http://www.w3.org/2005/Atom'>
<title>suspect-devices/circuitpython/py/nlrthumb.c, branch main</title>
<subtitle>CircuitPython - a Python implementation for teaching coding with microcontrollers</subtitle>
<id>https://git.suspectdevices.com/suspect-devices/circuitpython/atom?h=main</id>
<link rel='self' href='https://git.suspectdevices.com/suspect-devices/circuitpython/atom?h=main'/>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/'/>
<updated>2021-03-15T13:57:36+00:00</updated>
<entry>
<title>run code formatting script</title>
<updated>2021-03-15T13:57:36+00:00</updated>
<author>
<name>microDev</name>
<email>70126934+microDev1@users.noreply.github.com</email>
</author>
<published>2021-03-15T13:57:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=a52eb88031620a81521b937f2a0651dbac2bb350'/>
<id>urn:sha1:a52eb88031620a81521b937f2a0651dbac2bb350</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add license to some obvious files.</title>
<updated>2020-07-06T18:16:25+00:00</updated>
<author>
<name>Diego Elio Pettenò</name>
<email>flameeyes@flameeyes.com</email>
</author>
<published>2020-06-03T22:40:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=34b4993d63a6b576f29d624385c681f679b4124c'/>
<id>urn:sha1:34b4993d63a6b576f29d624385c681f679b4124c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>py/nlrthumb: Save and restore VFP registers s16-s21 when CPU has them.</title>
<updated>2019-12-12T19:10:10+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2019-06-17T13:19:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=767d47dd6025e8046b03e6b307fd0ba6a81cf504'/>
<id>urn:sha1:767d47dd6025e8046b03e6b307fd0ba6a81cf504</id>
<content type='text'>
These s16-s21 registers are used by gcc so need to be saved.  Future
versions of gcc (beyond v9.1.0), or other compilers, may eventually need
additional registers saved/restored.

See issue #4844.
</content>
</entry>
<entry>
<title>py: Introduce MP_UNREACHABLE macro to annotate unreachable code.</title>
<updated>2019-12-12T19:01:39+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2019-08-19T05:50:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=63046d800d64081a4f7756476f5249179179ff5e'/>
<id>urn:sha1:63046d800d64081a4f7756476f5249179179ff5e</id>
<content type='text'>
And use it to replace the same pattern at the end of nlrthumb.c:nlr_jump.
</content>
</entry>
<entry>
<title>WIP: after merge; before testing</title>
<updated>2018-07-11T20:45:30+00:00</updated>
<author>
<name>Dan Halbert</name>
<email>halbert@halwitz.org</email>
</author>
<published>2018-07-11T20:45:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=7c219600a246d8956d0b23ea3f5d125a820e6b6a'/>
<id>urn:sha1:7c219600a246d8956d0b23ea3f5d125a820e6b6a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>py/nlrthumb: Fix Clang support wrt use of "return 0".</title>
<updated>2018-04-27T05:10:42+00:00</updated>
<author>
<name>Ayke van Laethem</name>
<email>aykevanlaethem@gmail.com</email>
</author>
<published>2018-04-24T15:47:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=deaa46aa66230071d355c0ffd004ccf0cbefd8b9'/>
<id>urn:sha1:deaa46aa66230071d355c0ffd004ccf0cbefd8b9</id>
<content type='text'>
Clang defines __GNUC__ so we have to check for it specifically.
</content>
</entry>
<entry>
<title>py/nlrthumb: Do not mark nlr_push as not returning anything.</title>
<updated>2018-02-18T00:35:27+00:00</updated>
<author>
<name>Ayke van Laethem</name>
<email>aykevanlaethem@gmail.com</email>
</author>
<published>2018-02-13T21:00:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=5591bd237a69a3a1a6ac03cb1dc9edcde835f708'/>
<id>urn:sha1:5591bd237a69a3a1a6ac03cb1dc9edcde835f708</id>
<content type='text'>
By adding __builtin_unreachable() at the end of nlr_push, we're
essentially telling the compiler that this function will never return.
When GCC LTO is in use, this means that any time nlr_push() is called
(which is often), the compiler thinks this function will never return
and thus eliminates all code following the call.

Note: I've added a 'return 0' for older GCC versions like 4.6 which
complain about not returning anything (which doesn't make sense in a
naked function). Newer GCC versions (tested 4.8, 5.4 and some others)
don't complain about this.
</content>
</entry>
<entry>
<title>Avoid gcc 7.2.1 compiler issues in nlr_push() (#506)</title>
<updated>2018-01-02T21:41:34+00:00</updated>
<author>
<name>Dan Halbert</name>
<email>halbert@halwitz.org</email>
</author>
<published>2018-01-02T21:41:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=ce81c8dda9686d3cd78d9c5383b6982c148ac7ec'/>
<id>urn:sha1:ce81c8dda9686d3cd78d9c5383b6982c148ac7ec</id>
<content type='text'>
Avoid gcc 7.2.1 compiler issues in nlr_push()
</content>
</entry>
<entry>
<title>py/nlr: Factor out common NLR code to macro and generic funcs in nlr.c.</title>
<updated>2017-12-28T05:46:30+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2017-12-28T05:46:30+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=b25f92160b318a096c516c430afde5472a944c19'/>
<id>urn:sha1:b25f92160b318a096c516c430afde5472a944c19</id>
<content type='text'>
Each NLR implementation (Thumb, x86, x64, xtensa, setjmp) duplicates a lot
of the NLR code, specifically that dealing with pushing and popping the NLR
pointer to maintain the linked-list of NLR buffers.  This patch factors all
of that code out of the specific implementations into generic functions in
nlr.c, along with a helper macro in nlr.h.  This eliminates duplicated
code.
</content>
</entry>
<entry>
<title>py/nlr: Clean up selection and config of NLR implementation.</title>
<updated>2017-12-28T05:18:39+00:00</updated>
<author>
<name>Damien George</name>
<email>damien.p.george@gmail.com</email>
</author>
<published>2017-12-28T05:18:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.suspectdevices.com/suspect-devices/circuitpython/commit/?id=5bf8e85fc828974199d469db711aa2f9649c467b'/>
<id>urn:sha1:5bf8e85fc828974199d469db711aa2f9649c467b</id>
<content type='text'>
If MICROPY_NLR_SETJMP is not enabled and the machine is auto-detected then
nlr.h now defines some convenience macros for the individual NLR
implementations to use (eg MICROPY_NLR_THUMB).  This keeps nlr.h and the
implementation in sync, and also makes the nlr_buf_t struct easier to read.
</content>
</entry>
</feed>
