android_kernel_xiaomi_sm8350/arch/sparc64/kernel
David S. Miller 5d8e1b181c [SPARC64]: Fix Ultra5, Ultra60, et al. boot failures.
On the boot processor, we need to do the move onto the Linux trap
table a little bit differently else we'll take unhandlable faults in
the firmware address space.

Previously we would do the following:

1) Disable PSTATE_IE in %pstate.
2) Set %tba by hand to sparc64_ttable_tl0
3) Initialize alternate, mmu, and interrupt global
   trap registers.
4) Call prom_set_traptable()

That doesn't work very well actually with the way we boot the kernel
VM these days.  It worked by luck on many systems because the firmware
accesses for the prom_set_traptable() call happened to be loaded into
the TLB already, something we cannot assume.

So the new scheme is this:

1) Clear PSTATE_IE in %pstate and set %pil to 15
2) Call prom_set_traptable()
3) Initialize alternate, mmu, and interrupt global
   trap registers.

and this works quite well.  This sequence has been moved into a
callable function in assembler named setup-trap_table().  The idea is
that eventually trampoline.S can use this code as well.  That isn't
possible currently due to some complications, but eventually we should
be able to do it.

Thanks to Meelis Roos for the Ultra5 boot failure report.

Signed-off-by: David S. Miller <davem@davemloft.net>
2005-10-10 16:12:13 -07:00
..
asm-offsets.c kbuild: frv,m32r,sparc64 introduce fake asm-offsets.h file 2005-09-09 22:47:53 +02:00
auxio.c [SPARC64]: Get rid of fast IRQ feature. 2005-06-27 17:04:45 -07:00
binfmt_aout32.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
binfmt_elf32.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
central.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
chmc.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
cpu.c [SPARC64]: Add missing IDs for newer cpus. 2005-09-27 22:50:06 -07:00
devices.c [SPARC64]: Probe D/I/E-cache config and use. 2005-09-26 00:32:17 -07:00
dtlb_backend.S [SPARC64]: Kill SZ_BITS define from dtlb_backend.S 2005-09-21 19:23:48 -07:00
dtlb_base.S [SPARC64]: Move kernel TLB miss handling into a seperate file. 2005-09-21 18:50:51 -07:00
dtlb_prot.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ebus.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
entry.S [SPARC64]: Fix userland FPU state corruption. 2005-10-07 13:30:49 -07:00
etrap.S [SPARC64]: Replace cheetah+ code patching with variables. 2005-10-04 15:23:20 -07:00
head.S [SPARC64]: Fix Ultra5, Ultra60, et al. boot failures. 2005-10-10 16:12:13 -07:00
idprom.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
init_task.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ioctl32.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
iommu_common.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
iommu_common.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
irq.c [SPARC64]: Fix compile error in irq.c 2005-10-08 21:12:04 -07:00
isa.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
itlb_base.S Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
kprobes.c [PATCH] Kprobes: prevent possible race conditions sparc64 changes 2005-09-07 16:58:00 -07:00
ktlb.S [SPARC64]: Add CONFIG_DEBUG_PAGEALLOC support. 2005-09-25 16:46:57 -07:00
Makefile [SPARC64]: Move kernel unaligned trap handlers into assembler file. 2005-08-19 15:55:33 -07:00
module.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pci_common.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pci_impl.h Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
pci_iommu.c [SPARC64]: More fully work around Spitfire Errata 51. 2005-08-29 12:46:22 -07:00
pci_psycho.c [PATCH] Make sparc64 use setup-res.c 2005-09-08 14:57:25 -07:00
pci_sabre.c [PATCH] Make sparc64 use setup-res.c 2005-09-08 14:57:25 -07:00
pci_schizo.c [SPARC64]: Fix mask formation in tomatillo_wsync_handler() 2005-09-24 23:06:14 -07:00
pci.c [PATCH] Make sparc64 use setup-res.c 2005-09-08 14:57:25 -07:00
power.c [SPARC64]: Probe for power device on ISA bus too. 2005-10-06 20:43:54 -07:00
process.c [PATCH] spinlock consolidation 2005-09-10 10:06:21 -07:00
ptrace.c [SPARC64]: Fix several bugs in flush_ptrace_access(). 2005-09-29 18:50:34 -07:00
rtrap.S [SPARC64]: Fix userland FPU state corruption. 2005-10-07 13:30:49 -07:00
sbus.c [SPARC64]: More fully work around Spitfire Errata 51. 2005-08-29 12:46:22 -07:00
semaphore.c [SPARC64]: Avoid membar instructions in delay slots. 2005-06-27 15:42:04 -07:00
setup.c [SPARC64]: Replace cheetah+ code patching with variables. 2005-10-04 15:23:20 -07:00
signal32.c [SPARC64]: More fully work around Spitfire Errata 51. 2005-08-29 12:46:22 -07:00
signal.c [PATCH] convert signal handling of NODEFER to act like other Unix boxes. 2005-08-29 10:03:11 -07:00
smp.c [SPARC64]: Probe D/I/E-cache config and use. 2005-09-26 00:32:17 -07:00
sparc64_ksyms.c [LIB]: Consolidate _atomic_dec_and_lock() 2005-09-14 21:47:01 -07:00
starfire.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
sunos_ioctl32.c [SPARC64]: Fix set/get MTU cases in sunos_ioctl() 2005-09-06 20:12:15 -07:00
sys32.S [SPARC64]: Fix fault handling in unaligned trap handler. 2005-09-28 20:41:45 -07:00
sys_sparc32.c [PATCH] remove duplicated sys_open32() code from 64bit archs 2005-09-07 16:57:43 -07:00
sys_sparc.c [PATCH] Avoiding mmap fragmentation 2005-06-21 18:46:16 -07:00
sys_sunos32.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
systbls.S [SPARC]: Add inotify syscall entries. 2005-07-27 14:14:39 -07:00
time.c [PATCH] NTP: ntp-helper functions 2005-09-07 16:57:34 -07:00
trampoline.S [SPARC64]: Replace cheetah+ code patching with variables. 2005-10-04 15:23:20 -07:00
traps.c [SPARC64]: Rewrite convoluted physical memory probing. 2005-09-29 17:58:26 -07:00
ttable.S [SPARC64]: Revamp Spitfire error trap handling. 2005-08-29 12:45:11 -07:00
una_asm.S [SPARC64]: Fix fault handling in unaligned trap handler. 2005-09-28 20:41:45 -07:00
unaligned.c [SPARC64]: Fix fault handling in unaligned trap handler. 2005-09-28 20:41:45 -07:00
us2e_cpufreq.c [SPARC64]: Fix 2 bugs in cpufreq drivers. 2005-08-18 14:35:38 -07:00
us3_cpufreq.c [SPARC64]: Add missing IDs for newer cpus. 2005-09-27 22:50:06 -07:00
vmlinux.lds.S [SPARC64]: Add CONFIG_DEBUG_PAGEALLOC support. 2005-09-25 16:46:57 -07:00
winfixup.S [SPARC64]: Replace cheetah+ code patching with variables. 2005-10-04 15:23:20 -07:00