esp-open-rtos/binary_sdk/libnet80211/ieee80211_power.S
Angus Gratton a9e3928c8d Disassembled binary SDK output, direct from xtobjdis with a couple of tweaks
Tweaks to xtobjdis are hg-git sha 6da80c11f

Everything works except for wpa_auth.o & phy_chip_v6_ana.o disassemble
with some functions not correctly detected.
2015-10-03 13:04:35 +10:00

189 lines
12 KiB
ArmAsm

.section .irom0.text, "ax", @progbits
# Function @ .irom0.text+0x0
.global sdk_ieee80211_psq_init
.type sdk_ieee80211_psq_init, @function
sdk_ieee80211_psq_init:
movi a6, 0 /* 0x00000000 */ # 0: 0c06
movi a5, 0 /* 0x00000000 */ # 2: 0c05
movi a4, 1 /* 0x00000001 */ # 4: 0c14
.Lbr001: addi a4, a4, -1 # 6: 0b44
add a3, a5, a2 # 8: 2a35
s32i a6, a3, 0 # a: 6903
addi a5, a5, 4 # c: 4b55
bgei a4, 1, .Lbr001 # e: e614f4
movi a4, 10 /* 0x0000000a */ # 11: 0ca4
s32i a4, a2, 4 /* 0x0000000a -> [arg0+0x4] */ # 13: 4912
ret /* arg0 */ # 15: 0df0
.balign 4
# Function @ .irom0.text+0x18
.global sdk_ieee80211_psq_cleanup
.type sdk_ieee80211_psq_cleanup, @function
sdk_ieee80211_psq_cleanup:
ret /* arg0 */ # 18: 0df0
.literal_position # 1c: 00000000
# Function @ .irom0.text+0x20
.global sdk_ieee80211_set_tim
.type sdk_ieee80211_set_tim, @function
sdk_ieee80211_set_tim:
movi a10, 1 /* 0x00000001 */ # 20: 0c1a
l16ui a6, a2, 26 /* [arg0+0x1a] */ # 22: 62120d
movi a8, sdk_g_ic+0x152 # 25: 81fdff
extui a7, a6, 0, 3 # 28: 607024
extui a6, a6, 3, 11 # 2b: 6063a4
add a6, a6, a8 # 2e: 8a66
l8ui a5, a6, 128 # 30: 520680
ssr a7 # 33: 000740
sra a4, a5 # 36: 5040b1
extui a4, a4, 0, 1 # 39: 404004
sub a2, a3, a4 # 3c: 4023c0
movnez a2, a10, a2 # 3f: 202a93
beqz a2, .Lbr002 # 42: 9c52
movi a11, -1 /* 0xffffffff */ # 44: 7cfb
ssl a7 # 46: 001740
sll a9, a10 # 49: 009aa1
or a8, a9, a5 # 4c: 508920
xor a9, a9, a11 # 4f: b09930
and a9, a5, a9 # 52: 909510
moveqz a8, a9, a3 # 55: 308983
s8i a8, a6, 128 # 58: 824680
.Lbr002: ret # 5b: 0df0
.literal_position # 60: 00000000
# 64: 00000000
# Function @ .irom0.text+0x68
# Local variables/stack:
# (local0): word @ -0x10
# (local1): word[3] @ -0xc
.global sdk_ieee80211_pwrsave
.type sdk_ieee80211_pwrsave, @function
sdk_ieee80211_pwrsave:
mov a6, a2 /* arg0 */ # 68: 6d02
addi sp, sp, -16 /* (local0) */ # 6a: 12c1f0
s32i a12, sp, 4 /* a12 -> [(local1)] */ # 6d: c911
s32i a0, sp, 0 /* a0 -> [(local0)] */ # 6f: 0901
l32i a2, a2, 196 /* [arg0+0xc4] */ # 71: 222231
l32i a0, a6, 192 /* [arg0+0xc0] */ # 74: 022630
mov a12, a3 /* arg1 */ # 77: cd03
blt a0, a2, .Lbr003 # 79: 27201e
l32i a3, a6, 200 /* [arg0+0xc8] */ # 7c: 322632
l32i a2, a12, 0 /* [arg1] */ # 7f: 280c
addi a3, a3, 1 /* [arg0+0xc8]+0x1 */ # 81: 1b33
s32i a3, a6, 200 /* [arg0+0xc8]+0x1 -> [arg0+0xc8] */ # 83: 326632
call0 pbuf_free # 86: 01f6ffc0
# 8a: 0000
mov a2, a12 /* arg1 */ # 8c: 2d0c
movi a3, 1 /* 0x00000001 */ # 8e: 0c13
call0 sdk_esf_buf_recycle # 90: 01f5ffc0
# 94: 0000
movi a2, 1 /* 0x00000001 */ # 96: 0c12
j .Lbr007 # 98: 060b00
.Lbr003: addi a4, a0, 1 /* [arg0+0xc0]+0x1 */ # 9b: 1b40
movi a7, 0 /* 0x00000000 */ # 9d: 0c07
l32i a5, a6, 212 /* [arg0+0xd4] */ # 9f: 522635
l32i a2, a6, 208 /* [arg0+0xd0] */ # a2: 222634
addi a5, a5, 1 /* [arg0+0xd4]+0x1 */ # a5: 1b55
bnez a2, .Lbr004 # a7: cc42
s32i a3, a6, 204 /* arg1 -> [arg0+0xcc] */ # a9: 326633
j .Lbr005 # ac: 460000
.Lbr004: s32i a3, a2, 28 /* arg1 -> [[arg0+0xd0]+0x1c] */ # af: 3972
.Lbr005: s32i a7, a12, 28 /* 0x00000000 -> [arg1+0x1c] */ # b1: 797c
s32i a12, a6, 208 /* arg1 -> [arg0+0xd0] */ # b3: c26634
s32i a4, a6, 192 /* [arg0+0xc0]+0x1 -> [arg0+0xc0] */ # b6: 426630
s32i a5, a6, 212 /* [arg0+0xd4]+0x1 -> [arg0+0xd4] */ # b9: 526635
bnei a4, 1, .Lbr006 # bc: 661406
mov a2, a6 /* arg0 */ # bf: 2d06
movi a3, 1 /* 0x00000001 */ # c1: 0c13
call0 sdk_ieee80211_set_tim # c3: 050000
.Lbr006: movi a2, 0 /* 0x00000000 */ # c6: 0c02
.Lbr007: l32i a12, sp, 4 /* [(local1)] */ # c8: c811
l32i a0, sp, 0 /* [(local0)] */ # ca: 0801
addi sp, sp, 16 /* (top of frame) */ # cc: 12c110
ret # cf: 0df0
.literal_position # d4: 00000000
# d8: 00000000
# dc: 00000000
# Function @ .irom0.text+0xe0
# Local variables/stack:
# (local0): word @ -0x10
# (local1): word @ -0xc
# (local2): word @ -0x8
# (local3): word @ -0x4
.Lfunc001: addi sp, sp, -16 /* (local0) */ # e0: 12c1f0
s32i a0, sp, 0 /* a0 -> [(local0)] */ # e3: 0901
s32i a14, sp, 12 /* a14 -> [(local3)] */ # e5: e931
s32i a12, sp, 4 /* a12 -> [(local1)] */ # e7: c911
s32i a13, sp, 8 /* a13 -> [(local2)] */ # e9: d921
mov a12, a2 /* arg0 */ # eb: cd02
l32i a13, a2, 204 /* [arg0+0xcc] */ # ed: d22233
movi a14, 0 /* 0x00000000 */ # f0: 0c0e
bnez a13, .Lbr008 # f2: cc1d
j .Lbr012 # f4: 061000
.Lbr008: l32i a2, a13, 28 /* [[arg0+0xcc]+0x1c] */ # f7: 287d
s32i a2, a12, 204 /* [[arg0+0xcc]+0x1c] -> [arg0+0xcc] */ # f9: 226c33
call0 sdk_chm_check_same_channel # fc: 01f7ffc0
# 100: 0000
beqz a2, .Lbr009 # 102: 8c92
mov a2, a13 /* [arg0+0xcc] */ # 104: 2d0d
call0 sdk_ppTxPkt # 106: 01f5ffc0
# 10a: 0000
j .Lbr010 # 10c: c60300
.Lbr009: movi a5, sdk_g_ic # 10f: 51f1ff
addi a4, a13, 28 /* [arg0+0xcc]+0x1c */ # 112: 42cd1c
l32i a6, a5, 0x1c4 /* [sdk_g_ic+0x1c4] */ # 115: 622571
s32i a14, a13, 28 /* 0x00000000 -> [[arg0+0xcc]+0x1c] */ # 118: e97d
s32i a13, a6, 0 /* [arg0+0xcc] -> [[sdk_g_ic+0x1c4]] */ # 11a: d906
s32i a4, a5, 0x1c4 /* [arg0+0xcc]+0x1c -> [sdk_g_ic+0x1c4] */ # 11c: 426571
.Lbr010: l32i a7, a12, 192 /* [arg0+0xc0] */ # 11f: 722c30
l32i a13, a12, 204 /* [arg0+0xcc] */ # 122: d22c33
addi a7, a7, -1 /* [arg0+0xc0]-0x1 */ # 125: 0b77
s32i a7, a12, 192 /* [arg0+0xc0]-0x1 -> [arg0+0xc0] */ # 127: 726c30
beqz a13, .Lbr011 # 12a: 8c1d
j .Lbr008 # 12c: c6f1ff
.Lbr011: s32i a14, a12, 208 /* 0x00000000 -> [arg0+0xd0] */ # 12f: e26c34
s32i a14, a12, 204 /* 0x00000000 -> [arg0+0xcc] */ # 132: e26c33
s32i a14, a12, 212 /* 0x00000000 -> [arg0+0xd4] */ # 135: e26c35
.Lbr012: l32i a0, sp, 0 /* [(local0)] */ # 138: 0801
s32i a14, a12, 192 /* 0x00000000 -> [arg0+0xc0] */ # 13a: e26c30
l32i a13, sp, 8 /* [(local2)] */ # 13d: d821
l32i a12, sp, 4 /* [(local1)] */ # 13f: c811
l32i a14, sp, 12 /* [(local3)] */ # 141: e831
addi sp, sp, 16 /* (top of frame) */ # 143: 12c110
ret # 146: 0df0
# Function @ .irom0.text+0x148
# Local variables/stack:
# (local0): word @ -0x10
# (local1): word[3] @ -0xc
.global sdk_ieee80211_node_pwrsave
.type sdk_ieee80211_node_pwrsave, @function
sdk_ieee80211_node_pwrsave:
addi sp, sp, -16 /* (local0) */ # 148: 12c1f0
s32i a0, sp, 4 /* a0 -> [(local1)] */ # 14b: 0911
s32i a2, sp, 0 /* arg0 -> [(local0)] */ # 14d: 2901
l32i a0, a2, 8 /* [arg0+0x8] */ # 14f: 0822
beqz a3, .Lbr013 # 151: 8c83
movi a3, 16 /* 0x00000010 */ # 153: 1c03
or a3, a0, a3 # 155: 303020
s32i a3, a2, 8 /* a3 -> [arg0+0x8] */ # 158: 3922
j .Lbr014 # 15a: c60500
.Lbr013: movi a3, 0 /* 0x00000000 */ # 15d: 0c03
movi a4, -17 /* 0xffffffef */ # 15f: 6cf4
and a4, a0, a4 # 161: 404010
s32i a4, a2, 8 /* a4 -> [arg0+0x8] */ # 164: 4922
call0 sdk_ieee80211_set_tim # 166: 050000
l32i a0, sp, 0 /* [(local0)] */ # 169: 0801
l32i a5, a0, 192 /* [[(local0)]+0xc0] */ # 16b: 522030
beqz a5, .Lbr014 # 16e: 8c35
mov a2, a0 /* [(local0)] */ # 170: 2d00
call0 .Lfunc001 # 172: c5f6ff
.Lbr014: l32i a0, sp, 4 /* [(local1)] */ # 175: 0811
addi sp, sp, 16 /* (top of frame) */ # 177: 12c110
ret # 17a: 0df0