|
@@ -26,6 +26,15 @@
|
|
|
|
|
|
#else
|
|
#else
|
|
|
|
|
|
|
|
+#ifdef BUILD_VDSO32
|
|
|
|
+
|
|
|
|
+#define DECLARE_VVAR(offset, type, name) \
|
|
|
|
+ extern type vvar_ ## name __attribute__((visibility("hidden")));
|
|
|
|
+
|
|
|
|
+#define VVAR(name) (vvar_ ## name)
|
|
|
|
+
|
|
|
|
+#else
|
|
|
|
+
|
|
extern char __vvar_page;
|
|
extern char __vvar_page;
|
|
|
|
|
|
/* Base address of vvars. This is not ABI. */
|
|
/* Base address of vvars. This is not ABI. */
|
|
@@ -39,12 +48,13 @@ extern char __vvar_page;
|
|
static type const * const vvaraddr_ ## name = \
|
|
static type const * const vvaraddr_ ## name = \
|
|
(void *)(VVAR_ADDRESS + (offset));
|
|
(void *)(VVAR_ADDRESS + (offset));
|
|
|
|
|
|
|
|
+#define VVAR(name) (*vvaraddr_ ## name)
|
|
|
|
+#endif
|
|
|
|
+
|
|
#define DEFINE_VVAR(type, name) \
|
|
#define DEFINE_VVAR(type, name) \
|
|
type name \
|
|
type name \
|
|
__attribute__((section(".vvar_" #name), aligned(16))) __visible
|
|
__attribute__((section(".vvar_" #name), aligned(16))) __visible
|
|
|
|
|
|
-#define VVAR(name) (*vvaraddr_ ## name)
|
|
|
|
-
|
|
|
|
#endif
|
|
#endif
|
|
|
|
|
|
/* DECLARE_VVAR(offset, type, name) */
|
|
/* DECLARE_VVAR(offset, type, name) */
|