#endif
} p_tab, *ptptr;
+/*
+ * We copy the u_data block between processes when we fork and on some
+ * platforms it moves. This means that there must be *no* internal pointer
+ * references to the udata within u_data itself.
+ */
typedef struct u_data {
/**** If you change this top section, also update offsets in "kernel.def" ****/
struct p_tab *u_ptab; /* Process table pointer */
void * u_isp; /* Value of initial sp (argv) */
usize_t u_top; /* Top of memory for this task */
uaddr_t u_break; /* Top of data space */
+#ifdef CONFIG_32BIT
+ uaddr_t u_codebase; /* 32bit platform base pointers */
+#endif
int (*u_sigvec[NSIGS])(int); /* Array of signal vectors */
/**** If you change this top section, also update offsets in "kernel.def" ****/
#define U_DATA__U_ARGN2 34
#define U_DATA__U_ARGN3 38
#define U_DATA__U_ISP 42
-#define U_DATA__U_SIGVEC 46
+#define U_DATA__U_CODEBASE 46
+#define U_DATA__U_SIGVEC 50
#define P_TAB__P_STATUS_OFFSET 0
#define P_TAB__P_TTY_OFFSET 1