aboutsummaryrefslogtreecommitdiff
path: root/sys/arm
diff options
context:
space:
mode:
authorJohn Birrell <jb@FreeBSD.org>2006-10-26 21:42:22 +0000
committerJohn Birrell <jb@FreeBSD.org>2006-10-26 21:42:22 +0000
commit8460a577a4b4ec185bd813188a5b188893b8c140 (patch)
tree2136d90e7e60f4ef25fe147499787d0e6a155b82 /sys/arm
parent50159fa2161d549dbe2cb3ff9db1cc3816d48c37 (diff)
downloadsrc-8460a577a4b4ec185bd813188a5b188893b8c140.tar.gz
src-8460a577a4b4ec185bd813188a5b188893b8c140.zip
Make KSE a kernel option, turned on by default in all GENERIC
kernel configs except sun4v (which doesn't process signals properly with KSE). Reviewed by: davidxu@
Notes
Notes: svn path=/head/; revision=163709
Diffstat (limited to 'sys/arm')
-rw-r--r--sys/arm/arm/trap.c6
-rw-r--r--sys/arm/at91/kb920x_machdep.c4
-rw-r--r--sys/arm/conf/EP802191
-rw-r--r--sys/arm/conf/IQ312441
-rw-r--r--sys/arm/conf/KB920X1
-rw-r--r--sys/arm/conf/SIMICS1
-rw-r--r--sys/arm/conf/SKYEYE1
-rw-r--r--sys/arm/sa11x0/assabet_machdep.c4
-rw-r--r--sys/arm/xscale/i80321/ep80219_machdep.c4
-rw-r--r--sys/arm/xscale/i80321/iq31244_machdep.c4
10 files changed, 27 insertions, 0 deletions
diff --git a/sys/arm/arm/trap.c b/sys/arm/arm/trap.c
index b50b6b7aede0..884d54095dd3 100644
--- a/sys/arm/arm/trap.c
+++ b/sys/arm/arm/trap.c
@@ -263,8 +263,10 @@ data_abort_handler(trapframe_t *tf)
td->td_frame = tf;
if (td->td_ucred != td->td_proc->p_ucred)
cred_update_thread(td);
+#ifdef KSE
if (td->td_pflags & TDP_SA)
thread_user_enter(td);
+#endif
}
/* Grab the current pcb */
@@ -730,8 +732,10 @@ prefetch_abort_handler(trapframe_t *tf)
td->td_frame = tf;
if (td->td_ucred != td->td_proc->p_ucred)
cred_update_thread(td);
+#ifdef KSE
if (td->td_proc->p_flag & P_SA)
thread_user_enter(td);
+#endif
}
fault_pc = tf->tf_pc;
if (td->td_md.md_spinlock_count == 0) {
@@ -1005,8 +1009,10 @@ swi_handler(trapframe_t *frame)
td->td_frame = frame;
td->td_pticks = 0;
+#ifdef KSE
if (td->td_proc->p_flag & P_SA)
thread_user_enter(td);
+#endif
/*
* Make sure the program counter is correctly aligned so we
* don't take an alignment fault trying to read the opcode.
diff --git a/sys/arm/at91/kb920x_machdep.c b/sys/arm/at91/kb920x_machdep.c
index f3452a527c19..04677922690f 100644
--- a/sys/arm/at91/kb920x_machdep.c
+++ b/sys/arm/at91/kb920x_machdep.c
@@ -456,7 +456,11 @@ initarm(void *arg, void *arg2)
undefined_handler_address = (u_int)undefinedinstruction_bounce;
undefined_init();
+#ifdef KSE
proc_linkup(&proc0, &ksegrp0, &thread0);
+#else
+ proc_linkup(&proc0, &thread0);
+#endif
thread0.td_kstack = kernelstack.pv_va;
thread0.td_pcb = (struct pcb *)
(thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1;
diff --git a/sys/arm/conf/EP80219 b/sys/arm/conf/EP80219
index 14308aae86a5..fd3493cf09f5 100644
--- a/sys/arm/conf/EP80219
+++ b/sys/arm/conf/EP80219
@@ -59,6 +59,7 @@ options KBD_INSTALL_CDEV # install a CDEV entry in /dev
options GEOM_GPT # GUID Partition Tables.
options GEOM_MBR # DOS/MBR partitioning
options GEOM_LABEL # Providers labelization.
+options KSE # KSE support
options BOOTP
options BOOTP_NFSROOT
diff --git a/sys/arm/conf/IQ31244 b/sys/arm/conf/IQ31244
index 8cbb079127d6..17495ff018ec 100644
--- a/sys/arm/conf/IQ31244
+++ b/sys/arm/conf/IQ31244
@@ -61,6 +61,7 @@ options BOOTP_NFSV3
options BOOTP_WIRED_TO=em0
options BOOTP_COMPAT
#options PREEMPTION
+options KSE # KSE support
device genclock
device loop
device ether
diff --git a/sys/arm/conf/KB920X b/sys/arm/conf/KB920X
index a865cce876db..33f5aaa28550 100644
--- a/sys/arm/conf/KB920X
+++ b/sys/arm/conf/KB920X
@@ -60,6 +60,7 @@ options MUTEX_NOINLINE
options RWLOCK_NOINLINE
options NO_FFS_SNAPSHOT
options NO_SWAPPING
+options KSE # KSE support
device genclock
device random
device pty
diff --git a/sys/arm/conf/SIMICS b/sys/arm/conf/SIMICS
index ab24a0965ff8..8eeda57deaf7 100644
--- a/sys/arm/conf/SIMICS
+++ b/sys/arm/conf/SIMICS
@@ -53,6 +53,7 @@ options SYSVSHM #SYSV-style shared memory
options SYSVMSG #SYSV-style message queues
options SYSVSEM #SYSV-style semaphores
options _KPOSIX_PRIORITY_SCHEDULING #Posix P1003_1B real-time extensions
+options KSE # KSE support
device genclock
device loop
device ether
diff --git a/sys/arm/conf/SKYEYE b/sys/arm/conf/SKYEYE
index 8a52f94241b2..ad66fa4825cc 100644
--- a/sys/arm/conf/SKYEYE
+++ b/sys/arm/conf/SKYEYE
@@ -58,6 +58,7 @@ options SYSVMSG #SYSV-style message queues
options SYSVSEM #SYSV-style semaphores
options _KPOSIX_PRIORITY_SCHEDULING #Posix P1003_1B real-time extensions
options KBD_INSTALL_CDEV # install a CDEV entry in /dev
+options KSE # KSE support
device genclock
device loop
device ether
diff --git a/sys/arm/sa11x0/assabet_machdep.c b/sys/arm/sa11x0/assabet_machdep.c
index b5d6eb3f3e07..42a177f7292c 100644
--- a/sys/arm/sa11x0/assabet_machdep.c
+++ b/sys/arm/sa11x0/assabet_machdep.c
@@ -423,7 +423,11 @@ initarm(void *arg, void *arg2)
/* Set stack for exception handlers */
+#ifdef KSE
proc_linkup(&proc0, &ksegrp0, &thread0);
+#else
+ proc_linkup(&proc0, &thread0);
+#endif
thread0.td_kstack = kernelstack.pv_va;
thread0.td_pcb = (struct pcb *)
(thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1;
diff --git a/sys/arm/xscale/i80321/ep80219_machdep.c b/sys/arm/xscale/i80321/ep80219_machdep.c
index 59bd7ca38588..72ba79b37076 100644
--- a/sys/arm/xscale/i80321/ep80219_machdep.c
+++ b/sys/arm/xscale/i80321/ep80219_machdep.c
@@ -429,7 +429,11 @@ initarm(void *arg, void *arg2)
undefined_handler_address = (u_int)undefinedinstruction_bounce;
undefined_init();
+#ifdef KSE
proc_linkup(&proc0, &ksegrp0, &thread0);
+#else
+ proc_linkup(&proc0, &thread0);
+#endif
thread0.td_kstack = kernelstack.pv_va;
thread0.td_pcb = (struct pcb *)
(thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1;
diff --git a/sys/arm/xscale/i80321/iq31244_machdep.c b/sys/arm/xscale/i80321/iq31244_machdep.c
index 16c22d4693ad..3c8279a063f6 100644
--- a/sys/arm/xscale/i80321/iq31244_machdep.c
+++ b/sys/arm/xscale/i80321/iq31244_machdep.c
@@ -427,7 +427,11 @@ initarm(void *arg, void *arg2)
undefined_handler_address = (u_int)undefinedinstruction_bounce;
undefined_init();
+#ifdef KSE
proc_linkup(&proc0, &ksegrp0, &thread0);
+#else
+ proc_linkup(&proc0, &thread0);
+#endif
thread0.td_kstack = kernelstack.pv_va;
thread0.td_pcb = (struct pcb *)
(thread0.td_kstack + KSTACK_PAGES * PAGE_SIZE) - 1;