- Base: N7100 KK Sources
- Linux 3.0.31
- Compiled using latest ArchiToolchain 5.2.0
- ArchiDroid Optimizations
- Using AnyKernel method (compatible with all ROMs for both AOSP and Samsung)
- And many other awesome things I have no time to list
- Fully optimized for Samsung Galaxy S3 (-marm -march=armv7-a -mcpu=cortex-a9 -mtune=cortex-a9 -mfpu=neon -mfloat-abi=softfp)
- Compiled with O3 optimization level (-O3)
- Performed interprocedural pointer analysis and interprocedural modification and reference analysis (-fipa-pta)
- Performed loop invariant motion on trees. It also moved operands of conditions that are invariant out of the loop, so that we can use just trivial invariantness analysis in loop unswitching. The pass also includes store motion (-ftree-loop-im)
- Created a canonical counter for number of iterations in loops for which determining number of iterations requires complicated analysis. Later optimizations then may determine the number easily (-ftree-loop-ivcanon)
- Performed induction variable optimizations (strength reduction, induction variable merging and induction variable elimination) on trees (-fivopts)
- Tried to reduce the number of symbolic address calculations by using shared “anchor” symbols to address nearby objects. This transformation can help to reduce the number of GOT entries and GOT accesses on some targets (-fsection-anchors)
- Assumed that loop indices do not overflow, and that loops with nontrivial exit condition are not infinite. This enables a wider range of loop optimizations even if the loop optimizer itself cannot prove that these assumptions are valid (-funsafe-loop-optimizations)
- Moved branches with loop invariant conditions out of the loop (-funswitch-loops)
- Attempted to avoid false dependencies in scheduled code by making use of registers left over after register allocation. This optimization most benefits processors with lots of registers (-frename-registers)
- Re-ran common subexpression elimination after loop optimizations are performed (-frerun-cse-after-loop)
- Didn't keep the frame pointer in a register for functions that don't need one. This avoids the instructions to save, set up and restore frame pointers; it also makes an extra register available in many functions (-fomit-frame-pointer)
- Made a redundant load elimination pass performed after reload. The purpose of this pass is to clean up redundant spilling (-fgcse-after-reload)
- Ran a store motion pass after global common subexpression elimination. This pass attempts to move stores out of loops (-fgcse-sm)
- Eliminated redundant loads that come after stores to the same memory location, both partial and full redundancies (-fgcse-las)
- Constructed webs as commonly used for register allocation purposes and assigned each web individual pseudo register. This allows the register allocation pass to operate on pseudos directly, but also strengthens several other optimization passes, such as CSE, loop optimizer and trivial dead code remover (-fweb)
- Performed tail duplication to enlarge superblock size. This transformation simplifies the control flow of the function allowing other optimizations to do a better job (-ftracer)
What to expect:
- Awesome stock battery life on AOSP ROMs (due to Samsung sources and not smdk4x12)
- Blazing fast (Deep advanced optimizations, Linaro toolchain, this is the beast)
- High compatibility (AnyKernel method, the kernel should work on all ROMs)
What to expect in future:
- You tell me
What to NOT expect:
- Many CPU or I/O governors # We don't need overhead, you can achieve nearly the same just by tweaking governor to your needs
- Features I don't like/need
- Dualboot (see above ^)
- F2FS (see above ^, however this one depends on kernel upstreaming, as f2fs is merged)
ArchiKernel is provided in 4 different variants, 2 for AOSP ROMs and 2 for SAMSUNG ROMs.
AOSP -> 29 MALI blobs AOSP variant. Should cover all Lollipops for SGS3.
AOSP_OLD -> 23 MALI blobs AOSP variant. Should cover all KK and pre-KK ROMs for SGS3.
SAMSUNG -> 23 MALI blobs Sammy variant. Should cover all JB ROMs and also some KK ROMs based on N7100 port (such as ArchiPort)
SAMSUNG_NEW -> 29 MALI blobs Sammy variant. Should be used only on KK+ Sammy ROMs based on korean port
ArchiKernel is using my own AnyKernel flashing method, therefore it does not suffer from a need to update it with maintenance ramdisk updates, and that's one of the reason why it should work properly with all ROMs, even those not officially supported, as long as variant matches.
1. Make sure that you have stock kernel already flashed (the one which comes with your ROM), if you're running custom kernel already, reflash your ROM without wipe, this will also flash stock kernel. This is ultimately important, DON'T FLASH ARCHIKERNEL ON ANOTHER CUSTOM KERNEL, you may face various issues you've never seen before.
* This is because ArchiKernel uses AnyKernel method - it pulls ramdisk from your current kernel. If you brick your phone by flashing AK on top of custom kernel, you know who will be responsible for that.
2. Flash ArchiKernel zip.
1. If you arleady have older ArchiKernel version flashed properly with above instructions, and changelog doesn't state otherwise, just flash the .zip with new version of AK.
2. No wipes, cleaning dalvik cache or anything else is required, flashing zip is enough.
[EOL] [KERNEL] [AOSP/Samsung/Ports] [ArchiToolchain 5.2] [01/10/15] ArchiKernel V2.1, Kernel for the Samsung Galaxy S III I9300
Source Code: https://github.com/ArchiDroid/ArchiKernel
Kernel Special Features:
Status: No Longer Updated
Last Updated 2015-11-12