Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
uPython-mirror
Commits
278f3592
Commit
278f3592
authored
Nov 27, 2015
by
Damien George
Browse files
extmod/modmachine: Use uintptr_t instead of mp_uint_t for address type.
parent
5d66b427
Changes
1
Hide whitespace changes
Inline
Side-by-side
extmod/modmachine.c
View file @
278f3592
...
...
@@ -40,8 +40,8 @@
#if MICROPY_PY_MACHINE
STATIC
mp_
uint_t
get_addr
(
mp_obj_t
addr_o
,
uint
align
)
{
mp_
uint_t
addr
=
mp_obj_int_get_truncated
(
addr_o
);
STATIC
uint
ptr
_t
get_addr
(
mp_obj_t
addr_o
,
uint
align
)
{
uint
ptr
_t
addr
=
mp_obj_int_get_truncated
(
addr_o
);
if
((
addr
&
(
align
-
1
))
!=
0
)
{
nlr_raise
(
mp_obj_new_exception_msg_varg
(
&
mp_type_ValueError
,
"address %08x is not aligned to %d bytes"
,
addr
,
align
));
}
...
...
@@ -49,8 +49,8 @@ STATIC mp_uint_t get_addr(mp_obj_t addr_o, uint align) {
{
// Not thread-safe
static
int
fd
;
static
mp_
uint_t
last_base
=
(
mp_
uint_t
)
-
1
;
static
mp_
uint_t
map_page
;
static
uint
ptr
_t
last_base
=
(
uint
ptr
_t
)
-
1
;
static
uint
ptr
_t
map_page
;
if
(
!
fd
)
{
fd
=
open
(
"/dev/mem"
,
O_RDWR
|
O_SYNC
);
if
(
fd
==
-
1
)
{
...
...
@@ -58,9 +58,9 @@ STATIC mp_uint_t get_addr(mp_obj_t addr_o, uint align) {
}
}
mp_
uint_t
cur_base
=
addr
&
~
MICROPY_PAGE_MASK
;
uint
ptr
_t
cur_base
=
addr
&
~
MICROPY_PAGE_MASK
;
if
(
cur_base
!=
last_base
)
{
map_page
=
(
mp_
uint_t
)
mmap
(
NULL
,
MICROPY_PAGE_SIZE
,
PROT_READ
|
PROT_WRITE
,
MAP_SHARED
,
fd
,
cur_base
);
map_page
=
(
uint
ptr
_t
)
mmap
(
NULL
,
MICROPY_PAGE_SIZE
,
PROT_READ
|
PROT_WRITE
,
MAP_SHARED
,
fd
,
cur_base
);
last_base
=
cur_base
;
}
addr
=
map_page
+
(
addr
&
MICROPY_PAGE_MASK
);
...
...
@@ -89,7 +89,7 @@ STATIC mp_obj_t machine_mem_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t va
return
MP_OBJ_NULL
;
// op not supported
}
else
if
(
value
==
MP_OBJ_SENTINEL
)
{
// load
mp_
uint_t
addr
=
get_addr
(
index
,
self
->
elem_size
);
uint
ptr
_t
addr
=
get_addr
(
index
,
self
->
elem_size
);
uint32_t
val
;
switch
(
self
->
elem_size
)
{
case
1
:
val
=
(
*
(
uint8_t
*
)
addr
);
break
;
...
...
@@ -99,7 +99,7 @@ STATIC mp_obj_t machine_mem_subscr(mp_obj_t self_in, mp_obj_t index, mp_obj_t va
return
mp_obj_new_int
(
val
);
}
else
{
// store
mp_
uint_t
addr
=
get_addr
(
index
,
self
->
elem_size
);
uint
ptr
_t
addr
=
get_addr
(
index
,
self
->
elem_size
);
uint32_t
val
=
mp_obj_get_int
(
value
);
switch
(
self
->
elem_size
)
{
case
1
:
(
*
(
uint8_t
*
)
addr
)
=
val
;
break
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment