History log of /netbsd-current/sys/arch/arm/arm/cpufunc_asm_armv7.S
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
Revision tags: isaki-audio2-base pgoyette-compat-20190127 pgoyette-compat-20190118 pgoyette-compat-1226 pgoyette-compat-1126 pgoyette-compat-1020
# 1.28 06-Oct-2018 skrll

Add the ARM ARM cache operation name in some comments


Revision tags: pgoyette-compat-0930 pgoyette-compat-0906 pgoyette-compat-0728 phil-wifi-base 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 tls-maxphys-base-20171202 nick-nhusb-base-20170825
# 1.27 24-Aug-2017 jmcneill

branches: 1.27.2;
Do runtime detection of MP extensions to allow using a MULTIPROCESSOR
kernel on CPUs without the MP extensions feature (like Cortex-A8).


Revision tags: netbsd-8-0-RELEASE netbsd-8-0-RC2 netbsd-8-0-RC1 matt-nb8-mediatek-base perseant-stdc-iso10646-base 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.26 09-Jun-2015 skrll

Use TTBR_[UM]PATTR in a9_mpsubr.S as well as cpufunc_asm_armv7

Prompted by matt@


# 1.25 07-Jun-2015 skrll

Dont use magic number.

No functional change.


Revision tags: nick-nhusb-base-20150606
# 1.24 30-May-2015 skrll

Typo in previous


# 1.23 30-May-2015 skrll

Provide a armv7_dcache_l1inv_all


# 1.22 16-May-2015 skrll

Add MULTIPROCESSOR tlb flushes to armv7_tlb_flushID. Also, invalidate the
branch predictor.

This function is only used by db_write_bytes and kobj_machdep


Revision tags: nick-nhusb-base-20150406 nick-nhusb-base
# 1.21 09-Nov-2014 skrll

branches: 1.21.2;
Ensure all memory operations are complete by before wfi. For example, the
cpu could have just been in uvm_pageidlezero.


# 1.20 29-Oct-2014 skrll

Add some dsb instructions to avoid Cortex A7 errata


# 1.19 29-Oct-2014 skrll

Don't flush random ASIDs. Instead always assume KERNEL_PID, i.e. 0.
All other TLB flushes are done via

pmap_tlb_invalidate_addr -> tlb_invalidate_addr

OK matt@


Revision tags: netbsd-7-base tls-earlyentropy-base tls-maxphys-base
# 1.18 31-Jul-2014 matt

branches: 1.18.2;
Remove a leftover _XXX


Revision tags: yamt-pagecache-base9 rmind-smpnet-nbase rmind-smpnet-base
# 1.17 10-Apr-2014 matt

Address PR/48710.
r3 is not trashed during the routine so the level is preserved.
The only two real bugs was not initializing r3 to 0 to start with L1 cache
and the invalid fetching the set count from r3. The mov r1, #0 should have
been mov r3, #0 and has been corrected.
Instead of two shifts, just use ubfx to extract the set bits and then compare
them to 0.
Add some other minor optimizations that make the code a little clearer.


Revision tags: riastradh-xf86-video-intel-2-7-1-pre-2-21-15
# 1.16 28-Mar-2014 matt

branches: 1.16.2;
Add ARM_MMU_EXTENDED support


Revision tags: riastradh-drm2-base3
# 1.15 24-Feb-2014 matt

Don't need to round since values are N-1.


# 1.14 20-Feb-2014 matt

Add armv7 versions of tlb routines.


# 1.13 20-Feb-2014 matt

for non-of-power-2 sets, we need to round to next power of 2. (which is
simply doubling the value and then subtracting 1).


# 1.12 18-Aug-2013 matt

branches: 1.12.2;
Move parts of cpu.h that are not needed by MI code in <arm/locore.h>
Don't include <machine/cpu.h> or <machine/frame.h>, use <arm/locore.h>
Use <arm/asm.h> instead of <machine/arm.h>


Revision tags: riastradh-drm2-base2 riastradh-drm2-base1 riastradh-drm2-base agc-symver-base yamt-pagecache-base8 yamt-pagecache-base7
# 1.11 21-Nov-2012 matt

branches: 1.11.2;
Always supply all registers (don't make one implicit).


Revision tags: yamt-pagecache-base6
# 1.10 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.9 19-Oct-2012 matt

Add armv7_drain_writebuf (which is just a dsb).


# 1.8 17-Oct-2012 matt

Add a few more DSBs before flushing cache lines.


# 1.7 07-Oct-2012 matt

Fix range ops to properly flush.


# 1.6 22-Sep-2012 matt

Don't use an asm in pmap_activate to update the TTBR, use cpu_setttb instead
but add a second argument to it to indicate whether the TLB/caches need to be
flushed. Default cortex to pmap_needs_fixup = 1. But check the MMFR3 field
to see if the fixed can be skipped.
Use a cf_flag bit 0 to indicate whether the A9 L2 cache should disable (bit 0 = 1)
or enabeld (bit = 0).

With these changes, the A9 MMU can use traverse caches to do MMU tablewalks
Also, make sure all memory has the shareable bit for the A9.


# 1.5 11-Sep-2012 matt

branches: 1.5.2;
Compute cache line size before doing the loop.
Map translation table for MP with outer-cache=NONE


# 1.4 06-Sep-2012 matt

Enable "shareable" access to the page table for armv7. PTE_SYNC only does
a DSB now on an armv7 cpu and no longer needs to flush the cache line to ram.


# 1.3 29-Aug-2012 matt

Recode armv7_dcache_wbinv_all in asm. Add armv7_dcache_inv_all and
armv7_icache_inv_all as well.
Use dsb/dmb/isb instructions


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 uebayasi-xip-base7 bouyer-quota2-nbase bouyer-quota2-base jruoho-x86intr-base matt-mips64-premerge-20101231 uebayasi-xip-base6 uebayasi-xip-base5 uebayasi-xip-base4 jym-xensuspend-base uebayasi-xip-base3 yamt-nfs-mp-base11 uebayasi-xip-base2 yamt-nfs-mp-base10
# 1.2 19-Jun-2010 matt

branches: 1.2.2; 1.2.4; 1.2.6; 1.2.14; 1.2.22;
Cleanup the armv7 changes. Add ARM_ARCH_7. Use CPU_CORTEX instead of
CPU_CORTEXA8 everywhere since there more types of Cortex than just the A8.
CPU_CORTEXA8 still exists but causes CPU_CORTEX to be defined.
Add CPU_CORTEXA9 as well. Use .arch armv7a to get us the isb/dsb
instructions.

Test booted to root device prompt on a Beagleboard.
All ARM kernels successfully test built.


# 1.1 16-Jun-2010 jmcneill

PR port-arm/43299: Support added for igepv2/cortexa8/omap3530

Apply patch from PR, with build fixes. ok skrll, matt