# Re: \[PATCH v6 5/5\] rust: add arch\_static\_branch

- From: Alice Ryhl \<aliceryhl@google.com\>
- Date: 2024-08-10 21:44:27 
- List: linux-trace-kernel
- Page: https://ratatoskr.run/linux-trace-kernel/2024/08/2703355
- Thread: https://ratatoskr.run/linux-trace-kernel/2024/08/2701304/t.md

```text
On Sat, Aug 10, 2024 at 11:04 PM Peter Zijlstra [ref] wrote:
>
> On Thu, Aug 08, 2024 at 05:23:41PM +0000, Alice Ryhl wrote:
>
> > +/// Wrapper around `asm!` that uses at&t syntax on x86.
> > +// Uses a semicolon to avoid parsing ambiguities, even though this does not match native `asm!`
> > +// syntax.
> > +#[cfg(target_arch = "x86_64")]
> > +#[macro_export]
> > +macro_rules! asm {
> > +    ($($asm:expr),* ; $($rest:tt)*) => {
> > +        ::core::arch::asm!( $($asm)*, options(att_syntax), $($rest)* )
> > +    };
> > +}
> > +
> > +/// Wrapper around `asm!` that uses at&t syntax on x86.
>
> ^ the above line seems out of place given the 'not' below.

Comments with three slashes are what gets rendered in the html version
of the docs [1]. This way, the rendered docs will say that the `asm!`
macro is a wrapper around the built-in `asm!` that uses at&t syntax on
x86 regardless of which platform you build the docs on.

[1]: https://rust.docs.kernel.org/kernel/

> > +// For non-x86 arches we just pass through to `asm!`.
> > +#[cfg(not(target_arch = "x86_64"))]
>          ^^^
> > +#[macro_export]
> > +macro_rules! asm {
> > +    ($($asm:expr),* ; $($rest:tt)*) => {
> > +        ::core::arch::asm!( $($asm)*, $($rest)* )
> > +    };
> > +}
```
