diff --git a/include/common/mini-clist.h b/include/common/mini-clist.h
index c2fba4f..648cbd5 100644
--- a/include/common/mini-clist.h
+++ b/include/common/mini-clist.h
@@ -189,10 +189,10 @@
 		while (1) {                                                \
 			struct list *n;                                    \
 			struct list *p;                                    \
-			n = HA_ATOMIC_XCHG(&(lh)->n, LLIST_BUSY);          \
+			n = _HA_ATOMIC_XCHG(&(lh)->n, LLIST_BUSY);         \
 			if (n == LLIST_BUSY)                               \
 			        continue;                                  \
-			p = HA_ATOMIC_XCHG(&n->p, LLIST_BUSY);             \
+			p = _HA_ATOMIC_XCHG(&n->p, LLIST_BUSY);            \
 			if (p == LLIST_BUSY) {                             \
 				(lh)->n = n;                               \
 				__ha_barrier_store();                      \
@@ -214,10 +214,10 @@
 		while (1) {                                                \
 			struct list *n;                                    \
 			struct list *p;                                    \
-			p = HA_ATOMIC_XCHG(&(lh)->p, LLIST_BUSY);          \
+			p = _HA_ATOMIC_XCHG(&(lh)->p, LLIST_BUSY);         \
 			if (p == LLIST_BUSY)                               \
 			        continue;                                  \
-			n = HA_ATOMIC_XCHG(&p->n, LLIST_BUSY);             \
+			n = _HA_ATOMIC_XCHG(&p->n, LLIST_BUSY);            \
 			if (n == LLIST_BUSY) {                             \
 				(lh)->p = p;                               \
 				__ha_barrier_store();                      \
@@ -239,17 +239,17 @@
 		while (1) {                                                \
 			struct list *n, *n2;                               \
 			struct list *p, *p2 = NULL;                        \
-			n = HA_ATOMIC_XCHG(&(el)->n, LLIST_BUSY);          \
+			n = _HA_ATOMIC_XCHG(&(el)->n, LLIST_BUSY);         \
 			if (n == LLIST_BUSY)                               \
 			        continue;                                  \
-			p = HA_ATOMIC_XCHG(&(el)->p, LLIST_BUSY);          \
+			p = _HA_ATOMIC_XCHG(&(el)->p, LLIST_BUSY);         \
 			if (p == LLIST_BUSY) {                             \
 				(el)->n = n;                               \
 				__ha_barrier_store();                      \
 				continue;                                  \
 			}                                                  \
 			if (p != (el)) {                                   \
-			        p2 = HA_ATOMIC_XCHG(&p->n, LLIST_BUSY);    \
+			        p2 = _HA_ATOMIC_XCHG(&p->n, LLIST_BUSY);   \
 			        if (p2 == LLIST_BUSY) {                    \
 			                (el)->p = p;                       \
 					(el)->n = n;                       \
@@ -258,7 +258,7 @@
 				}                                          \
 			}                                                  \
 			if (n != (el)) {                                   \
-			        n2 = HA_ATOMIC_XCHG(&n->p, LLIST_BUSY);    \
+			        n2 = _HA_ATOMIC_XCHG(&n->p, LLIST_BUSY);   \
 				if (n2 == LLIST_BUSY) {                    \
 					if (p2 != NULL)                    \
 						p->n = p2;                 \
@@ -286,7 +286,7 @@
 		 while (1) {                                               \
 			 struct list *n, *n2;                              \
 			 struct list *p, *p2;                              \
-			 n = HA_ATOMIC_XCHG(&(lh)->n, LLIST_BUSY);         \
+			 n = _HA_ATOMIC_XCHG(&(lh)->n, LLIST_BUSY);        \
 			 if (n == LLIST_BUSY)                              \
 			         continue;                                 \
 			 if (n == (lh)) {                                  \
@@ -295,13 +295,13 @@
 				 _ret = NULL;                              \
 				 break;                                    \
 			 }                                                 \
-			 p = HA_ATOMIC_XCHG(&n->p, LLIST_BUSY);            \
+			 p = _HA_ATOMIC_XCHG(&n->p, LLIST_BUSY);           \
 			 if (p == LLIST_BUSY) {                            \
 				 (lh)->n = n;                              \
 				 __ha_barrier_store();                     \
 				 continue;                                 \
 			 }                                                 \
-			 n2 = HA_ATOMIC_XCHG(&n->n, LLIST_BUSY);           \
+			 n2 = _HA_ATOMIC_XCHG(&n->n, LLIST_BUSY);          \
 			 if (n2 == LLIST_BUSY) {                           \
 				 n->p = p;                                 \
 				 __ha_barrier_store();                     \
@@ -309,7 +309,7 @@
 				 __ha_barrier_store();                     \
 				 continue;                                 \
 			 }                                                 \
-			 p2 = HA_ATOMIC_XCHG(&n2->p, LLIST_BUSY);          \
+			 p2 = _HA_ATOMIC_XCHG(&n2->p, LLIST_BUSY);         \
 			 if (p2 == LLIST_BUSY) {                           \
 				 n->n = n2;                                \
 				 n->p = p;                                 \
