From: Ammar Faizi <[email protected]>
To: Willy Tarreau <[email protected]>
Cc: "Paul E. McKenney" <[email protected]>,
Alviro Iskandar Setiawan <[email protected]>,
Nugraha <[email protected]>,
Linux Kernel Mailing List <[email protected]>,
GNU/Weeb Mailing List <[email protected]>,
Ammar Faizi <[email protected]>
Subject: [PATCH v1 03/11] tools/nolibc: Replace `asm` with `__asm__`
Date: Thu, 24 Mar 2022 14:30:31 +0700 [thread overview]
Message-ID: <[email protected]> (raw)
In-Reply-To: <[email protected]>
Replace `asm` with `__asm__` to support compilation with -std flag.
Using `asm` with -std flag makes GCC think `asm()` is a function call
instead of an inline assembly.
GCC doc says:
For the C language, the `asm` keyword is a GNU extension. When
writing C code that can be compiled with `-ansi` and the `-std`
options that select C dialects without GNU extensions, use
`__asm__` instead of `asm`.
Link: https://gcc.gnu.org/onlinedocs/gcc/Basic-Asm.html
Reported-by: Alviro Iskandar Setiawan <[email protected]>
Signed-off-by: Ammar Faizi <[email protected]>
---
In private conversation with Alviro, we found that using -std flag hits
the following errors:
```
In file included from arch.h:21,
from nolibc.h:97,
from test.c:2:
arch-i386.h:177:5: error: expected declaration specifiers or ‘...’ before string constant
177 | asm(".section .text\n"
| ^~~~~~~~~~~~~~~~~~
sys.h: In function ‘sys_brk’:
arch-i386.h:83:28: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘asm’
83 | register long _num asm("eax") = (num); \
| ^~~
sys.h:57:24: note: in expansion of macro ‘my_syscall1’
57 | return (void *)my_syscall1(__NR_brk, addr);
| ^~~~~~~~~~~
arch-i386.h:83:28: warning: implicit declaration of function ‘asm’ [-Wimplicit-function-declaration]
83 | register long _num asm("eax") = (num); \
| ^~~
sys.h:57:24: note: in expansion of macro ‘my_syscall1’
57 | return (void *)my_syscall1(__NR_brk, addr);
| ^~~~~~~~~~~
arch-i386.h:83:39: error: lvalue required as left operand of assignment
83 | register long _num asm("eax") = (num); \
| ^
sys.h:57:24: note: in expansion of macro ‘my_syscall1’
57 | return (void *)my_syscall1(__NR_brk, addr);
| ^~~~~~~~~~~
arch-i386.h:84:29: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘asm’
84 | register long _arg1 asm("ebx") = (long)(arg1); \
```
It is because inline ASM is a GNU extension. So GCC thinks asm() is a
function call. To make it always available for any kind of compilation,
use `__asm__` instead of `asm`.
---
tools/include/nolibc/arch-aarch64.h | 72 ++++++++++++++--------------
tools/include/nolibc/arch-arm.h | 58 +++++++++++-----------
tools/include/nolibc/arch-i386.h | 56 +++++++++++-----------
tools/include/nolibc/arch-mips.h | 62 ++++++++++++------------
tools/include/nolibc/arch-riscv.h | 74 ++++++++++++++---------------
tools/include/nolibc/arch-x86_64.h | 72 ++++++++++++++--------------
6 files changed, 197 insertions(+), 197 deletions(-)
diff --git a/tools/include/nolibc/arch-aarch64.h b/tools/include/nolibc/arch-aarch64.h
index 2dbd80d633cb..d7f4fcf46d51 100644
--- a/tools/include/nolibc/arch-aarch64.h
+++ b/tools/include/nolibc/arch-aarch64.h
@@ -64,10 +64,10 @@ struct sys_stat_struct {
#define my_syscall0(num) \
({ \
- register long _num asm("x8") = (num); \
- register long _arg1 asm("x0"); \
+ register long _num __asm__("x8") = (num); \
+ register long _arg1 __asm__("x0"); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"svc #0\n" \
: "=r"(_arg1) \
: "r"(_num) \
@@ -78,10 +78,10 @@ struct sys_stat_struct {
#define my_syscall1(num, arg1) \
({ \
- register long _num asm("x8") = (num); \
- register long _arg1 asm("x0") = (long)(arg1); \
+ register long _num __asm__("x8") = (num); \
+ register long _arg1 __asm__("x0") = (long)(arg1); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"svc #0\n" \
: "=r"(_arg1) \
: "r"(_arg1), \
@@ -93,11 +93,11 @@ struct sys_stat_struct {
#define my_syscall2(num, arg1, arg2) \
({ \
- register long _num asm("x8") = (num); \
- register long _arg1 asm("x0") = (long)(arg1); \
- register long _arg2 asm("x1") = (long)(arg2); \
+ register long _num __asm__("x8") = (num); \
+ register long _arg1 __asm__("x0") = (long)(arg1); \
+ register long _arg2 __asm__("x1") = (long)(arg2); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"svc #0\n" \
: "=r"(_arg1) \
: "r"(_arg1), "r"(_arg2), \
@@ -109,12 +109,12 @@ struct sys_stat_struct {
#define my_syscall3(num, arg1, arg2, arg3) \
({ \
- register long _num asm("x8") = (num); \
- register long _arg1 asm("x0") = (long)(arg1); \
- register long _arg2 asm("x1") = (long)(arg2); \
- register long _arg3 asm("x2") = (long)(arg3); \
+ register long _num __asm__("x8") = (num); \
+ register long _arg1 __asm__("x0") = (long)(arg1); \
+ register long _arg2 __asm__("x1") = (long)(arg2); \
+ register long _arg3 __asm__("x2") = (long)(arg3); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"svc #0\n" \
: "=r"(_arg1) \
: "r"(_arg1), "r"(_arg2), "r"(_arg3), \
@@ -126,13 +126,13 @@ struct sys_stat_struct {
#define my_syscall4(num, arg1, arg2, arg3, arg4) \
({ \
- register long _num asm("x8") = (num); \
- register long _arg1 asm("x0") = (long)(arg1); \
- register long _arg2 asm("x1") = (long)(arg2); \
- register long _arg3 asm("x2") = (long)(arg3); \
- register long _arg4 asm("x3") = (long)(arg4); \
+ register long _num __asm__("x8") = (num); \
+ register long _arg1 __asm__("x0") = (long)(arg1); \
+ register long _arg2 __asm__("x1") = (long)(arg2); \
+ register long _arg3 __asm__("x2") = (long)(arg3); \
+ register long _arg4 __asm__("x3") = (long)(arg4); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"svc #0\n" \
: "=r"(_arg1) \
: "r"(_arg1), "r"(_arg2), "r"(_arg3), "r"(_arg4), \
@@ -144,14 +144,14 @@ struct sys_stat_struct {
#define my_syscall5(num, arg1, arg2, arg3, arg4, arg5) \
({ \
- register long _num asm("x8") = (num); \
- register long _arg1 asm("x0") = (long)(arg1); \
- register long _arg2 asm("x1") = (long)(arg2); \
- register long _arg3 asm("x2") = (long)(arg3); \
- register long _arg4 asm("x3") = (long)(arg4); \
- register long _arg5 asm("x4") = (long)(arg5); \
+ register long _num __asm__("x8") = (num); \
+ register long _arg1 __asm__("x0") = (long)(arg1); \
+ register long _arg2 __asm__("x1") = (long)(arg2); \
+ register long _arg3 __asm__("x2") = (long)(arg3); \
+ register long _arg4 __asm__("x3") = (long)(arg4); \
+ register long _arg5 __asm__("x4") = (long)(arg5); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"svc #0\n" \
: "=r" (_arg1) \
: "r"(_arg1), "r"(_arg2), "r"(_arg3), "r"(_arg4), "r"(_arg5), \
@@ -163,15 +163,15 @@ struct sys_stat_struct {
#define my_syscall6(num, arg1, arg2, arg3, arg4, arg5, arg6) \
({ \
- register long _num asm("x8") = (num); \
- register long _arg1 asm("x0") = (long)(arg1); \
- register long _arg2 asm("x1") = (long)(arg2); \
- register long _arg3 asm("x2") = (long)(arg3); \
- register long _arg4 asm("x3") = (long)(arg4); \
- register long _arg5 asm("x4") = (long)(arg5); \
- register long _arg6 asm("x5") = (long)(arg6); \
+ register long _num __asm__("x8") = (num); \
+ register long _arg1 __asm__("x0") = (long)(arg1); \
+ register long _arg2 __asm__("x1") = (long)(arg2); \
+ register long _arg3 __asm__("x2") = (long)(arg3); \
+ register long _arg4 __asm__("x3") = (long)(arg4); \
+ register long _arg5 __asm__("x4") = (long)(arg5); \
+ register long _arg6 __asm__("x5") = (long)(arg6); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"svc #0\n" \
: "=r" (_arg1) \
: "r"(_arg1), "r"(_arg2), "r"(_arg3), "r"(_arg4), "r"(_arg5), \
diff --git a/tools/include/nolibc/arch-arm.h b/tools/include/nolibc/arch-arm.h
index 1191395b5acd..0e88cbe42588 100644
--- a/tools/include/nolibc/arch-arm.h
+++ b/tools/include/nolibc/arch-arm.h
@@ -77,10 +77,10 @@ struct sys_stat_struct {
#define my_syscall0(num) \
({ \
- register long _num asm("r7") = (num); \
- register long _arg1 asm("r0"); \
+ register long _num __asm__("r7") = (num); \
+ register long _arg1 __asm__("r0"); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"svc #0\n" \
: "=r"(_arg1) \
: "r"(_num) \
@@ -91,10 +91,10 @@ struct sys_stat_struct {
#define my_syscall1(num, arg1) \
({ \
- register long _num asm("r7") = (num); \
- register long _arg1 asm("r0") = (long)(arg1); \
+ register long _num __asm__("r7") = (num); \
+ register long _arg1 __asm__("r0") = (long)(arg1); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"svc #0\n" \
: "=r"(_arg1) \
: "r"(_arg1), \
@@ -106,11 +106,11 @@ struct sys_stat_struct {
#define my_syscall2(num, arg1, arg2) \
({ \
- register long _num asm("r7") = (num); \
- register long _arg1 asm("r0") = (long)(arg1); \
- register long _arg2 asm("r1") = (long)(arg2); \
+ register long _num __asm__("r7") = (num); \
+ register long _arg1 __asm__("r0") = (long)(arg1); \
+ register long _arg2 __asm__("r1") = (long)(arg2); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"svc #0\n" \
: "=r"(_arg1) \
: "r"(_arg1), "r"(_arg2), \
@@ -122,12 +122,12 @@ struct sys_stat_struct {
#define my_syscall3(num, arg1, arg2, arg3) \
({ \
- register long _num asm("r7") = (num); \
- register long _arg1 asm("r0") = (long)(arg1); \
- register long _arg2 asm("r1") = (long)(arg2); \
- register long _arg3 asm("r2") = (long)(arg3); \
+ register long _num __asm__("r7") = (num); \
+ register long _arg1 __asm__("r0") = (long)(arg1); \
+ register long _arg2 __asm__("r1") = (long)(arg2); \
+ register long _arg3 __asm__("r2") = (long)(arg3); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"svc #0\n" \
: "=r"(_arg1) \
: "r"(_arg1), "r"(_arg2), "r"(_arg3), \
@@ -139,13 +139,13 @@ struct sys_stat_struct {
#define my_syscall4(num, arg1, arg2, arg3, arg4) \
({ \
- register long _num asm("r7") = (num); \
- register long _arg1 asm("r0") = (long)(arg1); \
- register long _arg2 asm("r1") = (long)(arg2); \
- register long _arg3 asm("r2") = (long)(arg3); \
- register long _arg4 asm("r3") = (long)(arg4); \
+ register long _num __asm__("r7") = (num); \
+ register long _arg1 __asm__("r0") = (long)(arg1); \
+ register long _arg2 __asm__("r1") = (long)(arg2); \
+ register long _arg3 __asm__("r2") = (long)(arg3); \
+ register long _arg4 __asm__("r3") = (long)(arg4); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"svc #0\n" \
: "=r"(_arg1) \
: "r"(_arg1), "r"(_arg2), "r"(_arg3), "r"(_arg4), \
@@ -157,14 +157,14 @@ struct sys_stat_struct {
#define my_syscall5(num, arg1, arg2, arg3, arg4, arg5) \
({ \
- register long _num asm("r7") = (num); \
- register long _arg1 asm("r0") = (long)(arg1); \
- register long _arg2 asm("r1") = (long)(arg2); \
- register long _arg3 asm("r2") = (long)(arg3); \
- register long _arg4 asm("r3") = (long)(arg4); \
- register long _arg5 asm("r4") = (long)(arg5); \
+ register long _num __asm__("r7") = (num); \
+ register long _arg1 __asm__("r0") = (long)(arg1); \
+ register long _arg2 __asm__("r1") = (long)(arg2); \
+ register long _arg3 __asm__("r2") = (long)(arg3); \
+ register long _arg4 __asm__("r3") = (long)(arg4); \
+ register long _arg5 __asm__("r4") = (long)(arg5); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"svc #0\n" \
: "=r" (_arg1) \
: "r"(_arg1), "r"(_arg2), "r"(_arg3), "r"(_arg4), "r"(_arg5), \
@@ -175,7 +175,7 @@ struct sys_stat_struct {
})
/* startup code */
-asm(".section .text\n"
+__asm__(".section .text\n"
".weak _start\n"
"_start:\n"
#if defined(__THUMBEB__) || defined(__THUMBEL__)
diff --git a/tools/include/nolibc/arch-i386.h b/tools/include/nolibc/arch-i386.h
index 125a691fc631..ff2e6bb453cf 100644
--- a/tools/include/nolibc/arch-i386.h
+++ b/tools/include/nolibc/arch-i386.h
@@ -66,9 +66,9 @@ struct sys_stat_struct {
#define my_syscall0(num) \
({ \
long _ret; \
- register long _num asm("eax") = (num); \
+ register long _num __asm__("eax") = (num); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"int $0x80\n" \
: "=a" (_ret) \
: "0"(_num) \
@@ -80,10 +80,10 @@ struct sys_stat_struct {
#define my_syscall1(num, arg1) \
({ \
long _ret; \
- register long _num asm("eax") = (num); \
- register long _arg1 asm("ebx") = (long)(arg1); \
+ register long _num __asm__("eax") = (num); \
+ register long _arg1 __asm__("ebx") = (long)(arg1); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"int $0x80\n" \
: "=a" (_ret) \
: "r"(_arg1), \
@@ -96,11 +96,11 @@ struct sys_stat_struct {
#define my_syscall2(num, arg1, arg2) \
({ \
long _ret; \
- register long _num asm("eax") = (num); \
- register long _arg1 asm("ebx") = (long)(arg1); \
- register long _arg2 asm("ecx") = (long)(arg2); \
+ register long _num __asm__("eax") = (num); \
+ register long _arg1 __asm__("ebx") = (long)(arg1); \
+ register long _arg2 __asm__("ecx") = (long)(arg2); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"int $0x80\n" \
: "=a" (_ret) \
: "r"(_arg1), "r"(_arg2), \
@@ -113,12 +113,12 @@ struct sys_stat_struct {
#define my_syscall3(num, arg1, arg2, arg3) \
({ \
long _ret; \
- register long _num asm("eax") = (num); \
- register long _arg1 asm("ebx") = (long)(arg1); \
- register long _arg2 asm("ecx") = (long)(arg2); \
- register long _arg3 asm("edx") = (long)(arg3); \
+ register long _num __asm__("eax") = (num); \
+ register long _arg1 __asm__("ebx") = (long)(arg1); \
+ register long _arg2 __asm__("ecx") = (long)(arg2); \
+ register long _arg3 __asm__("edx") = (long)(arg3); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"int $0x80\n" \
: "=a" (_ret) \
: "r"(_arg1), "r"(_arg2), "r"(_arg3), \
@@ -131,13 +131,13 @@ struct sys_stat_struct {
#define my_syscall4(num, arg1, arg2, arg3, arg4) \
({ \
long _ret; \
- register long _num asm("eax") = (num); \
- register long _arg1 asm("ebx") = (long)(arg1); \
- register long _arg2 asm("ecx") = (long)(arg2); \
- register long _arg3 asm("edx") = (long)(arg3); \
- register long _arg4 asm("esi") = (long)(arg4); \
+ register long _num __asm__("eax") = (num); \
+ register long _arg1 __asm__("ebx") = (long)(arg1); \
+ register long _arg2 __asm__("ecx") = (long)(arg2); \
+ register long _arg3 __asm__("edx") = (long)(arg3); \
+ register long _arg4 __asm__("esi") = (long)(arg4); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"int $0x80\n" \
: "=a" (_ret) \
: "r"(_arg1), "r"(_arg2), "r"(_arg3), "r"(_arg4), \
@@ -150,14 +150,14 @@ struct sys_stat_struct {
#define my_syscall5(num, arg1, arg2, arg3, arg4, arg5) \
({ \
long _ret; \
- register long _num asm("eax") = (num); \
- register long _arg1 asm("ebx") = (long)(arg1); \
- register long _arg2 asm("ecx") = (long)(arg2); \
- register long _arg3 asm("edx") = (long)(arg3); \
- register long _arg4 asm("esi") = (long)(arg4); \
- register long _arg5 asm("edi") = (long)(arg5); \
+ register long _num __asm__("eax") = (num); \
+ register long _arg1 __asm__("ebx") = (long)(arg1); \
+ register long _arg2 __asm__("ecx") = (long)(arg2); \
+ register long _arg3 __asm__("edx") = (long)(arg3); \
+ register long _arg4 __asm__("esi") = (long)(arg4); \
+ register long _arg5 __asm__("edi") = (long)(arg5); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"int $0x80\n" \
: "=a" (_ret) \
: "r"(_arg1), "r"(_arg2), "r"(_arg3), "r"(_arg4), "r"(_arg5), \
@@ -174,7 +174,7 @@ struct sys_stat_struct {
* 2) The deepest stack frame should be set to zero
*
*/
-asm(".section .text\n"
+__asm__(".section .text\n"
".weak _start\n"
"_start:\n"
"pop %eax\n" // argc (first arg, %eax)
diff --git a/tools/include/nolibc/arch-mips.h b/tools/include/nolibc/arch-mips.h
index 1a124790c99f..b43da77fde0e 100644
--- a/tools/include/nolibc/arch-mips.h
+++ b/tools/include/nolibc/arch-mips.h
@@ -69,10 +69,10 @@ struct sys_stat_struct {
#define my_syscall0(num) \
({ \
- register long _num asm("v0") = (num); \
- register long _arg4 asm("a3"); \
+ register long _num __asm__("v0") = (num); \
+ register long _arg4 __asm__("a3"); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"addiu $sp, $sp, -32\n" \
"syscall\n" \
"addiu $sp, $sp, 32\n" \
@@ -86,11 +86,11 @@ struct sys_stat_struct {
#define my_syscall1(num, arg1) \
({ \
- register long _num asm("v0") = (num); \
- register long _arg1 asm("a0") = (long)(arg1); \
- register long _arg4 asm("a3"); \
+ register long _num __asm__("v0") = (num); \
+ register long _arg1 __asm__("a0") = (long)(arg1); \
+ register long _arg4 __asm__("a3"); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"addiu $sp, $sp, -32\n" \
"syscall\n" \
"addiu $sp, $sp, 32\n" \
@@ -105,12 +105,12 @@ struct sys_stat_struct {
#define my_syscall2(num, arg1, arg2) \
({ \
- register long _num asm("v0") = (num); \
- register long _arg1 asm("a0") = (long)(arg1); \
- register long _arg2 asm("a1") = (long)(arg2); \
- register long _arg4 asm("a3"); \
+ register long _num __asm__("v0") = (num); \
+ register long _arg1 __asm__("a0") = (long)(arg1); \
+ register long _arg2 __asm__("a1") = (long)(arg2); \
+ register long _arg4 __asm__("a3"); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"addiu $sp, $sp, -32\n" \
"syscall\n" \
"addiu $sp, $sp, 32\n" \
@@ -125,13 +125,13 @@ struct sys_stat_struct {
#define my_syscall3(num, arg1, arg2, arg3) \
({ \
- register long _num asm("v0") = (num); \
- register long _arg1 asm("a0") = (long)(arg1); \
- register long _arg2 asm("a1") = (long)(arg2); \
- register long _arg3 asm("a2") = (long)(arg3); \
- register long _arg4 asm("a3"); \
+ register long _num __asm__("v0") = (num); \
+ register long _arg1 __asm__("a0") = (long)(arg1); \
+ register long _arg2 __asm__("a1") = (long)(arg2); \
+ register long _arg3 __asm__("a2") = (long)(arg3); \
+ register long _arg4 __asm__("a3"); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"addiu $sp, $sp, -32\n" \
"syscall\n" \
"addiu $sp, $sp, 32\n" \
@@ -146,13 +146,13 @@ struct sys_stat_struct {
#define my_syscall4(num, arg1, arg2, arg3, arg4) \
({ \
- register long _num asm("v0") = (num); \
- register long _arg1 asm("a0") = (long)(arg1); \
- register long _arg2 asm("a1") = (long)(arg2); \
- register long _arg3 asm("a2") = (long)(arg3); \
- register long _arg4 asm("a3") = (long)(arg4); \
+ register long _num __asm__("v0") = (num); \
+ register long _arg1 __asm__("a0") = (long)(arg1); \
+ register long _arg2 __asm__("a1") = (long)(arg2); \
+ register long _arg3 __asm__("a2") = (long)(arg3); \
+ register long _arg4 __asm__("a3") = (long)(arg4); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"addiu $sp, $sp, -32\n" \
"syscall\n" \
"addiu $sp, $sp, 32\n" \
@@ -167,14 +167,14 @@ struct sys_stat_struct {
#define my_syscall5(num, arg1, arg2, arg3, arg4, arg5) \
({ \
- register long _num asm("v0") = (num); \
- register long _arg1 asm("a0") = (long)(arg1); \
- register long _arg2 asm("a1") = (long)(arg2); \
- register long _arg3 asm("a2") = (long)(arg3); \
- register long _arg4 asm("a3") = (long)(arg4); \
+ register long _num __asm__("v0") = (num); \
+ register long _arg1 __asm__("a0") = (long)(arg1); \
+ register long _arg2 __asm__("a1") = (long)(arg2); \
+ register long _arg3 __asm__("a2") = (long)(arg3); \
+ register long _arg4 __asm__("a3") = (long)(arg4); \
register long _arg5 = (long)(arg5); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"addiu $sp, $sp, -32\n" \
"sw %7, 16($sp)\n" \
"syscall\n " \
@@ -189,7 +189,7 @@ struct sys_stat_struct {
})
/* startup code, note that it's called __start on MIPS */
-asm(".section .text\n"
+__asm__(".section .text\n"
".weak __start\n"
".set nomips16\n"
".set noreorder\n"
diff --git a/tools/include/nolibc/arch-riscv.h b/tools/include/nolibc/arch-riscv.h
index 511d67fc534e..100bc71da344 100644
--- a/tools/include/nolibc/arch-riscv.h
+++ b/tools/include/nolibc/arch-riscv.h
@@ -66,10 +66,10 @@ struct sys_stat_struct {
#define my_syscall0(num) \
({ \
- register long _num asm("a7") = (num); \
- register long _arg1 asm("a0"); \
+ register long _num __asm__("a7") = (num); \
+ register long _arg1 __asm__("a0"); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"ecall\n\t" \
: "=r"(_arg1) \
: "r"(_num) \
@@ -80,10 +80,10 @@ struct sys_stat_struct {
#define my_syscall1(num, arg1) \
({ \
- register long _num asm("a7") = (num); \
- register long _arg1 asm("a0") = (long)(arg1); \
+ register long _num __asm__("a7") = (num); \
+ register long _arg1 __asm__("a0") = (long)(arg1); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"ecall\n" \
: "+r"(_arg1) \
: "r"(_num) \
@@ -94,11 +94,11 @@ struct sys_stat_struct {
#define my_syscall2(num, arg1, arg2) \
({ \
- register long _num asm("a7") = (num); \
- register long _arg1 asm("a0") = (long)(arg1); \
- register long _arg2 asm("a1") = (long)(arg2); \
+ register long _num __asm__("a7") = (num); \
+ register long _arg1 __asm__("a0") = (long)(arg1); \
+ register long _arg2 __asm__("a1") = (long)(arg2); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"ecall\n" \
: "+r"(_arg1) \
: "r"(_arg2), \
@@ -110,12 +110,12 @@ struct sys_stat_struct {
#define my_syscall3(num, arg1, arg2, arg3) \
({ \
- register long _num asm("a7") = (num); \
- register long _arg1 asm("a0") = (long)(arg1); \
- register long _arg2 asm("a1") = (long)(arg2); \
- register long _arg3 asm("a2") = (long)(arg3); \
+ register long _num __asm__("a7") = (num); \
+ register long _arg1 __asm__("a0") = (long)(arg1); \
+ register long _arg2 __asm__("a1") = (long)(arg2); \
+ register long _arg3 __asm__("a2") = (long)(arg3); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"ecall\n\t" \
: "+r"(_arg1) \
: "r"(_arg2), "r"(_arg3), \
@@ -127,13 +127,13 @@ struct sys_stat_struct {
#define my_syscall4(num, arg1, arg2, arg3, arg4) \
({ \
- register long _num asm("a7") = (num); \
- register long _arg1 asm("a0") = (long)(arg1); \
- register long _arg2 asm("a1") = (long)(arg2); \
- register long _arg3 asm("a2") = (long)(arg3); \
- register long _arg4 asm("a3") = (long)(arg4); \
+ register long _num __asm__("a7") = (num); \
+ register long _arg1 __asm__("a0") = (long)(arg1); \
+ register long _arg2 __asm__("a1") = (long)(arg2); \
+ register long _arg3 __asm__("a2") = (long)(arg3); \
+ register long _arg4 __asm__("a3") = (long)(arg4); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"ecall\n" \
: "+r"(_arg1) \
: "r"(_arg2), "r"(_arg3), "r"(_arg4), \
@@ -145,14 +145,14 @@ struct sys_stat_struct {
#define my_syscall5(num, arg1, arg2, arg3, arg4, arg5) \
({ \
- register long _num asm("a7") = (num); \
- register long _arg1 asm("a0") = (long)(arg1); \
- register long _arg2 asm("a1") = (long)(arg2); \
- register long _arg3 asm("a2") = (long)(arg3); \
- register long _arg4 asm("a3") = (long)(arg4); \
- register long _arg5 asm("a4") = (long)(arg5); \
+ register long _num __asm__("a7") = (num); \
+ register long _arg1 __asm__("a0") = (long)(arg1); \
+ register long _arg2 __asm__("a1") = (long)(arg2); \
+ register long _arg3 __asm__("a2") = (long)(arg3); \
+ register long _arg4 __asm__("a3") = (long)(arg4); \
+ register long _arg5 __asm__("a4") = (long)(arg5); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"ecall\n" \
: "+r"(_arg1) \
: "r"(_arg2), "r"(_arg3), "r"(_arg4), "r"(_arg5), \
@@ -164,15 +164,15 @@ struct sys_stat_struct {
#define my_syscall6(num, arg1, arg2, arg3, arg4, arg5, arg6) \
({ \
- register long _num asm("a7") = (num); \
- register long _arg1 asm("a0") = (long)(arg1); \
- register long _arg2 asm("a1") = (long)(arg2); \
- register long _arg3 asm("a2") = (long)(arg3); \
- register long _arg4 asm("a3") = (long)(arg4); \
- register long _arg5 asm("a4") = (long)(arg5); \
- register long _arg6 asm("a5") = (long)(arg6); \
+ register long _num __asm__("a7") = (num); \
+ register long _arg1 __asm__("a0") = (long)(arg1); \
+ register long _arg2 __asm__("a1") = (long)(arg2); \
+ register long _arg3 __asm__("a2") = (long)(arg3); \
+ register long _arg4 __asm__("a3") = (long)(arg4); \
+ register long _arg5 __asm__("a4") = (long)(arg5); \
+ register long _arg6 __asm__("a5") = (long)(arg6); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"ecall\n" \
: "+r"(_arg1) \
: "r"(_arg2), "r"(_arg3), "r"(_arg4), "r"(_arg5), "r"(_arg6), \
@@ -183,7 +183,7 @@ struct sys_stat_struct {
})
/* startup code */
-asm(".section .text\n"
+__asm__(".section .text\n"
".weak _start\n"
"_start:\n"
".option push\n"
diff --git a/tools/include/nolibc/arch-x86_64.h b/tools/include/nolibc/arch-x86_64.h
index 84c174181425..afc50f84a036 100644
--- a/tools/include/nolibc/arch-x86_64.h
+++ b/tools/include/nolibc/arch-x86_64.h
@@ -68,9 +68,9 @@ struct sys_stat_struct {
#define my_syscall0(num) \
({ \
long _ret; \
- register long _num asm("rax") = (num); \
+ register long _num __asm__("rax") = (num); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"syscall\n" \
: "=a"(_ret) \
: "0"(_num) \
@@ -82,10 +82,10 @@ struct sys_stat_struct {
#define my_syscall1(num, arg1) \
({ \
long _ret; \
- register long _num asm("rax") = (num); \
- register long _arg1 asm("rdi") = (long)(arg1); \
+ register long _num __asm__("rax") = (num); \
+ register long _arg1 __asm__("rdi") = (long)(arg1); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"syscall\n" \
: "=a"(_ret) \
: "r"(_arg1), \
@@ -98,11 +98,11 @@ struct sys_stat_struct {
#define my_syscall2(num, arg1, arg2) \
({ \
long _ret; \
- register long _num asm("rax") = (num); \
- register long _arg1 asm("rdi") = (long)(arg1); \
- register long _arg2 asm("rsi") = (long)(arg2); \
+ register long _num __asm__("rax") = (num); \
+ register long _arg1 __asm__("rdi") = (long)(arg1); \
+ register long _arg2 __asm__("rsi") = (long)(arg2); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"syscall\n" \
: "=a"(_ret) \
: "r"(_arg1), "r"(_arg2), \
@@ -115,12 +115,12 @@ struct sys_stat_struct {
#define my_syscall3(num, arg1, arg2, arg3) \
({ \
long _ret; \
- register long _num asm("rax") = (num); \
- register long _arg1 asm("rdi") = (long)(arg1); \
- register long _arg2 asm("rsi") = (long)(arg2); \
- register long _arg3 asm("rdx") = (long)(arg3); \
+ register long _num __asm__("rax") = (num); \
+ register long _arg1 __asm__("rdi") = (long)(arg1); \
+ register long _arg2 __asm__("rsi") = (long)(arg2); \
+ register long _arg3 __asm__("rdx") = (long)(arg3); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"syscall\n" \
: "=a"(_ret) \
: "r"(_arg1), "r"(_arg2), "r"(_arg3), \
@@ -133,13 +133,13 @@ struct sys_stat_struct {
#define my_syscall4(num, arg1, arg2, arg3, arg4) \
({ \
long _ret; \
- register long _num asm("rax") = (num); \
- register long _arg1 asm("rdi") = (long)(arg1); \
- register long _arg2 asm("rsi") = (long)(arg2); \
- register long _arg3 asm("rdx") = (long)(arg3); \
- register long _arg4 asm("r10") = (long)(arg4); \
+ register long _num __asm__("rax") = (num); \
+ register long _arg1 __asm__("rdi") = (long)(arg1); \
+ register long _arg2 __asm__("rsi") = (long)(arg2); \
+ register long _arg3 __asm__("rdx") = (long)(arg3); \
+ register long _arg4 __asm__("r10") = (long)(arg4); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"syscall\n" \
: "=a"(_ret) \
: "r"(_arg1), "r"(_arg2), "r"(_arg3), "r"(_arg4), \
@@ -152,14 +152,14 @@ struct sys_stat_struct {
#define my_syscall5(num, arg1, arg2, arg3, arg4, arg5) \
({ \
long _ret; \
- register long _num asm("rax") = (num); \
- register long _arg1 asm("rdi") = (long)(arg1); \
- register long _arg2 asm("rsi") = (long)(arg2); \
- register long _arg3 asm("rdx") = (long)(arg3); \
- register long _arg4 asm("r10") = (long)(arg4); \
- register long _arg5 asm("r8") = (long)(arg5); \
+ register long _num __asm__("rax") = (num); \
+ register long _arg1 __asm__("rdi") = (long)(arg1); \
+ register long _arg2 __asm__("rsi") = (long)(arg2); \
+ register long _arg3 __asm__("rdx") = (long)(arg3); \
+ register long _arg4 __asm__("r10") = (long)(arg4); \
+ register long _arg5 __asm__("r8") = (long)(arg5); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"syscall\n" \
: "=a"(_ret) \
: "r"(_arg1), "r"(_arg2), "r"(_arg3), "r"(_arg4), "r"(_arg5), \
@@ -172,15 +172,15 @@ struct sys_stat_struct {
#define my_syscall6(num, arg1, arg2, arg3, arg4, arg5, arg6) \
({ \
long _ret; \
- register long _num asm("rax") = (num); \
- register long _arg1 asm("rdi") = (long)(arg1); \
- register long _arg2 asm("rsi") = (long)(arg2); \
- register long _arg3 asm("rdx") = (long)(arg3); \
- register long _arg4 asm("r10") = (long)(arg4); \
- register long _arg5 asm("r8") = (long)(arg5); \
- register long _arg6 asm("r9") = (long)(arg6); \
+ register long _num __asm__("rax") = (num); \
+ register long _arg1 __asm__("rdi") = (long)(arg1); \
+ register long _arg2 __asm__("rsi") = (long)(arg2); \
+ register long _arg3 __asm__("rdx") = (long)(arg3); \
+ register long _arg4 __asm__("r10") = (long)(arg4); \
+ register long _arg5 __asm__("r8") = (long)(arg5); \
+ register long _arg6 __asm__("r9") = (long)(arg6); \
\
- asm volatile ( \
+ __asm__ volatile ( \
"syscall\n" \
: "=a"(_ret) \
: "r"(_arg1), "r"(_arg2), "r"(_arg3), "r"(_arg4), "r"(_arg5), \
@@ -197,7 +197,7 @@ struct sys_stat_struct {
* 2) The deepest stack frame should be zero (the %rbp).
*
*/
-asm(".section .text\n"
+__asm__(".section .text\n"
".weak _start\n"
"_start:\n"
"pop %rdi\n" // argc (first arg, %rdi)
--
Ammar Faizi
next prev parent reply other threads:[~2022-03-24 7:30 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-24 7:30 [PATCH v1 00/11] Add dynamic memory allocator support for nolibc Ammar Faizi
2022-03-24 7:30 ` [PATCH v1 01/11] tools/nolibc: x86-64: Update System V ABI document link Ammar Faizi
2022-03-24 7:30 ` [PATCH v1 02/11] tools/nolibc: Remove .global _start from the entry point code Ammar Faizi
2022-03-24 7:30 ` Ammar Faizi [this message]
2022-03-24 7:41 ` [PATCH v1 03/11] tools/nolibc: Replace `asm` with `__asm__` Willy Tarreau
2022-03-24 9:03 ` Ammar Faizi
2022-03-24 7:30 ` [PATCH v1 04/11] tools/nolibc: x86-64: Use appropriate register constraints if exist Ammar Faizi
2022-03-24 7:57 ` Willy Tarreau
2022-03-24 8:33 ` Alviro Iskandar Setiawan
2022-03-24 9:00 ` Ammar Faizi
2022-03-24 15:42 ` Willy Tarreau
2022-03-24 7:30 ` [PATCH v1 05/11] tools/nolibc: i386: " Ammar Faizi
2022-03-24 7:30 ` [PATCH v1 06/11] tools/nolibc: i386: Implement syscall with 6 arguments Ammar Faizi
2022-03-24 7:30 ` [PATCH v1 07/11] tools/nolibc/sys: Implement `mmap()` and `munmap()` Ammar Faizi
2022-03-24 7:30 ` [PATCH v1 08/11] tools/nolibc/types: Implement `offsetof()` and `container_of()` macro Ammar Faizi
2022-03-24 7:30 ` [PATCH v1 09/11] tools/nolibc/stdlib: Implement `malloc()`, `calloc()`, `realloc()` and `free()` Ammar Faizi
2022-03-24 7:30 ` [PATCH v1 10/11] tools/nolibc/string: Implement `strnlen()` Ammar Faizi
2022-03-24 7:30 ` [PATCH v1 11/11] tools/include/string: Implement `strdup()` and `strndup()` Ammar Faizi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
[email protected] \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox