diff --git a/include/types/global.h b/include/types/global.h
index 16fce72..879273a 100644
--- a/include/types/global.h
+++ b/include/types/global.h
@@ -198,6 +198,7 @@
 extern int  pid;                /* current process id */
 extern int  relative_pid;       /* process id starting at 1 */
 extern unsigned long pid_bit;   /* bit corresponding to the process id */
+extern unsigned long all_proc_mask; /* mask of all processes */
 extern int  actconn;            /* # of active sessions */
 extern int  listeners;
 extern int  jobs;               /* # of active jobs (listeners, sessions, open devices) */
diff --git a/src/cfgparse-global.c b/src/cfgparse-global.c
index 2cdcf76..820c7b6 100644
--- a/src/cfgparse-global.c
+++ b/src/cfgparse-global.c
@@ -489,6 +489,7 @@
 			goto out;
 		}
 		global.nbproc = atol(args[1]);
+		all_proc_mask = nbits(global.nbproc);
 		if (global.nbproc < 1 || global.nbproc > LONGBITS) {
 			ha_alert("parsing [%s:%d] : '%s' must be between 1 and %d (was %d).\n",
 				 file, linenum, args[0], LONGBITS, global.nbproc);
diff --git a/src/cfgparse.c b/src/cfgparse.c
index 40a21e7..441f4a6 100644
--- a/src/cfgparse.c
+++ b/src/cfgparse.c
@@ -2246,7 +2246,7 @@
 			 */
 			nbproc = my_popcountl(curproxy->bind_proc);
 
-			curproxy->bind_proc &= nbits(global.nbproc);
+			curproxy->bind_proc &= all_proc_mask;
 			if (!curproxy->bind_proc && nbproc == 1) {
 				ha_warning("Proxy '%s': the process specified on the 'bind-process' directive refers to a process number that is higher than global.nbproc. The proxy has been forced to run on process 1 only.\n", curproxy->id);
 				curproxy->bind_proc = 1;
@@ -2311,7 +2311,7 @@
 			if (!bind_conf->bind_proc)
 				continue;
 
-			mask = nbits(global.nbproc);
+			mask = all_proc_mask;
 			if (curproxy->bind_proc)
 				mask &= curproxy->bind_proc;
 			/* mask cannot be null here thanks to the previous checks */
@@ -3550,7 +3550,7 @@
 		list_for_each_entry(bind_conf, &global.stats_fe->conf.bind, by_fe) {
 			unsigned long mask;
 
-			mask = nbits(global.nbproc);
+			mask = all_proc_mask;
 			if (global.stats_fe->bind_proc)
 				mask &= global.stats_fe->bind_proc;
 
@@ -3574,12 +3574,12 @@
 		list_for_each_entry(bind_conf, &curproxy->conf.bind, by_fe) {
 			unsigned long mask;
 
-			mask = bind_conf->bind_proc ? bind_conf->bind_proc : nbits(global.nbproc);
+			mask = bind_conf->bind_proc ? bind_conf->bind_proc : all_proc_mask;
 			curproxy->bind_proc |= mask;
 		}
 
 		if (!curproxy->bind_proc)
-			curproxy->bind_proc = nbits(global.nbproc);
+			curproxy->bind_proc = all_proc_mask;
 	}
 
 	if (global.stats_fe) {
@@ -3590,7 +3590,7 @@
 			global.stats_fe->bind_proc |= mask;
 		}
 		if (!global.stats_fe->bind_proc)
-			global.stats_fe->bind_proc = nbits(global.nbproc);
+			global.stats_fe->bind_proc = all_proc_mask;
 	}
 
 	/* propagate bindings from frontends to backends. Don't do it if there
@@ -3607,7 +3607,7 @@
 	for (curproxy = proxies_list; curproxy; curproxy = curproxy->next) {
 		if (curproxy->bind_proc)
 			continue;
-		curproxy->bind_proc = nbits(global.nbproc);
+		curproxy->bind_proc = all_proc_mask;
 	}
 
 	/*******************************************************/
@@ -3637,7 +3637,7 @@
 
 			nbproc = my_popcountl(curproxy->bind_proc &
 			                      (listener->bind_conf->bind_proc ? listener->bind_conf->bind_proc : curproxy->bind_proc) &
-			                      nbits(global.nbproc));
+			                      all_proc_mask);
 
 			if (!nbproc) /* no intersection between listener and frontend */
 				nbproc = 1;
@@ -3707,7 +3707,7 @@
 				bind_conf->xprt->destroy_bind_conf(bind_conf);
 		}
 
-		if (atleast2(curproxy->bind_proc & nbits(global.nbproc))) {
+		if (atleast2(curproxy->bind_proc & all_proc_mask)) {
 			if (curproxy->uri_auth) {
 				int count, maxproc = 0;
 
diff --git a/src/haproxy.c b/src/haproxy.c
index 5a69086..ce4cde3 100644
--- a/src/haproxy.c
+++ b/src/haproxy.c
@@ -129,6 +129,7 @@
 int  pid;			/* current process id */
 int  relative_pid = 1;		/* process id starting at 1 */
 unsigned long pid_bit = 1;      /* bit corresponding to the process id */
+unsigned long all_proc_mask = 1; /* mask of all processes */
 
 volatile unsigned long sleeping_thread_mask; /* Threads that are about to sleep in poll() */
 /* global options */
@@ -903,6 +904,7 @@
 	global.nbthread = 1;
 	relative_pid = 1;
 	pid_bit = 1;
+	all_proc_mask = 1;
 
 #ifdef USE_THREAD
 	tid_bit = 1;
