Skip to content

Commit 6f7910e

Browse files
committedOct 14, 2020
Add memcmp and MMIO definitions to libfaucon
1 parent c2881f5 commit 6f7910e

File tree

6 files changed

+179
-4
lines changed

6 files changed

+179
-4
lines changed
 

‎libfaucon/memcmp.asm

+44
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// Function arguments
2+
pushdef(`ptr1', `$r10')
3+
pushdef(`ptr2', `$r11')
4+
pushdef(`size', `$r12')
5+
6+
// Locals
7+
pushdef(`word1', `$r13')
8+
pushdef(`word2', `$r14')
9+
pushdef(`result', `$r10')
10+
11+
memcmp:
12+
lbra #memcmp_compare_loop_start
13+
14+
memcmp_compare_loop:
15+
// Read two words from DMEM into registers and compare them.
16+
ld b32 word1 D[ptr1]
17+
ld b32 word2 D[ptr2]
18+
cmp b32 word1 word2
19+
bra ne #memcmp_ret_failure
20+
21+
// Update the arguments and continue to compare data if there are still words left.
22+
add b32 ptr1 0x4
23+
add b32 ptr2 0x4
24+
sub b32 size 0x4
25+
memcmp_compare_loop_start:
26+
bra b32 size 0x0 ne #memcmp_compare_loop
27+
28+
memcmp_ret_success:
29+
mov result 0x0
30+
ret
31+
32+
memcmp_ret_failure:
33+
mov result 0x1
34+
ret
35+
36+
// End locals
37+
popdef(`result')
38+
popdef(`word2')
39+
popdef(`word1')
40+
41+
// End function arguments
42+
popdef(`size')
43+
popdef(`ptr2')
44+
popdef(`ptr1')

‎libfaucon/memcpy.asm

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,4 @@ memcpy:
1717

1818
popdef(`size')
1919
popdef(`src')
20-
popdef(`dest')
20+
popdef(`dest')

‎libfaucon/mmio.asm

+131
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
.equ #FALCON_IRQSSET 0x0000
2+
.equ #FALCON_IRQSCLR 0x0100
3+
.equ #FALCON_IRQSTAT 0x0200
4+
.equ #FALCON_IRQMODE 0x0300
5+
.equ #FALCON_IRQMSET 0x0400
6+
.equ #FALCON_IRQMCLR 0x0500
7+
.equ #FALCON_IRQMASK 0x0600
8+
.equ #FALCON_IRQDEST 0x0700
9+
.equ #FALCON_GPTMRINT 0x0800
10+
.equ #FALCON_GPTMRVAL 0x0900
11+
.equ #FALCON_GPTMRCTL 0x0A00
12+
.equ #FALCON_PTIMER0 0x0B00
13+
.equ #FALCON_PTIMER1 0x0C00
14+
.equ #FALCON_WDTMRVAL 0x0D00
15+
.equ #FALCON_WDTMRCTL 0x0E00
16+
.equ #FALCON_IRQDEST2 0x0F00
17+
.equ #FALCON_MAILBOX0 0x1000
18+
.equ #FALCON_MAILBOX1 0x1100
19+
.equ #FALCON_ITFEN 0x1200
20+
.equ #FALCON_IDLESTATE 0x1300
21+
.equ #FALCON_CURCTX 0x1400
22+
.equ #FALCON_NXTCTX 0x1500
23+
.equ #FALCON_CTXACK 0x1600
24+
.equ #FALCON_FHSTATE 0x1700
25+
.equ #FALCON_PRIVSTATE 0x1800
26+
.equ #FALCON_MTHDDATA 0x1900
27+
.equ #FALCON_MTHDID 0x1A00
28+
.equ #FALCON_MTHDWDAT 0x1B00
29+
.equ #FALCON_MTHDCOUNT 0x1C00
30+
.equ #FALCON_MTHDPOP 0x1D00
31+
.equ #FALCON_MTHDRAMSZ 0x1E00
32+
.equ #FALCON_SFTRESET 0x1F00
33+
.equ #FALCON_OS 0x2000
34+
.equ #FALCON_RM 0x2100
35+
.equ #FALCON_SOFT_PM 0x2200
36+
.equ #FALCON_SOFT_MODE 0x2300
37+
.equ #FALCON_DEBUG1 0x2400
38+
.equ #FALCON_DEBUGINFO 0x2500
39+
.equ #FALCON_IBRKPT1 0x2600
40+
.equ #FALCON_IBRKPT2 0x2700
41+
.equ #FALCON_CGCTL 0x2800
42+
.equ #FALCON_ENGCTL 0x2900
43+
.equ #FALCON_PMM 0x2A00
44+
.equ #FALCON_ADDR 0x2B00
45+
.equ #FALCON_IBRKPT3 0x2C00
46+
.equ #FALCON_IBRKPT4 0x2D00
47+
.equ #FALCON_IBRKPT5 0x2E00
48+
.equ #FALCON_EXCI 0x3400
49+
.equ #FALCON_SVEC_SPR 0x3500
50+
.equ #FALCON_RSTAT0 0x3600
51+
.equ #FALCON_RSTAT3 0x3700
52+
.equ #FALCON_UNK_E0 0x3800
53+
.equ #FALCON_CPUCTL 0x4000
54+
.equ #FALCON_BOOTVEC 0x4100
55+
.equ #FALCON_HWCFG 0x4200
56+
.equ #FALCON_DMACTL 0x4300
57+
.equ #FALCON_DMATRFBASE 0x4400
58+
.equ #FALCON_DMATRFMOFFS 0x4500
59+
.equ #FALCON_DMATRFCMD 0x4600
60+
.equ #FALCON_DMATRFFBOFFS 0x4700
61+
.equ #FALCON_DMAPOLL_FB 0x4800
62+
.equ #FALCON_DMAPOLL_CP 0x4900
63+
.equ #FALCON_HWCFG2 0x4B00
64+
.equ #FALCON_CPUCTL_ALIAS 0x4C00
65+
.equ #FALCON_STACKCFG 0x4E00
66+
.equ #FALCON_IMCTL 0x5000
67+
.equ #FALCON_IMSTAT 0x5100
68+
.equ #FALCON_TRACEIDX 0x5200
69+
.equ #FALCON_TRACEPC 0x5300
70+
.equ #FALCON_IMFILLRNG0 0x5400
71+
.equ #FALCON_IMFILLRNG1 0x5500
72+
.equ #FALCON_IMFILLCTL 0x5600
73+
.equ #FALCON_IMCTL_DEBUG 0x5700
74+
.equ #FALCON_CMEMBASE 0x5800
75+
.equ #FALCON_DMEMAPERT 0x5900
76+
.equ #FALCON_EXTERRADDR 0x5A00
77+
.equ #FALCON_EXTERRSTAT 0x5B00
78+
.equ #FALCON_CG2 0x5F00
79+
.equ #FALCON_IMEMC0 0x6000
80+
.equ #FALCON_IMEMD0 0x6100
81+
.equ #FALCON_IMEMT0 0x6200
82+
.equ #FALCON_IMEMC1 0x6400
83+
.equ #FALCON_IMEMD1 0x6500
84+
.equ #FALCON_IMEMT1 0x6600
85+
.equ #FALCON_IMEMC2 0x6800
86+
.equ #FALCON_IMEMD2 0x6900
87+
.equ #FALCON_IMEMT2 0x6A00
88+
.equ #FALCON_IMEMC3 0x6C00
89+
.equ #FALCON_IMEMD3 0x6D00
90+
.equ #FALCON_IMEMT3 0x6E00
91+
.equ #FALCON_DMEMC0 0x7000
92+
.equ #FALCON_DMEMD0 0x7100
93+
.equ #FALCON_DMEMC1 0x7200
94+
.equ #FALCON_DMEMD1 0x7300
95+
.equ #FALCON_DMEMC2 0x7400
96+
.equ #FALCON_DMEMD2 0x7500
97+
.equ #FALCON_DMEMC3 0x7600
98+
.equ #FALCON_DMEMD3 0x7700
99+
.equ #FALCON_DMEMC4 0x7800
100+
.equ #FALCON_DMEMD4 0x7900
101+
.equ #FALCON_DMEMC5 0x7A00
102+
.equ #FALCON_DMEMD5 0x7B00
103+
.equ #FALCON_DMEMC6 0x7C00
104+
.equ #FALCON_DMEMD6 0x7D00
105+
.equ #FALCON_DMEMC7 0x7E00
106+
.equ #FALCON_DMEMD7 0x7F00
107+
.equ #FALCON_ICD_CMD 0x8000
108+
.equ #FALCON_ICD_ADDR 0x8100
109+
.equ #FALCON_ICD_WDATA 0x8200
110+
.equ #FALCON_ICD_RDATA 0x8300
111+
.equ #FALCON_SCTL 0x9000
112+
.equ #FALCON_SSTAT 0x9100
113+
.equ #FALCON_UNK_250 0x9400
114+
.equ #FALCON_UNK_260 0x9800
115+
.equ #FALCON_SPROT_IMEM 0xA000
116+
.equ #FALCON_SPROT_DMEM 0xA100
117+
.equ #FALCON_SPROT_CPUCTL 0xA200
118+
.equ #FALCON_SPROT_MISC 0xA300
119+
.equ #FALCON_SPROT_IRQ 0xA400
120+
.equ #FALCON_SPROT_MTHD 0xA500
121+
.equ #FALCON_SPROT_SCTL 0xA600
122+
.equ #FALCON_SPROT_WDTMR 0xA700
123+
.equ #FALCON_DMAINFO_FINISHED_FBRD_LOW 0xB000
124+
.equ #FALCON_DMAINFO_FINISHED_FBRD_HIGH 0xB100
125+
.equ #FALCON_DMAINFO_FINISHED_FBWR_LOW 0xB200
126+
.equ #ALCON_DMAINFO_FINISHED_FBWR_HIGH 0xB300
127+
.equ #FALCON_DMAINFO_CURRENT_FBRD_LOW 0xB400
128+
.equ #FALCON_DMAINFO_CURRENT_FBRD_HIGH 0xB500
129+
.equ #FALCON_DMAINFO_CURRENT_FBWR_LOW 0xB600
130+
.equ #FALCON_DMAINFO_CURRENT_FBWR_HIGH 0xB700
131+
.equ #FALCON_DMAINFO_CTL 0xB800

‎libfaucon/tsec_dma_write.asm

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,4 @@ tsec_dma_write:
3030
mpopret $r1
3131

3232
popdef(`value')
33-
popdef(`addr')
33+
popdef(`addr')

‎libfaucon/tsec_set_key.asm

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,4 @@ tsec_set_key:
2929
mpopret $r0
3030

3131
popdef(`key_buffer_local')
32-
popdef(`key_buffer')
32+
popdef(`key_buffer')

‎libfaucon/tsec_wait_dma.asm

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ tsec_wait_dma:
44
iord $r9 I[$r15 + 0x0]
55
extr $r10 $r9 0xc:0xe
66
bra b32 $r10 0x1 e #tsec_wait_dma_loop
7-
ret
7+
ret

0 commit comments

Comments
 (0)
Please sign in to comment.