#
321343 |
|
21-Jul-2017 |
kib |
MFC r319873: Move struct syscall_args syscall arguments parameters container into struct thread.
|
#
302408 |
|
07-Jul-2016 |
gjb |
Copy head@r302406 to stable/11 as part of the 11.0-RELEASE cycle. Prune svn:mergeinfo from the new branch, as nothing has been merged here.
Additional commits post-branch will follow.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
295628 |
|
15-Feb-2016 |
andrew |
Remove an unused static inline function.
Sponsored by: ABT Systems Ltd
|
#
282779 |
|
11-May-2015 |
andrew |
Add the kernel support for Thumb-2. It is only supported on ARMv7 as the main ARMv6 target, the Raspberry Pi, doesn't support Thumb-2.
This as been tested with a Thumb-2 userland, however building one is currently unsupported as there are known toolchain issues breaking some binaries. Further work will also be needed to decide on the method of selecting which instruction set to build for, and to benchmark both to find how building everything as Thumb-2 will affect performance.
Relnotes: yes
|
#
275639 |
|
09-Dec-2014 |
andrew |
Include sys/kernel.h to pick up the definition of hz. subr_syscall.c uses it after r275616.
X-MFC with: r275616
|
#
272356 |
|
01-Oct-2014 |
andrew |
Split you the syscall handling to a separate file.
|
#
271398 |
|
10-Sep-2014 |
andrew |
Unify interrupts bit definition and usage. While here remove PSR_C_bit.
Submitted by: Svatopluk Kraus <onwahe at gmail.com>, Michal Meloun <meloun at miracle.cz> Differential Revision: https://reviews.freebsd.org/D754
|
#
262958 |
|
09-Mar-2014 |
ian |
Remove all traces of support for ARM chips prior to the arm9 series. We never actually ran on these chips (other than using SA1 support in an emulator to do the early porting to FreeBSD long long ago). The clutter and complexity of some of this code keeps getting in the way of other maintenance, so it's time to go.
|
#
262952 |
|
09-Mar-2014 |
ian |
The arm exception entry points currently vector through a function pointer to the actual handler routine. All the pointers are static-intialized to the only handlers available, and yet various platform-specific inits still set those pointers (to the values they're already initialized to). Begin to drain the swamp by removing all the redundant external declarations and runtime setting of the pointers that's scattered around various places.
|
#
261810 |
|
12-Feb-2014 |
ian |
Use the same logic as the x86 platforms to avoid trying perform fault fixup while in a critical section or while holding a non-sleepable lock.
Reviewed by: cognet
|
#
261808 |
|
12-Feb-2014 |
ian |
Use the right symbols for determining arm architecture. Include the necessary header file which has the new FAULT_WNR symbol defined in it.
|
#
261803 |
|
12-Feb-2014 |
ian |
On armv6 and later, use the WriteNotRead bit of the fault status register to decide what protections are required by the faulting access. The old code disassembled the faulting instruction, and there are a lot of new instructions that aren't handled. The old code is still used for armv4/5 which doesn't have the WNR bit)
|
#
260375 |
|
06-Jan-2014 |
andreast |
Fix arm build.
Reviewed by: ian, zbb
|
#
258240 |
|
16-Nov-2013 |
ian |
In the data abort handler, don't panic if kdb is available and says it handled the condition.
PR: arm/183668 Submitted by: Howard Su <howard0su@gmail.com>
|
#
257217 |
|
27-Oct-2013 |
ian |
Remove the last dregs of trapframe_t. It turns out only arm was using this type, so remove it to make arm code more consistant with other platforms. Thanks to bde@ for pointing out only arm used trapframe_t.
|
#
253142 |
|
10-Jul-2013 |
ray |
Remove trailing whitespaces.
|
#
250929 |
|
23-May-2013 |
gber |
Improve, optimize and clean-up ARMv6/v7 memory management related code.
Use pmap_find_pv if needed instead of multiplying its code throughout pmap-v6.
Avoid possible NULL pointer dereference in pmap_enter_locked() When trying to get m->md.pv_memattr, make sure that m != NULL, in particular that vector_page is set to be NULL.
Do not set PGA_REFERENCED flag in pmap_enter_pv(). On ARM any new page reference will result in either entering the new mapping by calling pmap_enter, etc. or fixing-up the existing mapping in pmap_fault_fixup(). Therefore we set PGA_REFERENCED flag in the earlier mentioned cases and setting it later in pmap_enter_pv() is just waste of cycles.
Delete unused pm_pdir pointer from the pmap structure.
Rearrange brackets in the fault cause detection in trap.c Place the brackets correctly in order to see course of the conditions instantaneously.
Unify naming in pmap-v6.c and improve style Use naming common for whole pmap and compatible with other pmaps, improve style where possible: pm -> pmap pg -> m opg -> om *pt -> *ptep *pte -> *ptep *pde -> *pdep
Submitted by: Zbigniew Bodek <zbb@semihalf.com> Sponsored by: The FreeBSD Foundation, Semihalf
|
#
250928 |
|
23-May-2013 |
gber |
Switch to AP[2:1] access permissions model. Store "referenced" bit in PTE.
Enable Access Flag in CPU control. With AF enabled each valid mapping needs to have referenced bit in PTE set in order to be able to cache it in the TLB.
AP[0] bit is to be used as reference flag. All access permissions are encoded by AP[2:1] wherein AP[1] is in fact "user enable" and AP[2](APX) is "write disable".
All mappings are always set to be valid. Reference emulation is performed by setting/clearing reference flag in PTE.
md.pvh_attrs are no longer necessary however pv_flags are still being used for now.
Marking vm_page as "dirty" or "referenced" is being performed on: - page or flag fault servicing in pmap_fault_fixup(), basing on the fault type - vm_fault servicing in pmap_enter() according to the desired protections and faulty access type Redundant page marking has been removed as on ARM we know exactly when the particular page is referenced or is going to be written.
Submitted by: Zbigniew Bodek <zbb@semihalf.com> Sponsored by: The FreeBSD Foundation, Semihalf
|
#
250255 |
|
04-May-2013 |
kientzle |
Make a debugging printf a little more useful.
|
#
245551 |
|
17-Jan-2013 |
andrew |
* Correct KINFO_PROC_SIZE for ARM EABI. * Update the syscall interface to pass in the syscall value in register r7.
|
#
239191 |
|
11-Aug-2012 |
andrew |
Move the decoding of the swi instruction to the syscall function. With the ARM EABI the syscall value will be moved to a register to ease adding thumb support. When this happens decoding of the instruction will no longer be required.
|
#
236991 |
|
13-Jun-2012 |
imp |
Final whitespace trim.
|
#
225973 |
|
04-Oct-2011 |
kib |
Convert ARM to the syscallenter/syscallret system call sequence handlers.
Tested by: gber MFC after: 1 month
|
#
208453 |
|
23-May-2010 |
kib |
Reorganize syscall entry and leave handling.
Extend struct sysvec with three new elements: sv_fetch_syscall_args - the method to fetch syscall arguments from usermode into struct syscall_args. The structure is machine-depended (this might be reconsidered after all architectures are converted). sv_set_syscall_retval - the method to set a return value for usermode from the syscall. It is a generalization of cpu_set_syscall_retval(9) to allow ABIs to override the way to set a return value. sv_syscallnames - the table of syscall names.
Use sv_set_syscall_retval in kern_sigsuspend() instead of hardcoding the call to cpu_set_syscall_retval().
The new functions syscallenter(9) and syscallret(9) are provided that use sv_*syscall* pointers and contain the common repeated code from the syscall() implementations for the architecture-specific syscall trap handlers.
Syscallenter() fetches arguments, calls syscall implementation from ABI sysent table, and set up return frame. The end of syscall bookkeeping is done by syscallret().
Take advantage of single place for MI syscall handling code and implement ptrace_lwpinfo pl_flags PL_FLAG_SCE, PL_FLAG_SCX and PL_FLAG_EXEC. The SCE and SCX flags notify the debugger that the thread is stopped at syscall entry or return point respectively. The EXEC flag augments SCX and notifies debugger that the process address space was changed by one of exec(2)-family syscalls.
The i386, amd64, sparc64, sun4v, powerpc and ia64 syscall()s are changed to use syscallenter()/syscallret(). MIPS and arm are not converted and use the mostly unchanged syscall() implementation.
Reviewed by: jhb, marcel, marius, nwhitehorn, stas Tested by: marcel (ia64), marius (sparc64), nwhitehorn (powerpc), stas (mips) MFC after: 1 month
|
#
199868 |
|
27-Nov-2009 |
alc |
Simplify the invocation of vm_fault(). Specifically, eliminate the flag VM_FAULT_DIRTY. The information provided by this flag can be trivially inferred by vm_fault().
Discussed with: kib
|
#
199135 |
|
10-Nov-2009 |
kib |
Extract the code that records syscall results in the frame into MD function cpu_set_syscall_retval().
Suggested by: marcel Reviewed by: marcel, davidxu PowerPC, ARM, ia64 changes: marcel Sparc64 tested and reviewed by: marius, also sunv reviewed MIPS tested by: gonzo MFC after: 1 month
|
#
190845 |
|
08-Apr-2009 |
raj |
Minor description fix.
|
#
190844 |
|
08-Apr-2009 |
raj |
Properly handle KDB entry in fatal abort. This lets KDB_UNATTENDED work on ARM.
Submitted by: Grzegorz Bernacki gjb ! semihalf dot com
|
#
177091 |
|
12-Mar-2008 |
jeff |
Remove kernel support for M:N threading.
While the KSE project was quite successful in bringing threading to FreeBSD, the M:N approach taken by the kse library was never developed to its full potential. Backwards compatibility will be provided via libmap.conf for dynamically linked binaries and static binaries will be broken.
|
#
173600 |
|
14-Nov-2007 |
julian |
generally we are interested in what thread did something as opposed to what process. Since threads by default have teh name of the process unless over-written with more useful information, just print the thread name instead.
|
#
171672 |
|
31-Jul-2007 |
cognet |
MFppc: revision 1.66 date: 2007/07/31 06:23:26; author: marcel; state: Exp; lines: +2 -2 Fix backward compatibility of the "old" (i.e. FreeBSD6) lseek syscall. It was broken when a new lseek syscall was introduced. The problem is that we need to swap the 32-bit td_retval values for the __syscall indirect syscall when the actual syscall has a 32-bit return value. Hence, we need to exclude lseek(2). And this means the "old" lseek(2) as well -- which we didn't.
Based on a patch from: grehan@
Approved by: re (blanket)
|
#
170291 |
|
04-Jun-2007 |
attilio |
Rework the PCPU_* (MD) interface: - Rename PCPU_LAZY_INC into PCPU_INC - Add the PCPU_ADD interface which just does an add on the pcpu member given a specific value.
Note that for most architectures PCPU_INC and PCPU_ADD are not safe. This is a point that needs some discussions/work in the next days.
Reviewed by: alc, bde Approved by: jeff (mentor)
|
#
167009 |
|
26-Feb-2007 |
kevlo |
Remove unused header file <machine/katelib.h>
|
#
163709 |
|
26-Oct-2006 |
jb |
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@
|
#
163553 |
|
21-Oct-2006 |
kevlo |
style(9) cleanup.
Approved by: cognet
|
#
163551 |
|
20-Oct-2006 |
cognet |
Ok I am an idiot. On 32 bits big-endian systems, it is needed to handle the syscalls using __syscall but only actually returning 32bits, such as mmap(), specially : they set the return value in td->td_retval[0], but the userland functions will expect this in r1, and not in r0 as it is normally done, as it is the LSB. So add a special case for all these syscalls (all except lseek, which truly returns 64bits).
Many thanks to Peter Grehan for his patience while explaining me the issue.
|
#
163547 |
|
20-Oct-2006 |
cognet |
Use __QUAD_LOWWORD for __syscall, to always use the good word, whatever the endianness is.
|
#
163537 |
|
20-Oct-2006 |
cognet |
There's no need to special-case lseek for arm/big-endian.
|
#
160801 |
|
28-Jul-2006 |
jhb |
Retire SYF_ARGMASK and remove both SYF_MPSAFE and SYF_ARGMASK. sy_narg is now back to just being an argument count.
|
#
160798 |
|
28-Jul-2006 |
jhb |
Now that all system calls are MPSAFE, retire the SYF_MPSAFE flag used to mark system calls as being MPSAFE: - Stop conditionally acquiring Giant around system call invocations. - Remove all of the 'M' prefixes from the master system call files. - Remove support for the 'M' prefix from the script that generates the syscall-related files from the master system call files. - Don't explicitly set SYF_MPSAFE when registering nfssvc.
|
#
160773 |
|
27-Jul-2006 |
jhb |
Unify the checking for lock misbehavior in the various syscall() implementations and adjust some of the checks while I'm here: - Add a new check to make sure we don't return from a syscall in a critical section. - Add a new explicit check before userret() to make sure we don't return with any locks held. The advantage here is that we can include the syscall number and name in syscall() whereas that info is not available in userret(). - Drop the mtx_assert()'s of sched_lock and Giant. They are replaced by the more general checks just added.
MFC after: 2 weeks
|
#
157616 |
|
09-Apr-2006 |
cognet |
Not only disable/enable interrupts, do it for FIQs as well, when needed.
|
#
156175 |
|
01-Mar-2006 |
cognet |
Use a better panic message than lol.
|
#
156174 |
|
01-Mar-2006 |
cognet |
Make sure we decrement p_lock before leaving prefetch_abort_handler()
|
#
155455 |
|
08-Feb-2006 |
phk |
Simplify system time accounting for profiling.
Rename struct thread's td_sticks to td_pticks, we will need the other name for more appropriately named use shortly. Reduce it from uint64_t to u_int.
Clear td_pticks whenever we enter the kernel instead of recording its value as reference for userret(). Use the absolute value of td->pticks in userret() and eliminate third argument.
|
#
155306 |
|
04-Feb-2006 |
cognet |
MFi386: revision 1.288 date: 2006/02/04 14:11:33; author: wsalamon; state: Exp; lines: +4 -1 Hook up the audit system to system call entry and exit. System calls will now be audited.
Obtained from: TrustedBSD Project Approved by: rwatson (mentor)
|
#
154074 |
|
06-Jan-2006 |
jhb |
Fix various places that were testing td_critnest to see if interrupts should remain disabled during a trap or not to check td_md.md_spinlock_count instead.
|
#
151316 |
|
14-Oct-2005 |
davidxu |
1. Change prototype of trapsignal and sendsig to use ksiginfo_t *, most changes in MD code are trivial, before this change, trapsignal and sendsig use discrete parameters, now they uses member fields of ksiginfo_t structure. For sendsig, this change allows us to pass POSIX realtime signal value to user code.
2. Remove cpu_thread_siginfo, it is no longer needed because we now always generate ksiginfo_t data and feed it to libpthread.
3. Add p_sigqueue to proc structure to hold shared signals which were blocked by all threads in the proc.
4. Add td_sigqueue to thread structure to hold all signals delivered to thread.
5. i386 and amd64 now return POSIX standard si_code, other arches will be fixed.
6. In this sigqueue implementation, pending signal set is kept as before, an extra siginfo list holds additional siginfo_t data for signals. kernel code uses psignal() still behavior as before, it won't be failed even under memory pressure, only exception is when deleting a signal, we should call sigqueue_delete to remove signal from sigqueue but not SIGDELSET. Current there is no kernel code will deliver a signal with additional data, so kernel should be as stable as before, a ksiginfo can carry more information, for example, allow signal to be delivered but throw away siginfo data if memory is not enough. SIGKILL and SIGSTOP have fast path in sigqueue_add, because they can not be caught or masked. The sigqueue() syscall allows user code to queue a signal to target process, if resource is unavailable, EAGAIN will be returned as specification said. Just before thread exits, signal queue memory will be freed by sigqueue_flush. Current, all signals are allowed to be queued, not only realtime signals.
Earlier patch reviewed by: jhb, deischen Tested on: i386, amd64
|
#
147544 |
|
23-Jun-2005 |
cognet |
Call kdb_trap() on fatal abort.
Approved by: re (blanket)
|
#
147416 |
|
16-Jun-2005 |
cognet |
Don't pass the kernel_pmap to pmap_fault_fixup() if the fault comes from kernel mode, always use the curthread pmap instead. There are valid cases were we can fault on a user address from the kernel without pcb_onfault being set.
Approved by: re (blanket)
|
#
146619 |
|
25-May-2005 |
cognet |
Remove bits specific to CPUs we won't support (< armv4).
|
#
146600 |
|
24-May-2005 |
cognet |
We need to decrease p->p_lock after vm_fault() has been called.
|
#
144971 |
|
12-Apr-2005 |
jhb |
Use PCPU_LAZY_INC() for cnt.v_{intr,trap,syscalls} rather than atomic operations in some places and simple non-per CPU math in others.
|
#
140478 |
|
19-Jan-2005 |
cognet |
Fix compile for __ARMEB__.
|
#
140462 |
|
18-Jan-2005 |
cognet |
MFpowerpc: Work around the problem of returning a 32 bits value from __syscall() on a 32 bits big-endian arch.
Spotted out by: grehan
|
#
140001 |
|
10-Jan-2005 |
cognet |
Add support for ptrace() and gdb breakpoints.
|
#
139735 |
|
05-Jan-2005 |
imp |
Start all license statements with /*-
|
#
138710 |
|
11-Dec-2004 |
cognet |
Fix style.
|
#
138709 |
|
11-Dec-2004 |
cognet |
Add entries to trace syscalls with KTR.
|
#
138328 |
|
02-Dec-2004 |
cognet |
Include <sys/signalvar.h> for trapsignal().
|
#
138129 |
|
27-Nov-2004 |
das |
Don't include sys/user.h merely for its side-effect of recursively including other headers.
|
#
137903 |
|
19-Nov-2004 |
cognet |
Increase cnt.v_syscall and cnt.v_trap when needed.
|
#
137275 |
|
05-Nov-2004 |
cognet |
Copy the syscall args in a tmp variable instead of directly using the trapframe, as it can be modified in the syscall. Call thread_user_enter() when appropriate.
|
#
135656 |
|
23-Sep-2004 |
cognet |
Make sure to call cred_update_thread() if needed. Add partial support for KTRACE.
|
#
129198 |
|
14-May-2004 |
cognet |
Import FreeBSD/arm kernel bits. It only supports sa1110 (on simics) right now, but xscale support should come soon. Some of the initial work has been provided by : Stephane Potvin <sepotvin at videotron.ca> Most of this comes from NetBSD.
|