rust-embedded/heapless

`heapless::pool` support for `x86_64`

Closed this issue · 1 comments

I'm working on a no_std project targeting some armv7 CPUs. I would like to use heapless::pool but I am having issues because it is not available on my x86_64 host at test / lint time.

heapless/src/lib.rs

Lines 119 to 120 in c7c731d

#[cfg(any(arm_llsc, target_arch = "x86"))]
pub mod pool;

In the docs there is a mention that it is available on ARM architectures which instruction set include the LDREX, CLREX and STREX instructions, and 32-bit x86, but it is unclear why x86_64 is no longer supported. It seems that x86_64 support was removed in #315 last year.

What is limiting pool support such that it is available on x86 but not x86_64?

It's a good question. I tried to compile it on x86_64 with the x86 implementation to see what happens and 6 tests fail with signal: 11, SIGSEV: invalid memory reference.

I assume to support x86_64 we just need a backend implementation for the Treiber stack. This isn't something I have the time to investigate furthur at the moment sadly.