| #
1.97 |
|
09-Oct-2025 |
skrll |
Add the beginnings of a GENERIC_V5 kernel that targets armv5 boards and uses FDT.
In this first iteration some support is added for OLinuXino boards.
Thanks to Yuri Honegger for doing the vast majority of the work.
|
| #
1.96 |
|
04-Oct-2025 |
skrll |
G/C
|
|
Revision tags: perseant-exfatfs-base-20250801 netbsd-11-base netbsd-10-1-RELEASE perseant-exfatfs-base-20240630 perseant-exfatfs-base netbsd-10-0-RELEASE netbsd-10-0-RC6 netbsd-10-0-RC5 netbsd-10-0-RC4 netbsd-10-0-RC3 netbsd-10-0-RC2 thorpej-ifq-base thorpej-altq-separation-base netbsd-10-0-RC1 netbsd-10-base bouyer-sunxi-drm-base thorpej-i2c-spi-conf2-base thorpej-futex2-base thorpej-cfargs2-base cjep_sun2x-base1 cjep_sun2x-base cjep_staticlib_x-base1 cjep_staticlib_x-base thorpej-i2c-spi-conf-base thorpej-cfargs-base thorpej-futex-base
|
| #
1.95 |
|
28-Aug-2020 |
skrll |
Some KASAN fixes and tweaks
- don't access BSS variables when __md_early - centralise the INIT_ARM_STACK_{SHIFT,SIZE} defines and create a new INIT_ARM_TOTAL_STACK - Only create L1PT entries in kasan_md_shadow_map_page if arm32_kernel_vm_init hasn't created the L2PTs (and their L1PT entries) - Add some comments to explain what's going on
|
| #
1.94 |
|
14-Aug-2020 |
skrll |
Mirror the changes to aarch64 and
- Switch to TPIDRPRW_IS_CURLWP, because curlwp is accessed much more often by MI code. It also makes curlwp preemption safe,
- Make ASTs operate per-LWP rather than per-CPU, otherwise sometimes LWPs can see spurious ASTs (which doesn't cause a problem, it just means some time may be wasted).
- Make sure ASTs are always set on the same CPU as the target LWP, and delivered via IPI if posted from a remote CPU so that they are resolved quickly.
- Add some cache line padding to struct cpu_info.
- Add a memory barrier in a couple of places where ci_curlwp is set. This is needed whenever an LWP that is resuming on the CPU could hold an adaptive mutex. The barrier needs to drain the CPU's store buffer, so that the update to ci_curlwp becomes globally visible before the LWP can resume and call mutex_exit().
|
| #
1.93 |
|
08-Jul-2020 |
skrll |
Use the stack provided by armv6_start.S rather than svcstk. This saves some bss too.
|
| #
1.92 |
|
08-Jul-2020 |
skrll |
Sort the __HAVE_* defines
|
| #
1.91 |
|
08-Jul-2020 |
skrll |
Sort include "opt_..."s
|
| #
1.90 |
|
03-Jul-2020 |
skrll |
KNF (sort includes)
|
|
Revision tags: bouyer-xenpvh-base2 phil-wifi-20200421 bouyer-xenpvh-base1 phil-wifi-20200411 bouyer-xenpvh-base phil-wifi-20200406
|
| #
1.89 |
|
20-Mar-2020 |
skrll |
Really use armv7 noncache memory attribute for early kernel mapping and not SO
|
|
Revision tags: is-mlppp-base ad-namecache-base3
|
| #
1.88 |
|
18-Feb-2020 |
skrll |
G/C
|
| #
1.87 |
|
15-Feb-2020 |
skrll |
Various updates and improvements to cpu start up on arm/aarch64
- start sharing more code around the AP startup messaging. - call arm_cpu_topology_set early so that ci_core_id is available for drivers, e.g. bcm2835_intr.c - both arm and aarch64 now have - a static cpu_info_store array - the same arm_cpu_{hatched,mbox}
|
| #
1.86 |
|
14-Feb-2020 |
skrll |
Sort define CI_*. NFCI.
|
| #
1.85 |
|
29-Jan-2020 |
skrll |
G/C some more
|
| #
1.84 |
|
29-Jan-2020 |
skrll |
G/C
|
|
Revision tags: ad-namecache-base2 ad-namecache-base1
|
| #
1.83 |
|
08-Jan-2020 |
ad |
Hopefully fix some problems seen with MP support on non-x86, in particular where curcpu() is defined as curlwp->l_cpu:
- mi_switch(): undo the ~2007ish optimisation to unlock curlwp before calling cpu_switchto(). It's not safe to let other actors mess with the LWP (in particular l->l_cpu) while it's still context switching. This removes l->l_ctxswtch.
- Move the LP_RUNNING flag into l->l_flag and rename to LW_RUNNING since it's now covered by the LWP's lock.
- Ditch lwp_exit_switchaway() and just call mi_switch() instead. Everything is in cache anyway so it wasn't buying much by trying to avoid saving old state. This means cpu_switchto() will never be called with prevlwp == NULL.
- Remove some KERNEL_LOCK handling which hasn't been needed for years.
|
|
Revision tags: ad-namecache-base
|
| #
1.82 |
|
24-Nov-2019 |
skrll |
branches: 1.82.2; corect #include order
|
| #
1.81 |
|
23-Nov-2019 |
ad |
cpu_need_resched():
- Remove all code that should be MI, leaving the bare minimum under arch/. - Make the required actions very explicit. - Pass in LWP pointer for convenience. - When a trap is required on another CPU, have the IPI set it locally. - Expunge cpu_did_resched().
|
|
Revision tags: netbsd-9-4-RELEASE netbsd-9-3-RELEASE netbsd-9-2-RELEASE netbsd-9-1-RELEASE netbsd-9-0-RELEASE netbsd-9-0-RC2 netbsd-9-0-RC1 phil-wifi-20191119 netbsd-9-base phil-wifi-20190609 isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020
|
| #
1.80 |
|
18-Oct-2018 |
skrll |
Provide generic start code that assumes the MMU is off and caches are disabled as per the linux booting protocol for ARMv6 and ARMv7 boards. u-boot image type should be changed to 'linux' for correct behaviour.
The new start code builds a minimal "bootstrap" L1PT with cached access disabled and uses the same table for all processors. AP startup is performed in less steps and more code is written in C.
The bootstrap tables and stack are placed into an (orphaned) section "_init_memory" which is given to uvm when it is no longer used.
Various kernels have been converted to use this code and tested. Some boards were provided by TNF. Thanks!
The GENERIC kernel now boots on boards using the TEGRA, SUNXI and EXYNOS kernels. The GENERIC kernel will also work on RPI2 using u-boot.
Thanks to martin@ and aymeric@ for testing on parallella and nanosoc respectively
|
| #
1.79 |
|
15-Oct-2018 |
skrll |
Group/sort struct arm_cache_info members
|
|
Revision tags: pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base
|
| #
1.78 |
|
27-Jun-2018 |
ryo |
branches: 1.78.2; on evbarm/RPI,RPI2, VERBOSE_INIT_ARM had broken.
XPUTC() of evbarm/rpi/rpi*_start.S uses bcm283[567]_platform_early_putchar() and it requires stack. fixed to allocate stack when starting from rpi*_start.S and a9_mpsubr.S if needed.
to work XPUTC(), need to define VERBOSE_INIT_ARM and EARLYCONS option.
|
|
Revision tags: pgoyette-compat-0625 pgoyette-compat-0521 pgoyette-compat-0502 pgoyette-compat-0422 pgoyette-compat-0415 pgoyette-compat-0407 pgoyette-compat-0330 pgoyette-compat-0322 pgoyette-compat-0315 pgoyette-compat-base
|
| #
1.77 |
|
24-Jan-2018 |
skrll |
branches: 1.77.2; Remove port-acorn26
OK core@
|
|
Revision tags: tls-maxphys-base-20171202 nick-nhusb-base-20170825 perseant-stdc-iso10646-base
|
| #
1.76 |
|
12-Jul-2017 |
skrll |
Alignment whitespace. No functional change.
|
| #
1.75 |
|
12-Jul-2017 |
skrll |
In idcache_wbinv_range if the range size is bigger than the dcache size then call idcache_wbinv_all
Avoids a problem with large ranges as seen in port-evbarm/52169: setting dtrace module to load cause Pi to hang on boot
|
|
Revision tags: netbsd-8-base prg-localcount2-base3 prg-localcount2-base2 prg-localcount2-base1 prg-localcount2-base pgoyette-localcount-20170426 bouyer-socketcan-base1 jdolecek-ncq-base pgoyette-localcount-20170320 nick-nhusb-base-20170204 bouyer-socketcan-base pgoyette-localcount-20170107 nick-nhusb-base-20161204 pgoyette-localcount-20161104 nick-nhusb-base-20161004 localcount-20160914 pgoyette-localcount-20160806 pgoyette-localcount-20160726 pgoyette-localcount-base nick-nhusb-base-20160907 nick-nhusb-base-20160529 nick-nhusb-base-20160422 nick-nhusb-base-20160319 nick-nhusb-base-20151226 nick-nhusb-base-20150921
|
| #
1.74 |
|
09-Jun-2015 |
skrll |
branches: 1.74.10; Trailing whitespace.
|
| #
1.73 |
|
09-Jun-2015 |
skrll |
Use TTBR_[UM]PATTR in a9_mpsubr.S as well as cpufunc_asm_armv7
Prompted by matt@
|
|
Revision tags: nick-nhusb-base-20150606
|
| #
1.72 |
|
15-Apr-2015 |
matt |
define __HAVE_PREEMPTION
|
| #
1.71 |
|
07-Apr-2015 |
matt |
__HAVE_UNNESTED_INTRS is never used.
|
|
Revision tags: nick-nhusb-base-20150406
|
| #
1.70 |
|
23-Mar-2015 |
matt |
Add L_FLAG/LW_SYSTEM
|
|
Revision tags: nick-nhusb-base netbsd-7-base yamt-pagecache-base9 tls-earlyentropy-base rmind-smpnet-nbase rmind-smpnet-base tls-maxphys-base
|
| #
1.69 |
|
10-Apr-2014 |
matt |
branches: 1.69.2; 1.69.4; emit VERBOSE_INIT_ARM
|
|
Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
|
| #
1.68 |
|
28-Mar-2014 |
matt |
branches: 1.68.2; Add ARM_MMU_EXTENDED support.
|
|
Revision tags: riastradh-drm2-base3
|
| #
1.67 |
|
26-Feb-2014 |
matt |
Move pmap_recent_user to ci->ci_pmap_lastuser and pmap_previous_active_lwp to ci->ci_lastlwp. Fix some comments.
|
| #
1.66 |
|
09-Nov-2013 |
jmcneill |
wrap opt_* includes with if defined(_KERNEL_OPT)
|
| #
1.65 |
|
18-Aug-2013 |
matt |
include <arm/locore.h>
|
| #
1.64 |
|
18-Aug-2013 |
matt |
Add more TF_* symbols
|
|
Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base
|
| #
1.63 |
|
02-Jul-2013 |
matt |
Add L2_S_SIZE
|
| #
1.62 |
|
17-Jun-2013 |
matt |
branches: 1.62.2; Add L1_S_V6_S
|
| #
1.61 |
|
29-Apr-2013 |
kiyohara |
Add some defines for epoc32.
|
|
Revision tags: agc-symver-base yamt-pagecache-base8
|
| #
1.60 |
|
17-Dec-2012 |
matt |
Add CPU_VFP_ID and PCB_VFP_FPEXC
|
|
Revision tags: yamt-pagecache-base7
|
| #
1.59 |
|
10-Dec-2012 |
matt |
add __HAVE_MM_MD_DIRECT_MAPPED_PHYS
|
| #
1.58 |
|
10-Dec-2012 |
matt |
Add VFP_FPEXC_EN
|
| #
1.57 |
|
10-Dec-2012 |
matt |
Rename pcb_sp/PCB_SP to pcb_ksp/PCB_KSP so that ipsec.c will compile.
|
|
Revision tags: yamt-pagecache-base6
|
| #
1.56 |
|
21-Oct-2012 |
matt |
Change to use symbolic constants from assym.h and fix a typo in a comment.
|
| #
1.55 |
|
21-Oct-2012 |
matt |
Implement a "fast" path for IRQ handling out of the idle loop. Since we are in SVC32 already we only need to save a few registers. Processing is also simplified since we know we can't return to user-mode.
|
| #
1.54 |
|
07-Sep-2012 |
matt |
branches: 1.54.2; Switch cortex_a9 back to need_ptesync = 1 Add code to disable the L2 cache on cortex-a9 (for now). Add evcnt for all the fault types. Move cache info in a structure and have one for the pcache and one for scache. Probe L1/L2 caches properly for ARMv7
|
| #
1.53 |
|
01-Sep-2012 |
matt |
Add __BITS to asm.h (remove from imxuartreg.h) Add L1_S_AP_KR to genassym.h Use L1_S_AP_* in omap_start.S and don't include pmap.h
|
| #
1.52 |
|
31-Aug-2012 |
matt |
Make cpu_reset, most of initarm and the kvm init code common. Add MP hooks for cpu_need_resced Add idlestck which is allocated in arm32_kvminit
|
| #
1.51 |
|
29-Aug-2012 |
matt |
Don't use locations in .data to store exception temporaries, use decidicated space in cpu_info instead. This also moves undefined_handler_address into cpu_info as well. Use the new armreg* inlines for getting TPIDRPRW register. Add MULTIPROCESSOR version of CPU_INFO_FOREACH
|
| #
1.50 |
|
29-Aug-2012 |
matt |
Use ARMV6+ cpsi{d,f} instructions whenever possible. Use r7 to hold previous mode and avoid recomputing it. Add support for obtaining kernel_lock on exception entry and exit.
|
| #
1.49 |
|
16-Aug-2012 |
matt |
small rototill. pcb_flags is dead. PCB_NOALIGNFLT is now in stored l_md.md_flags as MDLWP_NOALIGNFLT. This avoids a few loads of the PCB in exception handling. pcb_tf has been moved to l_md.md_tf. Again this avoids a lot of pcb references just to access or set this. It also means that pcb doesn't need to accessed by MI code. Move pcb_onfault to after the pcb union. Add pcb_sp macro to make code prettier. Add lwp_settrapframe(l, tf) to set the l_md.md_tf field. Use lwp_trapframe to access it (was process_frame but that name was changed in a previous commit). Kill off curpcb in acorn26. Kill the checks for curlwp being NULL. Move TRAP_USERMODE from arm32/fault.c to frame.h and a __PROG26 version. Replace tests for usermode with that macro.
|
| #
1.48 |
|
14-Aug-2012 |
matt |
Kill curpcb/ci_curpcb. Use device_t in cpu_info. Add ci_softc (where ci_curpcb was so cpu_info doesn't change).
|
| #
1.47 |
|
02-Aug-2012 |
skrll |
Remove irqframe and replace with identical trapframe.
|
|
Revision tags: netbsd-6-0-6-RELEASE netbsd-6-1-5-RELEASE netbsd-6-1-4-RELEASE netbsd-6-0-5-RELEASE netbsd-6-1-3-RELEASE netbsd-6-0-4-RELEASE netbsd-6-1-2-RELEASE netbsd-6-0-3-RELEASE netbsd-6-1-1-RELEASE netbsd-6-0-2-RELEASE netbsd-6-1-RELEASE netbsd-6-1-RC4 netbsd-6-1-RC3 netbsd-6-1-RC2 netbsd-6-1-RC1 netbsd-6-0-1-RELEASE matt-nb6-plus-nbase netbsd-6-0-RELEASE netbsd-6-0-RC2 matt-nb6-plus-base netbsd-6-0-RC1 jmcneill-usbmp-base10 yamt-pagecache-base5 jmcneill-usbmp-base9 yamt-pagecache-base4 jmcneill-usbmp-base8 jmcneill-usbmp-base7 jmcneill-usbmp-base6 jmcneill-usbmp-base5 jmcneill-usbmp-base4 jmcneill-usbmp-base3 jmcneill-usbmp-pre-base2 jmcneill-usbmp-base2 netbsd-6-base jmcneill-usbmp-base jmcneill-audiomp3-base yamt-pagecache-base3 yamt-pagecache-base2 yamt-pagecache-base rmind-uvmplock-nbase cherry-xenmp-base jym-xensuspend-nbase rmind-uvmplock-base jym-xensuspend-base
|
| #
1.46 |
|
07-Apr-2011 |
matt |
branches: 1.46.4; 1.46.12; Fetch user read-only thread and process id from l->l_private, not the pcb. (need to g/c the pcb field formerly used for this).
|
|
Revision tags: uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base
|
| #
1.45 |
|
31-Jan-2011 |
matt |
Define the L1* pte values. Now pmap.h and pte.h no longer needed in .S files.
|
|
Revision tags: jruoho-x86intr-base
|
| #
1.44 |
|
14-Jan-2011 |
rmind |
branches: 1.44.2; 1.44.4; Retire struct user, remove sys/user.h inclusions. Note sys/user.h header as obsolete. Remove USER_TO_UAREA/UAREA_TO_USER macros.
Various #include fixes and review by matt@.
|
|
Revision tags: matt-mips64-premerge-20101231
|
| #
1.43 |
|
20-Dec-2010 |
matt |
Move counting of faults, traps, intrs, soft[intr]s, syscalls, and nswtch from uvmexp to per-cpu cpu_data and move them to 64bits. Remove unneeded includes of <uvm/uvm_extern.h> and/or <uvm/uvm.h>.
|
|
Revision tags: uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10 uebayasi-xip-base1 yamt-nfs-mp-base9 uebayasi-xip-base matt-premerge-20091211
|
| #
1.42 |
|
10-Dec-2009 |
rmind |
branches: 1.42.4; Rename L_ADDR to L_PCB and amend some comments accordingly.
|
|
Revision tags: netbsd-5-2-3-RELEASE netbsd-5-1-5-RELEASE netbsd-5-2-2-RELEASE netbsd-5-1-4-RELEASE netbsd-5-2-1-RELEASE netbsd-5-1-3-RELEASE netbsd-5-2-RELEASE netbsd-5-2-RC1 netbsd-5-1-2-RELEASE netbsd-5-1-1-RELEASE matt-nb5-mips64-premerge-20101231 matt-nb5-pq3-base netbsd-5-1-RELEASE netbsd-5-1-RC4 matt-nb5-mips64-k15 netbsd-5-1-RC3 netbsd-5-1-RC2 netbsd-5-1-RC1 netbsd-5-0-2-RELEASE matt-nb5-mips64-premerge-20091211 yamt-nfs-mp-base8 matt-nb5-mips64-u2-k2-k4-k7-k8-k9 matt-nb4-mips64-k7-u2a-k9b matt-nb5-mips64-u1-k1-k5 yamt-nfs-mp-base7 netbsd-5-0-1-RELEASE jymxensuspend-base yamt-nfs-mp-base6 yamt-nfs-mp-base5 yamt-nfs-mp-base4 yamt-nfs-mp-base3 nick-hppapmap-base4 nick-hppapmap-base3 netbsd-5-0-RELEASE netbsd-5-0-RC4 netbsd-5-0-RC3 nick-hppapmap-base2 netbsd-5-0-RC2 netbsd-5-0-RC1 haad-dm-base2 haad-nbase2 ad-audiomp2-base netbsd-5-base nick-hppapmap-base matt-mips64-base2 haad-dm-base1 wrstuden-revivesa-base-4 haad-dm-base mjf-devfs2-base
|
| #
1.41 |
|
20-Sep-2008 |
tsutsui |
branches: 1.41.12; Remove advertising clause for UCB in various genassym.cf files, which were derived from genassym.c in 4.4BSD-Lite2 (or 386BSD). Closes PR misc/39573. Approved by martin@.
|
|
Revision tags: wrstuden-revivesa-base-3 wrstuden-revivesa-base-2
|
| #
1.40 |
|
07-Aug-2008 |
matt |
Do fast softint processing in DO_AST_AND_RESTORE_ALIGNMENT_FAULTS. Redo the softint mask so ci_softints >> ci_cpl != 0 becomes an easy test for work to be done.
|
|
Revision tags: wrstuden-revivesa-base-1 simonb-wapbl-nbase yamt-pf42-base4 simonb-wapbl-base yamt-pf42-base3 hpcarm-cleanup-nbase yamt-pf42-base2 yamt-nfs-mp-base2 wrstuden-revivesa-base
|
| #
1.39 |
|
27-Apr-2008 |
matt |
branches: 1.39.2; 1.39.6; Merge kernel changes in matt-armv6 to HEAD.
|
|
Revision tags: yamt-pf42-baseX yamt-nfs-mp-base yamt-pf42-base ad-socklock-base1 yamt-lazymbuf-base15 yamt-lazymbuf-base14 chris-arm-intr-rework-base7 keiichi-mipv6-nbase nick-net80211-sync-base keiichi-mipv6-base chris-arm-intr-rework-base6 chris-arm-intr-rework-base5 chris-arm-intr-rework-base4 bouyer-xeni386-nbase bouyer-xeni386-base matt-armv6-nbase mjf-devfs-base hpcarm-cleanup-base
|
| #
1.38 |
|
19-Jan-2008 |
chris |
branches: 1.38.6; 1.38.8; 1.38.10; With the removal of IPKDB on arm, the undefined stack is only used to bounce into SVC32 mode, there is no per-process data stored on it.
We can therefore use the undefined stack setup by the platform machdep.c as a system wide undefined stack.
This removes the need for a per-process undefined stack, and the processor mode switching overhead it causes in cpu_switchto.
The space freed in the USPACE is used to increase the per process kernel stack size.
|
|
Revision tags: matt-armv6-base
|
| #
1.37 |
|
08-Jan-2008 |
matt |
As of this commit, all arm32 kernel now build.
|
| #
1.36 |
|
06-Jan-2008 |
matt |
Make sure interrupt handler is updating curcpu()->ci_depth
|
|
Revision tags: chris-arm-intr-rework-base3 vmlocking2-base3 yamt-kmem-base3 cube-autoconf-base yamt-kmem-base2 yamt-kmem-base vmlocking2-base2 reinoud-bufcleanup-nbase vmlocking2-base1 jmcneill-base bouyer-xenamd64-base2 vmlocking-nbase yamt-x86pmap-base4 bouyer-xenamd64-base jmcneill-pm-base reinoud-bufcleanup-base
|
| #
1.35 |
|
17-Oct-2007 |
garbled |
branches: 1.35.2; 1.35.8; Merge the ppcoea-renovation branch to HEAD.
This branch was a major cleanup and rototill of many of the various OEA cpu based PPC ports that focused on sharing as much code as possible between the various ports to eliminate near-identical copies of files in every tree. Additionally there is a new PIC system that unifies the interface to interrupt code for all different OEA ppc arches. The work for this branch was done by a variety of people, too long to list here.
TODO: bebox still needs work to complete the transition to -renovation. ofppc still needs a bunch of work, which I will be looking at. ev64260 still needs to be renovated amigappc was not attempted.
NOTES: pmppc was removed as an arch, and moved to a evbppc target.
|
|
Revision tags: yamt-x86pmap-base3 yamt-x86pmap-base2 yamt-x86pmap-base ppcoea-renovation-base vmlocking-base
|
| #
1.34 |
|
15-Sep-2007 |
scw |
ARM cpu_switchto() has been partially broken since yamt-idlelwp was merged as its cache/tlb management smarts relied too heavily on pre-merge context- switch behaviour. See PR kern/36548 for one manifestation of the breakage.
To address this: - Ditch the shadow pmap variables in the PCB (pagedir, l1vec, dacr, cstate) as it was too easy for them to get out of sync with the pmap. - Re-write (and fix) the convoluted cpuswitch.S cache/tlb ASM code in C. It's only slightly less efficient, but is much more readable/maintainable. - Document cpufuncs.cf_context_switch() as being C-callable. - pmap_activate() becomes a no-op if the lwp's vmspace is already active. (Good performance win, since pmap_activate() is now invoked on every context-switch, even though ARM's cpu_switchto() already does all the grunt work)
XXX: Some CPU-specific armXX_context_switch() implementations (arm67, arm7tdmi, arm8) always flush the I+D caches. This should not be necessary. Someone with access to hardware (acorn32?) needs to deal with this.
|
|
Revision tags: nick-csl-alignment-base5 chris-arm-intr-rework-base2 chris-arm-intr-rework-base nick-csl-alignment-base matt-mips64-base mjf-ufs-trans-base
|
| #
1.33 |
|
17-May-2007 |
yamt |
branches: 1.33.6; 1.33.8; 1.33.10; 1.33.12; merge yamt-idlelwp branch. asked by core@. some ports still needs work.
from doc/BRANCHES:
idle lwp, and some changes depending on it.
1. separate context switching and thread scheduling. (cf. gmcgarry_ctxsw) 2. implement idle lwp. 3. clean up related MD/MI interfaces. 4. make scheduler(s) modular.
|
|
Revision tags: yamt-idlelwp-base8 thorpej-atomic-base
|
| #
1.32 |
|
09-Mar-2007 |
thorpej |
branches: 1.32.2; 1.32.4; 1.32.10; Rewrite the ARM mutex implementation to be of the simple-mutex variety. Because pre-v6 ARM lacks support for an atomic compare-and-swap, we implement _lock_cas() as a restartable atomic squence that is checked in the IRQ handler right before AST processing. (This is safe because, for all practical purposes, there are no SMP pre-v6 ARM systems.)
This can serve as a model for other non-MP platforms that lack the necessary atomic operations for mutexes (SuperH, for example).
Upshots of this change: - kmutex_t is now down to 8 bytes on ARM; about as good as we can get. - ARM2 systems don't have to trap and emulate SWP or SWPB for mutexes.
The acorn26 port is not updated by this commit to do the LOCK_CAS_CHECK. That is left as an exercise for the port maintainer.
Reviewed and tested by Matt Thomas.
|
|
Revision tags: ad-audiomp-base
|
| #
1.31 |
|
20-Feb-2007 |
matt |
Add KERNEL_BASE
|
| #
1.30 |
|
19-Feb-2007 |
briggs |
Get DOMAIN_CLIENT directly from arm/arm32/pte.h instead of from genassym to avoid redefinition when both assymh and pte.h are included (as in INTEGRATOR's intmmu.S, which uses more macros from pte.h).
|
|
Revision tags: post-newlock2-merge newlock2-nbase yamt-splraiseipl-base5 yamt-splraiseipl-base4 yamt-splraiseipl-base3 yamt-splraiseipl-base2 newlock2-base netbsd-4-base
|
| #
1.29 |
|
27-Sep-2006 |
manu |
branches: 1.29.2; 1.29.4; - Document COMPAT_15 as doing nothing - Add COMPAT_15 to all the kernel that had COMPAT_14, for the sake of coherency - Remove the only occurences of #ifdef COMPAT_15 in the tree: for the ARM ports, COMPAT_15 was always used in conjunction with EXEC_AOUT. Only EXEC_AOUT matters here.
This address kern/18407
|
|
Revision tags: abandoned-netbsd-4-base yamt-splraiseipl-base yamt-pdpolicy-base9 yamt-pdpolicy-base8 yamt-pdpolicy-base7 yamt-pdpolicy-base6 chap-midi-nbase gdamore-uart-base simonb-timcounters-final yamt-pdpolicy-base5 chap-midi-base yamt-pdpolicy-base4 yamt-pdpolicy-base3 peter-altq-base yamt-pdpolicy-base2 elad-kernelauth-base yamt-pdpolicy-base yamt-uio_vmspace-base5 simonb-timecounters-base rpaulo-netinet-merge-pcb-base
|
| #
1.28 |
|
11-Dec-2005 |
christos |
branches: 1.28.20; 1.28.22; merge ktrace-lwp.
|
|
Revision tags: netbsd-3-1-1-RELEASE netbsd-3-0-3-RELEASE netbsd-3-1-RELEASE netbsd-3-0-2-RELEASE netbsd-3-1-RC4 netbsd-3-1-RC3 netbsd-3-1-RC2 netbsd-3-1-RC1 netbsd-3-0-1-RELEASE netbsd-3-0-RELEASE netbsd-3-0-RC6 yamt-readahead-base3 netbsd-3-0-RC5 netbsd-3-0-RC4 netbsd-3-0-RC3 yamt-readahead-base2 netbsd-3-0-RC2 yamt-readahead-pervnode yamt-readahead-perfile yamt-readahead-base netbsd-3-0-RC1 yamt-vop-base3 netbsd-2-0-3-RELEASE yamt-vop-base2 thorpej-vnode-attr-base netbsd-2-1-RELEASE yamt-vop-base netbsd-2-1-RC6 netbsd-2-1-RC5 netbsd-2-1-RC4 netbsd-2-1-RC3 netbsd-2-1-RC2 netbsd-2-1-RC1 yamt-km-base4 netbsd-2-0-2-RELEASE yamt-km-base3 netbsd-3-base yamt-km-base2 yamt-km-base kent-audio2-base netbsd-2-0-1-RELEASE kent-audio1-beforemerge netbsd-2-base kent-audio1-base netbsd-2-0-RELEASE netbsd-2-0-RC5 netbsd-2-0-RC4 netbsd-2-0-RC3 netbsd-2-0-RC2 netbsd-2-0-RC1 netbsd-2-0-base ktrace-lwp-base
|
| #
1.27 |
|
04-Nov-2003 |
dsl |
branches: 1.27.16; Remove p_nras from struct proc - use LIST_EMPTY(&p->p_raslist) instead. Remove p_raslock and rename p_lwplock p_lock (one lock is enough). Simplify window test when adding a ras and correct test on VM_MAXUSER_ADDRESS. Avoid unpredictable branch in i386 locore.S (pad fields left in struct proc to avoid kernel bump)
|
| #
1.26 |
|
25-Oct-2003 |
scw |
Enable alignment faults on arm32 for both kernel and userland.
If COMPAT_15 and EXEC_AOUT are defined, support per-process alignment checking where AFLTs are always enabled when running kernel code and userland ELF binaries, and dynamically disabled/ enabled when switching to/from a.out binaries. This is necessary in order to execute older a.out binaries, where gcc made deliberate use of misaligned loads under certain circumstances.
|
| #
1.25 |
|
11-Sep-2003 |
scw |
Hand-optimised in_cksum/in4_cksum for ARM and XSCALE. Contributed by Wasabi Systems, with input from Chris Gilbert, Richard Earnshaw and David Laight.
|
| #
1.24 |
|
22-May-2003 |
thorpej |
branches: 1.24.2; Remove old pmap support.
|
| #
1.23 |
|
22-Apr-2003 |
thorpej |
Some ARM32_PMAP_NEW-related cleanup: * Define a new "MMU type", ARM_MMU_SA1. While the SA-1's MMU is basically compatible with the generic, the SA-1 cache does not have a write-through mode, and it is useful to know have an indication of this. * Add a new PMAP_NEEDS_PTE_SYNC indicator, and try to evaluate it at compile time. We evaluate it like so: - If SA-1-style MMU is the only type configured -> 1 - If SA-1-style MMU is not configured -> 0 - Otherwise, defer to a run-time variable. If PMAP_NEEDS_PTE_SYNC might evaluate to true (SA-1 only or run-time check), then we also define PMAP_INCLUDE_PTE_SYNC so that e.g. assembly code can include the necessary run-time support. PMAP_INCLUDE_PTE_SYNC largely replaces the ARM32_PMAP_NEEDS_PTE_SYNC manual setting Steve included with the original new pmap. * In the new pmap, make pmap_pte_init_generic() check to see if the CPU has a write-back cache. If so, init the PT cache mode to C=1,B=0 to get write-through mode. Otherwise, init the PT cache mode to C=1,B=1. * Add a new pmap_pte_init_arm8(). Old pmap, same as generic. New pmap, sets page table cacheability to 0 (ARM8 has a write-back cache, but flushing it is quite expensive). * In the new pmap, make pmap_pte_init_arm9() reset the PT cache mode to C=1,B=0, since the write-back check in generic gets it wrong for ARM9, since we use write-through mode all the time on ARM9 right now. (What this really tells me is that the test for write-through cache is less than perfect, but we can fix that later.) * Add a new pmap_pte_init_sa1(). Old pmap, same as generic. New pmap, does generic initialization, then resets page table cache mode to C=1,B=1, since C=1,B=0 does not produce write-through on the SA-1.
|
| #
1.22 |
|
18-Apr-2003 |
scw |
Add the generic arm32 bits of the new pmap, contributed by Wasabi Systems.
Some features of the new pmap are:
- It allows L1 descriptor tables to be shared efficiently between multiple processes. A typical "maxusers 32" kernel, where NPROC is set to 532, requires 35 L1s. A "maxusers 2" kernel runs quite happily with just 4 L1s. This completely solves the problem of running out of contiguous physical memory for allocating new L1s at runtime on a busy system.
- Much improved cache/TLB management "smarts". This change ripples out to encompass the low-level context switch code, which is also much smarter about when to flush the cache/TLB, and when not to.
- Faster allocation of L2 page tables and associated metadata thanks, in part, to the pool_cache enhancements recently contributed to NetBSD by Wasabi Systems.
- Faster VM space teardown due to accurate referenced tracking of L2 page tables.
- Better/faster cache-alias tracking.
The new pmap is enabled by adding options ARM32_PMAP_NEW to the kernel config file, and making the necessary changes to the port-specific initarm() function. Several ports have already been converted and will be committed shortly.
|
| #
1.21 |
|
08-Apr-2003 |
thorpej |
Use PAGE_SIZE rather than NBPG.
|
| #
1.20 |
|
17-Jan-2003 |
thorpej |
Merge the nathanw_sa branch.
|
|
Revision tags: nathanw_sa_before_merge fvdl_fs64_base gmcgarry_ctxsw_base gmcgarry_ucred_base nathanw_sa_base kqueue-aftermerge kqueue-beforemerge bjh21-hydra-base
|
| #
1.19 |
|
19-Oct-2002 |
bjh21 |
branches: 1.19.2; Undo recent cpu_switch register usage changes in order to decrease nathanw_sa merge pain.
|
| #
1.18 |
|
18-Oct-2002 |
bjh21 |
In cpu_switch(), stack more registers at the start of the function, and hence save fewer into the PCB. This should give me enough free registers in cpu_switch to tidy things up and support MULTIPROCESSOR properly. While we're here, make the stacked registers into an APCS stack frame, so that DDB backtraces through cpu_switch() will work.
This also affects cpu_fork(), which has to fabricate a switchframe and PCB for the new process.
|
| #
1.17 |
|
12-Oct-2002 |
bjh21 |
Move curpcb into struct cpu_info in MULTIPROCESSOR kernels.
|
| #
1.16 |
|
05-Oct-2002 |
bjh21 |
Minimal changes to allow a kernel with "options MULTIPROCESSOR" to compile and boot multi-user on a single-processor machine. Many of these changes are wildly inappropriate for actual multi-processor operation, and correcting this will be my next task.
|
|
Revision tags: gehenna-devsw-base kqueue-base
|
| #
1.15 |
|
31-Aug-2002 |
thorpej |
Add machine-dependent bits of RAS for arm32.
|
| #
1.14 |
|
23-Jun-2002 |
thorpej |
Garbage-collect sigframe references.
|
|
Revision tags: netbsd-1-6-PATCH002-RELEASE netbsd-1-6-PATCH002 netbsd-1-6-PATCH002-RC4 netbsd-1-6-PATCH002-RC3 netbsd-1-6-PATCH002-RC2 netbsd-1-6-PATCH002-RC1 netbsd-1-6-PATCH001 netbsd-1-6-PATCH001-RELEASE netbsd-1-6-PATCH001-RC3 netbsd-1-6-PATCH001-RC2 netbsd-1-6-PATCH001-RC1 netbsd-1-6-RELEASE netbsd-1-6-RC3 netbsd-1-6-RC2 netbsd-1-6-RC1 netbsd-1-6-base
|
| #
1.13 |
|
05-Apr-2002 |
thorpej |
branches: 1.13.2; * Rewrite the 32-bit ARM pte.h based on the ARM architecture manual. Significant cleanup, here, including better PTE bit names. * Add XScale PTE extensions (ECC enable, write-allocate cache mode). * Mechanical changes everywhere else to update for new pte.h. While doing this, two bugs (as a result of typos) were fixed in
arm/arm32/bus_dma.c evbarm/integrator/int_bus_dma.c
|
| #
1.12 |
|
23-Mar-2002 |
thorpej |
* Rename PROCESS_PAGE_TBLS_BASE -> PTE_BASE * Rename ALT_PAGE_TBLS_BASE -> APTE_BASE * Garbage-collect PAGE_TABLE_SPACE_START
|
|
Revision tags: eeh-devprop-base newlock-base
|
| #
1.11 |
|
03-Mar-2002 |
chris |
Implement pmap_growkernel for arm32 based ports. Note that this has been compiled on some systems, cats, IQ80310, IPAQ, netwinder and shark (note that shark's build is currently broken due to other reasons), but only actually run on cats. Shark doesn't make use of the functionality as I believe there has to be a correlation between OFW and the kernel tables so that calls into OFW work.
|
|
Revision tags: ifpoll-base
|
| #
1.10 |
|
05-Feb-2002 |
thorpej |
Allow platforms to use an extra level of indirection for FIQs, enabled by definining __ARM_FIQ_INDIRECT in <machine/types.h>. This is needed for OpenFirmware systems (like the Shark), where the OFW vector page is used, and kernel entries merely patched into it.
|
| #
1.9 |
|
25-Jan-2002 |
thorpej |
Overhaul of the ARM cache code. This is mostly a simplification pass. Rather than providing a whole slew of cache operations that aren't ever used, distill them down to some useful primitives:
icache_sync_all Synchronize I-cache icache_sync_range Synchronize I-cache range
dcache_wbinv_all Write-back and Invalidate D-cache dcache_wbinv_range Write-back and Invalidate D-cache range dcache_inv_range Invalidate D-cache range dcache_wb_range Write-back D-cache range
idcache_wbinv_all Write-back and Invalidate D-cache, Invalidate I-cache idcache_wbinv_range Write-back and Invalidate D-cache, Invalidate I-cache range
Note: This does not yet include an overhaul of the actual asm files that implement the primitives. Instead, we've provided a safe default for each CPU type, and the individual CPU types can now be optimized one at a time.
|
| #
1.8 |
|
20-Dec-2001 |
thorpej |
* Share a common vector page between arm26 and arm32. * Use a common set of exception handlers for all arm32 platforms. * New FIQ framework based on discussions with Ben Harris, shared between arm26 and arm32.
|
| #
1.7 |
|
28-Nov-2001 |
thorpej |
Don't define interrupt handler-related offsets here.
|
| #
1.6 |
|
23-Nov-2001 |
thorpej |
Provide __PROG32 to assembly code.
|
|
Revision tags: thorpej-mips-cache-base thorpej-devvp-base3 thorpej-devvp-base2 post-chs-ubcperf pre-chs-ubcperf
|
| #
1.5 |
|
09-Sep-2001 |
toshii |
branches: 1.5.4; Don't define pcb_* register macros. pcb_sp macro conflicts with sys/netinet6/ipsec.c.
|
|
Revision tags: thorpej-devvp-base
|
| #
1.4 |
|
05-Sep-2001 |
matt |
branches: 1.4.2; Don't compile SPL/INTR stuff if NEWINTR is defined.
|
| #
1.3 |
|
05-Sep-2001 |
matt |
Change <machine/irqhandler.h> to <machine/intr.h>. Change {irq,fiq}handler_t to struct XXXhandler
|
| #
1.2 |
|
27-Aug-2001 |
chris |
Remove unused entries from the pcb. This is with a long term view of merging the arm26 and arm32 pcb's.
|
| #
1.1 |
|
28-Jul-2001 |
chris |
branches: 1.1.2; finish moving common arm32 bits out into arm/arm32.
|