Skip to content

Commit 9c320cd

Browse files
fix instructions: ld / st
asm src offset is in bytes, binary bitfield offset is in longs fixed some other confusions (likely wrong in ulp.h also).
1 parent b13e3da commit 9c320cd

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

esp32_ulp/opcodes.py

+7-7
Original file line numberDiff line numberDiff line change
@@ -142,10 +142,10 @@ def make_ins(layout):
142142

143143

144144
_st = make_ins("""
145-
dreg : 2 # Register which contains data to store
146-
sreg : 2 # Register which contains address in RTC memory (expressed in words)
145+
dreg : 2 # Register which contains address in RTC memory (expressed in words)
146+
sreg : 2 # Register which contains data to store
147147
unused1 : 6 # Unused
148-
offset : 11 # Offset to add to sreg
148+
offset : 11 # Offset to add to dreg
149149
unused2 : 4 # Unused
150150
sub_opcode : 3 # Sub opcode (SUB_OPCODE_ST)
151151
opcode : 4 # Opcode (OPCODE_ST)
@@ -390,10 +390,10 @@ def i_adc(reg_dest, adc_idx, mux):
390390

391391

392392
def i_st(reg_val, reg_addr, offset):
393-
_st.dreg = get_reg(reg_val)
394-
_st.sreg = get_reg(reg_addr)
393+
_st.dreg = get_reg(reg_addr)
394+
_st.sreg = get_reg(reg_val)
395395
_st.unused1 = 0
396-
_st.offset = get_imm(offset)
396+
_st.offset = get_imm(offset) // 4
397397
_st.unused2 = 0
398398
_st.sub_opcode = SUB_OPCODE_ST
399399
_st.opcode = OPCODE_ST
@@ -410,7 +410,7 @@ def i_ld(reg_dest, reg_addr, offset):
410410
_ld.dreg = get_reg(reg_dest)
411411
_ld.sreg = get_reg(reg_addr)
412412
_ld.unused1 = 0
413-
_ld.offset = get_imm(offset)
413+
_ld.offset = get_imm(offset) // 4
414414
_ld.unused2 = 0
415415
_ld.opcode = OPCODE_LD
416416
return _ld.all

0 commit comments

Comments
 (0)