Browse Source

py: Fix loading of immediate pointer in Thumb assembler.

Addresses issue #1117.
pull/1098/merge
Damien George 10 years ago
parent
commit
d1c3788375
  1. 4
      py/asmthumb.c
  2. 13
      tests/micropython/native_const.py
  3. 2
      tests/micropython/native_const.py.exp

4
py/asmthumb.c

@ -375,8 +375,8 @@ void asm_thumb_mov_reg_i32_aligned(asm_thumb_t *as, uint reg_dest, int i32) {
if ((as->code_offset & 3) == 0) {
asm_thumb_op16(as, ASM_THUMB_OP_NOP);
}
// jump over the i32 value (instruction prefect adds 4 to PC)
asm_thumb_op16(as, OP_B_N(0));
// jump over the i32 value (instruction prefetch adds 2 to PC)
asm_thumb_op16(as, OP_B_N(2));
// store i32 on machine-word aligned boundary
asm_thumb_data(as, 4, i32);
// do the actual load of the i32 value

13
tests/micropython/native_const.py

@ -0,0 +1,13 @@
# check loading constants
@micropython.native
def f():
return 123456789012345678901234567890
print(f())
@micropython.native
def g():
return 1.2
print(g())

2
tests/micropython/native_const.py.exp

@ -0,0 +1,2 @@
123456789012345678901234567890
1.2
Loading…
Cancel
Save