Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
M
micropython
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container registry
Model registry
Operate
Environments
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
This is an archived project. Repository and other project resources are read-only.
Show more breadcrumbs
card10
micropython
Commits
22521ea9
Commit
22521ea9
authored
9 years ago
by
Damien George
Browse files
Options
Downloads
Patches
Plain Diff
py/nlrthumb: Make compatible with Cortex-M0 (ARMv6M instr set).
parent
04353cc8
Branches
gohu
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
py/nlrthumb.S
+45
-7
45 additions, 7 deletions
py/nlrthumb.S
with
45 additions
and
7 deletions
py/nlrthumb.S
+
45
−
7
View file @
22521ea9
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
*
*
*
The
MIT
License
(
MIT
)
*
The
MIT
License
(
MIT
)
*
*
*
Copyright
(
c
)
2013
,
201
4
Damien
P
.
George
*
Copyright
(
c
)
2013
-
201
5
Damien
P
.
George
*
*
*
Permission
is
hereby
granted
,
free
of
charge
,
to
any
person
obtaining
a
copy
*
Permission
is
hereby
granted
,
free
of
charge
,
to
any
person
obtaining
a
copy
*
of
this
software
and
associated
documentation
files
(
the
"Software"
),
to
deal
*
of
this
software
and
associated
documentation
files
(
the
"Software"
),
to
deal
...
@@ -51,16 +51,32 @@
...
@@ -51,16 +51,32 @@
#endif
#endif
.
type
nlr_push
,
%
function
.
type
nlr_push
,
%
function
nlr_push
:
nlr_push
:
str
lr
,
[
r0
,
#
8
]
@
store
lr
into
nlr_buf
str
r4
,
[
r0
,
#
12
]
@
store
r4
into
nlr_buf
str
r4
,
[
r0
,
#
12
]
@
store
r4
into
nlr_buf
str
r5
,
[
r0
,
#
16
]
@
store
r5
into
nlr_buf
str
r5
,
[
r0
,
#
16
]
@
store
r5
into
nlr_buf
str
r6
,
[
r0
,
#
20
]
@
store
r6
into
nlr_buf
str
r6
,
[
r0
,
#
20
]
@
store
r6
into
nlr_buf
str
r7
,
[
r0
,
#
24
]
@
store
r7
into
nlr_buf
str
r7
,
[
r0
,
#
24
]
@
store
r7
into
nlr_buf
#if defined(__ARM_ARCH_6M__)
mov
r1
,
r8
str
r1
,
[
r0
,
#
28
]
@
store
r8
into
nlr_buf
mov
r1
,
r9
str
r1
,
[
r0
,
#
32
]
@
store
r9
into
nlr_buf
mov
r1
,
r10
str
r1
,
[
r0
,
#
36
]
@
store
r10
into
nlr_buf
mov
r1
,
r11
str
r1
,
[
r0
,
#
40
]
@
store
r11
into
nlr_buf
mov
r1
,
r13
str
r1
,
[
r0
,
#
44
]
@
store
r13
=
sp
into
nlr_buf
mov
r1
,
lr
str
r1
,
[
r0
,
#
8
]
@
store
lr
into
nlr_buf
#else
str
r8
,
[
r0
,
#
28
]
@
store
r8
into
nlr_buf
str
r8
,
[
r0
,
#
28
]
@
store
r8
into
nlr_buf
str
r9
,
[
r0
,
#
32
]
@
store
r9
into
nlr_buf
str
r9
,
[
r0
,
#
32
]
@
store
r9
into
nlr_buf
str
r10
,
[
r0
,
#
36
]
@
store
r10
into
nlr_buf
str
r10
,
[
r0
,
#
36
]
@
store
r10
into
nlr_buf
str
r11
,
[
r0
,
#
40
]
@
store
r11
into
nlr_buf
str
r11
,
[
r0
,
#
40
]
@
store
r11
into
nlr_buf
str
r13
,
[
r0
,
#
44
]
@
store
r13
=
sp
into
nlr_buf
str
r13
,
[
r0
,
#
44
]
@
store
r13
=
sp
into
nlr_buf
str
lr
,
[
r0
,
#
8
]
@
store
lr
into
nlr_buf
#endif
ldr
r3
,
nlr_top_addr
@
load
addr
of
nlr_top
ldr
r3
,
nlr_top_addr
@
load
addr
of
nlr_top
ldr
r2
,
[
r3
]
@
load
nlr_top
ldr
r2
,
[
r3
]
@
load
nlr_top
...
@@ -69,9 +85,6 @@ nlr_push:
...
@@ -69,9 +85,6 @@ nlr_push:
movs
r0
,
#
0
@
return
0
,
normal
return
movs
r0
,
#
0
@
return
0
,
normal
return
bx
lr
@
return
bx
lr
@
return
.
align
2
nlr_top_addr
:
.
word
mp_state_ctx
+
NLR_TOP_OFFSET
.
size
nlr_push
,
.
-
nlr_push
.
size
nlr_push
,
.
-
nlr_push
/**************************************/
/**************************************/
...
@@ -104,24 +117,49 @@ nlr_jump:
...
@@ -104,24 +117,49 @@ nlr_jump:
ldr
r3
,
nlr_top_addr
@
load
addr
of
nlr_top
ldr
r3
,
nlr_top_addr
@
load
addr
of
nlr_top
ldr
r2
,
[
r3
]
@
load
nlr_top
ldr
r2
,
[
r3
]
@
load
nlr_top
cmp
r2
,
#
0
@
test
if
nlr_top
is
NULL
cmp
r2
,
#
0
@
test
if
nlr_top
is
NULL
#if defined(__ARM_ARCH_6M__)
bne
nlr_jump_non_null
@
if
nlr_top
is
NULL
,
transfer
control
to
nlr_jump_fail
bl
nlr_jump_fail
nlr_jump_non_null
:
#else
beq
nlr_jump_fail
@
if
nlr_top
is
NULL
,
transfer
control
to
nlr_jump_fail
beq
nlr_jump_fail
@
if
nlr_top
is
NULL
,
transfer
control
to
nlr_jump_fail
#endif
str
r0
,
[
r2
,
#
4
]
@
store
return
value
str
r0
,
[
r2
,
#
4
]
@
store
return
value
ldr
r0
,
[
r2
]
@
load
prev
nlr_buf
ldr
r0
,
[
r2
]
@
load
prev
nlr_buf
str
r0
,
[
r3
]
@
store
prev
nol_buf
into
nlr_top
(
to
unlink
list
)
str
r0
,
[
r3
]
@
store
prev
nol_buf
into
nlr_top
(
to
unlink
list
)
ldr
lr
,
[
r2
,
#
8
]
@
load
lr
from
nlr_buf
ldr
r4
,
[
r2
,
#
12
]
@
load
r4
from
nlr_buf
ldr
r4
,
[
r2
,
#
12
]
@
load
r4
from
nlr_buf
ldr
r5
,
[
r2
,
#
16
]
@
load
r5
from
nlr_buf
ldr
r5
,
[
r2
,
#
16
]
@
load
r5
from
nlr_buf
ldr
r6
,
[
r2
,
#
20
]
@
load
r6
from
nlr_buf
ldr
r6
,
[
r2
,
#
20
]
@
load
r6
from
nlr_buf
ldr
r7
,
[
r2
,
#
24
]
@
load
r7
from
nlr_buf
ldr
r7
,
[
r2
,
#
24
]
@
load
r7
from
nlr_buf
#if defined(__ARM_ARCH_6M__)
ldr
r1
,
[
r2
,
#
28
]
@
load
r8
from
nlr_buf
mov
r8
,
r1
ldr
r1
,
[
r2
,
#
32
]
@
load
r9
from
nlr_buf
mov
r9
,
r1
ldr
r1
,
[
r2
,
#
36
]
@
load
r10
from
nlr_buf
mov
r10
,
r1
ldr
r1
,
[
r2
,
#
40
]
@
load
r11
from
nlr_buf
mov
r11
,
r1
ldr
r1
,
[
r2
,
#
44
]
@
load
r13
=
sp
from
nlr_buf
mov
r13
,
r1
ldr
r1
,
[
r2
,
#
8
]
@
load
lr
from
nlr_buf
mov
lr
,
r1
#else
ldr
r8
,
[
r2
,
#
28
]
@
load
r8
from
nlr_buf
ldr
r8
,
[
r2
,
#
28
]
@
load
r8
from
nlr_buf
ldr
r9
,
[
r2
,
#
32
]
@
load
r9
from
nlr_buf
ldr
r9
,
[
r2
,
#
32
]
@
load
r9
from
nlr_buf
ldr
r10
,
[
r2
,
#
36
]
@
load
r10
from
nlr_buf
ldr
r10
,
[
r2
,
#
36
]
@
load
r10
from
nlr_buf
ldr
r11
,
[
r2
,
#
40
]
@
load
r11
from
nlr_buf
ldr
r11
,
[
r2
,
#
40
]
@
load
r11
from
nlr_buf
ldr
r13
,
[
r2
,
#
44
]
@
load
r13
=
sp
from
nlr_buf
ldr
r13
,
[
r2
,
#
44
]
@
load
r13
=
sp
from
nlr_buf
ldr
lr
,
[
r2
,
#
8
]
@
load
lr
from
nlr_buf
#endif
movs
r0
,
#
1
@
return
1
,
non
-
local
return
movs
r0
,
#
1
@
return
1
,
non
-
local
return
bx
lr
@
return
bx
lr
@
return
.
size
nlr_jump
,
.
-
nlr_jump
.
size
nlr_jump
,
.
-
nlr_jump
.
align
2
nlr_top_addr
:
.
word
mp_state_ctx
+
NLR_TOP_OFFSET
#endif // (!defined(MICROPY_NLR_SETJMP) || !MICROPY_NLR_SETJMP) && (defined(__thumb2__) || defined(__thumb__) || defined(__arm__))
#endif // (!defined(MICROPY_NLR_SETJMP) || !MICROPY_NLR_SETJMP) && (defined(__thumb2__) || defined(__thumb__) || defined(__arm__))
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment