* Base should be "out of the way," and size should be big enough to
* cover everything we plan to put here.
*/
-#define SVM_GLOBAL_REGION_BASEVA 0x30000000
#define SVM_GLOBAL_REGION_SIZE (64<<20)
#define SVM_GLOBAL_REGION_NAME "/global_vm"
+#if defined (__aarch64__)
+#define VA_BITS 48
+#define BASEVA ((1ul << VA_BITS) / 4)
+#define SVM_GLOBAL_REGION_BASEVA (BASEVA - (2 * SVM_GLOBAL_REGION_SIZE))
+#else
+#define SVM_GLOBAL_REGION_BASEVA 0x30000000
+#endif
/*
* Memory shared across individual router instances.
svm_subregion_t *subregions; /* subregion pool */
uword *name_hash;
u8 *root_path;
+ int uid;
+ int gid;
} svm_main_region_t;
void *svm_region_find_or_create (svm_map_region_args_t * a);
void svm_region_init (void);
+void svm_region_init_mapped_region (svm_map_region_args_t * a,
+ svm_region_t * rp);
int svm_region_init_chroot (const char *root_path);
void svm_region_init_chroot_uid_gid (const char *root_path, int uid, int gid);
void svm_region_init_args (svm_map_region_args_t * a);