Skip to content

Commit

Permalink
ws2812: fix "invalid symbol redefinition" error
Browse files Browse the repository at this point in the history
Named local labels shouldn't be used in LLVM because they might get
duplicated resulting in multiple symbol definitions and a compiler
error. Instead, use numeric labels.
  • Loading branch information
aykevl authored and deadprogram committed Dec 14, 2019
1 parent 7233452 commit 514b436
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 16 deletions.
8 changes: 4 additions & 4 deletions ws2812/ws2812_m0_16m.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,13 @@ func (d Device) WriteByte(c byte) error {
// T1H: 8 cycles or 500.0ns -> together 19 cycles or 1187.5ns
value := uint32(c) << 24
arm.AsmFull(`
send_bit:
1: @ send_bit
str {maskSet}, {portSet} @ [2] T0H and T0L start here
nop @ [1]
lsls {value}, #1 @ [1]
bcs.n skip_store @ [1/3]
bcs.n 2f @ [1/3] skip_store
str {maskClear}, {portClear} @ [2] T0H -> T0L transition
skip_store:
2: @ skip_store
nop @ [4]
nop
nop
Expand All @@ -39,7 +39,7 @@ func (d Device) WriteByte(c byte) error {
nop @ [2]
nop
subs {i}, #1 @ [1]
bne.n send_bit @ [1/3]
bne.n 1b @ [1/3] send_bit
`, map[string]interface{}{
"value": value,
"i": 8,
Expand Down
8 changes: 4 additions & 4 deletions ws2812/ws2812_m0_48m.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ func (d Device) WriteByte(c byte) error {
// T1L: 22 cycles or 458.3ns -> together 49 cycles or 1020.8ns
value := uint32(c) << 24
arm.AsmFull(`
send_bit:
1: @ send_bit
str {maskSet}, {portSet} @ [2] T0H and T0L start here
lsls {value}, #1 @ [1]
nop @ [6]
Expand All @@ -32,9 +32,9 @@ func (d Device) WriteByte(c byte) error {
nop
nop
nop
bcs.n skip_store @ [1/3]
bcs.n 2f @ [1/3] skip_store
str {maskClear}, {portClear} @ [2] T0H -> T0L transition
skip_store:
2: @ skip_store
nop @ [15]
nop
nop
Expand Down Expand Up @@ -68,7 +68,7 @@ func (d Device) WriteByte(c byte) error {
nop
nop
subs {i}, #1 @ [1]
bne.n send_bit @ [1/3]
bne.n 1b @ [1/3] send_bit
`, map[string]interface{}{
"value": value,
"i": 8,
Expand Down
8 changes: 4 additions & 4 deletions ws2812/ws2812_m4_120m.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ func (d Device) WriteByte(c byte) error {
// by ARM that state this are now considered superseded (by what?).
value := uint32(c) << 24
arm.AsmFull(`
send_bit:
1: @ send_bit
str {maskSet}, {portSet} @ [2] T0H and T0L start here
lsls {value}, #1 @ [1]
nop @ [28]
Expand Down Expand Up @@ -60,9 +60,9 @@ func (d Device) WriteByte(c byte) error {
nop
nop
nop
bcs.n skip_store @ [1-3]
bcs.n 2f @ [1-3] skip_store
str {maskClear}, {portClear} @ [2] T0H -> T0L transition
skip_store:
2: @ skip_store
nop @ [41]
nop
nop
Expand Down Expand Up @@ -160,7 +160,7 @@ func (d Device) WriteByte(c byte) error {
nop
nop
subs {i}, #1 @ [1]
bne.n send_bit @ [1-3]
bne.n 1b @ [1-3] send_bit
`, map[string]interface{}{
"value": value,
"i": 8,
Expand Down
8 changes: 4 additions & 4 deletions ws2812/ws2812_m4_64m.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ func (d Device) WriteByte(c byte) error {
// by ARM that state this are now considered superseded (by what?).
value := uint32(c) << 24
arm.AsmFull(`
send_bit:
1: @ send_bit
str {maskSet}, {portSet} @ [2] T0H and T0L start here
lsls {value}, #1 @ [1]
nop @ [13]
Expand All @@ -44,9 +44,9 @@ func (d Device) WriteByte(c byte) error {
nop
nop
nop
bcs.n skip_store @ [1-3]
bcs.n 2f @ [1-3] skip_store
str {maskClear}, {portClear} @ [2] T0H -> T0L transition
skip_store:
2: @ skip_store
nop @ [22]
nop
nop
Expand Down Expand Up @@ -97,7 +97,7 @@ func (d Device) WriteByte(c byte) error {
nop
nop
subs {i}, #1 @ [1]
bne.n send_bit @ [1-3]
bne.n 1b @ [1-3] send_bit
`, map[string]interface{}{
"value": value,
"i": 8,
Expand Down

0 comments on commit 514b436

Please sign in to comment.