| Commit message (Collapse) | Author | Age |
| |
|
| |
|
|
|
|
|
|
|
|
| |
The commit d9047d3c8a99603884db25076c37778f50633ca6 introduced a bug
whereby "from a.b import c" stopped working for frozen packages. This is
because the path was not properly truncated and became "a//b". Such a
path resolves correctly for a "real" filesystem, but not for a search in
the list of frozen modules.
|
|
|
|
| |
So that ports can pass their own custom options to mpy-cross.
|
| |
|
| |
|
|
|
|
|
| |
One never needs to format integers with a base larger than 16 (but code
can be easily extended beyond this value if needed in the future).
|
| |
|
| |
|
| |
|
|
|
|
|
| |
This function should be able to parse integers with any value for the
base, because it is called by int('xxx', base).
|
|
|
|
|
|
|
|
| |
UART REPL support was lost in os.dupterm() refactorings, etc. As
os.dupterm() is there, implement UART REPL support at the high level -
if MICROPY_STDIO_UART is set, make default boot.py contain os.dupterm()
call for a UART. This means that changing MICROPY_STDIO_UART value will
also require erasing flash on a module to force boot.py re-creation.
|
| |
|
|
|
|
|
| |
The lexer is very mature and this debug function is no longer used. If
it's really needed one can uncomment it and recompile.
|
|
|
|
|
|
|
|
| |
This check always fails (ie chr0 is never EOF) because the callers of this
function never call it past the end of the input stream. And even if they
did it would be harmless because 1) reader.readbyte must continue to
return an EOF char if the stream is exhausted; 2) next_char would just
count the subsequent EOF's as characters worth 1 column.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
import utimeq, utime
# Max queue size, the queue allocated statically on creation
q = utimeq.utimeq(10)
q.push(utime.ticks_ms(), data1, data2)
res = [0, 0, 0]
# Items in res are filled up with results
q.pop(res)
|
| |
|
|
|
|
|
|
| |
And also simplify it to remove the check for small int. This can be done
because this function is only ever called if the argument is not a small
int.
|
| |
|
|
|
|
|
| |
It needs an extra pass to compute the size of the constant table for the
l32r instructions.
|
|
|
|
|
|
|
|
| |
Defining and initialising mp_kbd_exception is boiler-plate code and so the
core runtime can provide it, instead of each port needing to do it
themselves.
The exception object is placed in the VM state rather than on the heap.
|
|
|
|
|
|
| |
sys.exit() is an important function to terminate a program. In particular,
the testsuite relies on it to skip tests (i.e. any other functionality may
be disabled, but sys.exit() is required to at least report that properly).
|
|
|
|
|
| |
There's no need to force ports to copy-and-paste this initialisation
code. If FSUSERMOUNT is enabled then this zeroing out must be done.
|
| |
|
|
|
|
|
| |
This patch ensures that __init__.mpy files are imported if their
containing directory is imported as a package.
|
| |
|
|
|
|
|
| |
CPython requires byteorder arg, make uPy compatible. As we support only
"little", error out on anything else.
|
| |
|
|
|
|
|
|
|
|
| |
For all but the last pass the assembler only needs to count how much space
is needed for the machine code, it doesn't actually need to emit anything.
The dummy_data just uses unnecessary RAM and without it the code is not
any more complex (and code size does not increase for Thumb and Xtensa
archs).
|
|
|
|
|
|
| |
This patch moves some common code from the individual inline assemblers to
the compiler, the code that calls the emit-glue to assign the machine code
to the functions scope.
|
|
|
|
|
| |
These are generic methods that don't depend on the architecture and so
can be handled directly by the compiler.
|
|
|
|
|
|
| |
This reduces fragmentation, and memory use by 1 word. But more
importantly it means the emit_inline_asm_t struct now "derives" from
mp_asm_base.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds the MICROPY_EMIT_INLINE_XTENSA option, which, when
enabled, allows the @micropython.asm_xtensa decorator to be used.
The following opcodes are currently supported (ax is a register, a0-a15):
ret_n()
callx0(ax)
j(label)
jx(ax)
beqz(ax, label)
bnez(ax, label)
mov(ax, ay)
movi(ax, imm) # imm can be full 32-bit, uses l32r if needed
and_(ax, ay, az)
or_(ax, ay, az)
xor(ax, ay, az)
add(ax, ay, az)
sub(ax, ay, az)
mull(ax, ay, az)
l8ui(ax, ay, imm)
l16ui(ax, ay, imm)
l32i(ax, ay, imm)
s8i(ax, ay, imm)
s16i(ax, ay, imm)
s32i(ax, ay, imm)
l16si(ax, ay, imm)
addi(ax, ay, imm)
ball(ax, ay, label)
bany(ax, ay, label)
bbc(ax, ay, label)
bbs(ax, ay, label)
beq(ax, ay, label)
bge(ax, ay, label)
bgeu(ax, ay, label)
blt(ax, ay, label)
bnall(ax, ay, label)
bne(ax, ay, label)
bnone(ax, ay, label)
Upon entry to the assembly function the registers a0, a12, a13, a14 are
pushed to the stack and the stack pointer (a1) decreased by 16. Upon
exit, these registers and the stack pointer are restored, and ret.n is
executed to return to the caller (caller address is in a0).
Note that the ABI for the Xtensa emitters is non-windowing.
|
|
|
|
|
| |
This patch refactors some code so that it is easier to integrate new
inline assemblers for different architectures other than ARM Thumb.
|
|
|
|
|
|
| |
The config option MICROPY_EMIT_XTENSA can now be enabled to target the
Xtensa architecture with @micropython.native and @micropython.viper
decorators.
|
| |
|
|
|
|
|
|
|
| |
If a port defines MP_PLAT_COMMIT_EXEC then this function is used to turn
RAM data into executable code. For example a port may want to write the
data to flash for execution. The function must return a pointer to the
executable data.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
The constants MP_IOCTL_POLL_xxx, which were stmhal-specific, are moved
from stmhal/pybioctl.h (now deleted) to py/stream.h. And they are renamed
to MP_STREAM_POLL_xxx to be consistent with other such constants.
All uses of these constants have been updated.
|
| |
|
|
|
|
| |
All assemblers should "derive" from mp_asm_base_t.
|
|
|
|
|
| |
Short circuiting is handled correctly by c_if_cond, and constants within
short-circuit expressions are optimised by the parser.
|
|
|
|
| |
By refactoring and reusing code from objboundmeth.
|
| |
|
| |
|
| |
|