WSL2-Linux-Kernel/Documentation
David Howells 28baebae73 [PATCH] FRV: Use virtual interrupt disablement
Make the FRV arch use virtual interrupt disablement because accesses to the
processor status register (PSR) are relatively slow and because we will
soon have the need to deal with multiple interrupt controls at the same
time (separate h/w and inter-core interrupts).

The way this is done is to dedicate one of the four integer condition code
registers (ICC2) to maintaining a virtual interrupt disablement state
whilst inside the kernel.  This uses the ICC2.Z flag (Zero) to indicate
whether the interrupts are virtually disabled and the ICC2.C flag (Carry)
to indicate whether the interrupts are physically disabled.

ICC2.Z is set to indicate interrupts are virtually disabled.  ICC2.C is set
to indicate interrupts are physically enabled.  Under normal running
conditions Z==0 and C==1.

Disabling interrupts with local_irq_disable() doesn't then actually
physically disable interrupts - it merely sets ICC2.Z to 1.  Should an
interrupt then happen, the exception prologue will note ICC2.Z is set and
branch out of line using one instruction (an unlikely BEQ).  Here it will
physically disable interrupts and clear ICC2.C.

When it comes time to enable interrupts (local_irq_enable()), this simply
clears the ICC2.Z flag and invokes a trap #2 if both Z and C flags are
clear (the HI integer condition).  This can be done with the TIHI
conditional trap instruction.

The trap then physically reenables interrupts and sets ICC2.C again.  Upon
returning the interrupt will be taken as interrupts will then be enabled.
Note that whilst processing the trap, the whole exceptions system is
disabled, and so an interrupt can't happen till it returns.

If no pending interrupt had happened, ICC2.C would still be set, the HI
condition would not be fulfilled, and no trap will happen.

Saving interrupts (local_irq_save) is simply a matter of pulling the ICC2.Z
flag out of the CCR register, shifting it down and masking it off.  This
gives a result of 0 if interrupts were enabled and 1 if they weren't.

Restoring interrupts (local_irq_restore) is then a matter of taking the
saved value mentioned previously and XOR'ing it against 1.  If it was one,
the result will be zero, and if it was zero the result will be non-zero.
This result is then used to affect the ICC2.Z flag directly (it is a
condition code flag after all).  An XOR instruction does not affect the
Carry flag, and so that bit of state is unchanged.  The two flags can then
be sampled to see if they're both zero using the trap (TIHI) as for the
unconditional reenablement (local_irq_enable).

This patch also:

 (1) Modifies the debugging stub (break.S) to handle single-stepping crossing
     into the trap #2 handler and into virtually disabled interrupts.

 (2) Removes superseded fixup pointers from the second instructions in the trap
     tables (there's no a separate fixup table for this).

 (3) Declares the trap #3 vector for use in .org directives in the trap table.

 (4) Moves irq_enter() and irq_exit() in do_IRQ() to avoid problems with
     virtual interrupt handling, and removes the duplicate code that has now
     been folded into irq_exit() (softirq and preemption handling).

 (5) Tells the compiler in the arch Makefile that ICC2 is now reserved.

 (6) Documents the in-kernel ABI, including the virtual interrupts.

 (7) Renames the old irq management functions to different names.

Signed-off-by: David Howells <dhowells@redhat.com>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2006-02-14 16:09:35 -08:00
..
DocBook Fix "stuct", "strut", "struc" typos 2006-01-15 02:12:54 +01:00
RCU [PATCH] RCU documentation fixes (January 2006 update) 2006-02-01 08:53:25 -08:00
aoe [PATCH] aoe [1/2]: support 16 AoE slot addresses per AoE shelf 2005-09-09 14:23:16 -07:00
arm [ARM] Add memory.txt to 00-INDEX 2005-12-04 17:56:46 +00:00
block barrier.txt got lost while the new barrier patchset was climbing up 2006-01-16 09:45:58 +01:00
cdrom [PATCH] remove verify_area(): remove or edit references to verify_area in Documentation/ 2005-09-07 16:57:35 -07:00
connector [CONNECTOR]: Fix documentation test module. 2005-11-08 09:38:56 -08:00
cpu-freq [PATCH] cpufreq: documentation for 'ondemand' and 'conservative' 2005-12-01 01:23:23 -08:00
cris
crypto [PATCH] Spelling fixes for Documentation/ 2005-09-10 10:06:28 -07:00
device-mapper [PATCH] Fix dm-snapshot tutorial in Documentation 2005-11-07 07:53:54 -08:00
driver-model [PATCH] Clean up Documentation/driver-model/overview.txt 2006-02-03 08:31:59 -08:00
drivers/edac [PATCH] EDAC: core EDAC support code 2006-01-18 19:20:31 -08:00
dvb V4L/DVB (3336): Bluebird firmware hosting moved to common dvb firmware dir on linuxtv.org 2006-01-09 18:21:40 -02:00
early-userspace earlyuserspace/README: fix homonym err 2005-11-08 17:16:50 +01:00
fb [PATCH] Update cyblafb driver 2006-01-09 10:00:36 -08:00
filesystems configfs: Add permission and ownership to configfs objects. 2006-02-03 14:01:05 -08:00
firmware_class [PATCH] fix missing includes 2005-10-30 17:37:32 -08:00
fujitsu/frv [PATCH] FRV: Use virtual interrupt disablement 2006-02-14 16:09:35 -08:00
hwmon [PATCH] w83627hf: Document the reset module parameter 2006-02-13 22:30:09 -08:00
i2c [PATCH] i2c: Rename i2c-sis96x documentation file 2006-02-06 12:02:14 -08:00
i2o spelling: s/retreive/retrieve/ 2006-01-10 00:10:13 +01:00
i386 [PATCH] Make the bzImage format self-terminating 2005-09-07 16:57:29 -07:00
ia64 [IA64] Add Documentation/ia64/mca.txt 2005-09-16 10:34:16 -07:00
infiniband [PATCH] IB: Add core locking documentation to Infiniband 2005-07-27 16:26:15 -07:00
input Fix "stuct", "strut", "struc" typos 2006-01-15 02:12:54 +01:00
ioctl spelling: s/appropiate/appropriate/ 2006-01-15 02:00:17 +01:00
isdn
kbuild kbuild: remove GCC_VERSION 2006-01-08 19:58:51 +01:00
kdump [PATCH] kdump: add dmesg gdbmacro into document 2006-01-11 18:42:10 -08:00
m68k [PATCH] mm: m68k kill stram swap 2005-10-29 21:40:38 -07:00
mips [MIPS] Update docs to reflect the latest status of the Alchemy IDE driver. 2006-02-14 19:13:23 +00:00
networking [IPV4]: Document icmp_errors_use_inbound_ifaddr sysctl 2006-02-02 17:02:25 -08:00
parisc
pcmcia [PATCH] pcmcia: unify attach, EVENT_CARD_INSERTION handlers into one probe callback 2006-01-06 00:03:24 +01:00
power [PATCH] swsusp: use bytes as image size units 2006-02-01 08:53:12 -08:00
powerpc [PATCH] powerpc: Add FSL USB node to documentation 2006-02-10 16:36:21 +11:00
s390 [PATCH] s390: "extern inline" -> "static inline" 2005-11-09 07:55:52 -08:00
scsi [SCSI] aic7xxx: update documentation 2006-01-31 14:39:49 -06:00
serial [SERIAL] Update serial_core documentation 2005-10-31 11:53:19 +00:00
sh
sound [ALSA] fix typos in writing-an-alsa-driver 2006-02-01 13:09:31 +01:00
sparc
spi [PATCH] SPI: spi_butterfly, restore lost deltas 2006-02-06 12:17:17 -08:00
sysctl [PATCH] Reclaim slab during zone reclaim 2006-02-01 08:53:16 -08:00
telephony
uml [PATCH] Spelling fixes for Documentation/ 2005-09-10 10:06:28 -07:00
usb [PATCH] USB: drivers/usb/media/w9968cf.c: remove hooks for the vpp module 2006-01-31 17:23:42 -08:00
video4linux V4L/DVB (3409): Mark Typhoon cards as Lifeview OEM's 2006-01-23 17:06:26 -02:00
vm [PATCH] Direct Migration V9: migrate_pages() extension 2006-02-01 08:53:16 -08:00
w1
watchdog [PATCH] ppc32: Added support for the Book-E style Watchdog Timer 2005-09-05 00:05:56 -07:00
x86_64 [PATCH] x86_64: Calibrate APIC timer using PM timer 2006-02-04 16:43:15 -08:00
00-INDEX [PATCH] update Documentation/00-INDEX 2005-11-18 10:51:22 -08:00
BUG-HUNTING
Changes [PATCH] remove gcc-2 checks 2006-01-08 20:14:02 -08:00
CodingStyle [PATCH] CodingStyle correction 2006-01-10 08:01:52 -08:00
DMA-API.txt [PATCH] Spelling fixes for Documentation/ 2005-09-10 10:06:28 -07:00
DMA-ISA-LPC.txt [PATCH] ISA DMA API documentation 2005-09-09 14:03:42 -07:00
DMA-mapping.txt
HOWTO [PATCH] Add HOWTO do kernel development document to the Documentation directory 2005-11-18 10:51:21 -08:00
IO-mapping.txt
IPMI.txt [PATCH] ipmi poweroff: fix chassis control 2005-09-07 16:57:49 -07:00
IRQ-affinity.txt
MSI-HOWTO.txt [PATCH] Doc/MSI-HOWTO: cleanups 2005-11-07 07:53:55 -08:00
ManagementStyle
PCIEBUS-HOWTO.txt
README.DAC960
README.cycladesZ
SAK.txt
SecurityBugs
SubmittingDrivers [PATCH] docs: update some updated code docs 2006-01-14 10:39:53 -08:00
SubmittingPatches [PATCH] docs: update some updated code docs 2006-01-14 10:39:53 -08:00
VGA-softcursor.txt
acpi-hotkey.txt Merge to-linus-stable into to-akpm 2005-08-15 15:52:00 -04:00
applying-patches.txt [PATCH] Docs update: typos, corrections and additions to applying-patches.txt 2006-01-10 08:01:54 -08:00
atomic_ops.txt [PATCH] atomic: inc_not_zero 2005-11-13 18:14:16 -08:00
basic_profiling.txt
binfmt_misc.txt
cachetlb.txt spelling: s/appropiate/appropriate/ 2006-01-15 02:00:17 +01:00
cciss.txt [SCSI] cciss: scsi error handling 2005-11-06 14:12:49 -06:00
cli-sti-removal.txt
computone.txt
cpqarray.txt
cpu-hotplug.txt [PATCH] Updated CPU hotplug documentation 2006-01-08 20:13:55 -08:00
cpusets.txt cpuset two little doc fixes 2006-01-11 02:01:38 +01:00
cputopology.txt [PATCH] Export cpu topology in sysfs 2006-02-03 08:32:09 -08:00
dcdbas.txt [PATCH] dcdbas: add Dell Systems Management Base Driver with sysfs support 2005-09-07 16:57:27 -07:00
debugging-modules.txt
dell_rbu.txt [PATCH] dell_rbu: changes in packet update mechanism 2005-10-11 09:46:53 -07:00
devices.txt [PATCH] USB: Delete leftovers from bluetty driver 2005-11-17 11:29:53 -08:00
digiepca.txt
dnotify.txt
dontdiff [PATCH] dontdiff: add asm_offsets 2005-09-13 08:22:29 -07:00
eisa.txt
exception.txt [PATCH] remove verify_area(): remove or edit references to verify_area in Documentation/ 2005-09-07 16:57:35 -07:00
feature-removal-schedule.txt [PATCH] hwmon: Fix reboot on it87 driver load 2006-02-06 12:02:15 -08:00
floppy.txt [PATCH] kernel Doc/ URL corrections 2005-11-22 09:14:30 -08:00
ftape.txt
hayes-esp.txt
highuid.txt
hpet.txt Documentation/hpet.txt typo 2006-01-15 02:09:54 +01:00
hrtimers.txt [PATCH] hrtimer: hrtimer documentation 2006-01-10 08:01:37 -08:00
hw_random.txt
ibm-acpi.txt [ACPI] IBM ThinkPad ACPI Extras Driver v0.12 2005-08-25 17:37:51 -04:00
ide.txt
initrd.txt
io_ordering.txt
ioctl-number.txt [PATCH] kernel Doc/ URL corrections 2005-11-22 09:14:30 -08:00
iostats.txt
isapnp.txt
java.txt
kernel-doc-nano-HOWTO.txt [PATCH] Doc/kernel-doc: add more usage info 2006-02-01 08:53:27 -08:00
kernel-docs.txt [PATCH] kernel Doc/ URL corrections 2005-11-22 09:14:30 -08:00
kernel-parameters.txt [ACPI] merge 3549 4320 4485 4588 4980 5483 5651 acpica asus fops pnpacpi branches into release 2006-01-24 17:52:48 -05:00
keys-request-key.txt [PATCH] keys: Permit running process to instantiate keys 2006-01-08 20:13:53 -08:00
keys.txt [PATCH] keys: Permit running process to instantiate keys 2006-01-08 20:13:53 -08:00
kobject.txt
kprobes.txt [PATCH] kprobes: Update Documentation/kprobes.txt 2006-02-14 16:09:34 -08:00
kref.txt
laptop-mode.txt spelling: s/appropiate/appropriate/ 2006-01-15 02:00:17 +01:00
ldm.txt
locks.txt [PATCH] Docs update: remove obsolete patch from locks.txt 2006-01-10 08:01:54 -08:00
logo.gif
logo.txt
magic-number.txt [PATCH] mm: rename kmem_cache_s to kmem_cache 2005-11-07 07:53:24 -08:00
mandatory.txt
mca.txt [PATCH] kernel Doc/ URL corrections 2005-11-22 09:14:30 -08:00
md.txt [PATCH] md: allow sync-speed to be controlled per-device 2006-01-06 08:34:10 -08:00
memory.txt
mono.txt [PATCH] merge some from Rusty's trivial patches 2005-09-10 10:06:30 -07:00
moxa-smartio
mtrr.txt
mutex-design.txt [PATCH] mutex subsystem, documentation 2006-01-09 15:59:20 -08:00
nbd.txt
nfsroot.txt
nmi_watchdog.txt
nommu-mmap.txt
numastat.txt
oops-tracing.txt [PATCH] doc: refer to kdump in oops-tracing.txt 2006-01-11 18:42:10 -08:00
paride.txt
parport-lowlevel.txt [PATCH] parport: fix documentation 2006-02-03 08:32:06 -08:00
parport.txt
pci-error-recovery.txt [PATCH] Documentation: Updated PCI Error Recovery 2006-02-03 08:32:00 -08:00
pci.txt [PATCH] merge some from Rusty's trivial patches 2005-09-10 10:06:30 -07:00
pm.txt [ACPI] linux-acpi@vger.kernel.org replaces acpi-devel@lists.sourceforge.net 2006-01-06 16:19:26 -05:00
pnp.txt
preempt-locking.txt
prio_tree.txt
ramdisk.txt
riscom8.txt
rocket.txt
rpc-cache.txt
rtc.txt
sched-arch.txt [PATCH] sched: resched and cpu_idle rework 2005-11-09 07:56:33 -08:00
sched-coding.txt
sched-design.txt
sched-domains.txt
sched-stats.txt
seclvl.txt
serial-console.txt
sgi-ioc4.txt
sgi-visws.txt
sharedsubtree.txt [PATCH] Complete description of shared subtrees. 2005-11-07 18:18:11 -08:00
smart-config.txt
smp.txt
sonypi.txt [PATCH] sonypi SPIC initialisation fix 2005-09-07 16:57:24 -07:00
sparse.txt [PATCH] Documentation/sparse.txt: mention CF=-Wbitwise 2005-11-07 07:53:54 -08:00
specialix.txt
spinlocks.txt
stable_api_nonsense.txt [PATCH] stable_api_nonsense.txt fixes 2005-07-29 13:12:49 -07:00
stable_kernel_rules.txt [PATCH] Docs update: small fixes to stable_kernel_rules.txt 2006-01-10 08:01:55 -08:00
stallion.txt
svga.txt
sx.txt
sysrq.txt update for Documentation/sysrq.txt 2006-01-03 13:31:01 +01:00
time_interpolators.txt
tipar.txt
tty.txt
unicode.txt
unshare.txt [PATCH] unshare system call -v5: Documentation file 2006-02-07 16:12:34 -08:00
voyager.txt
xterm-linux.xpm
zorro.txt

README.cycladesZ

The Cyclades-Z must have firmware loaded onto the card before it will
operate.  This operation should be performed during system startup,

The firmware, loader program and the latest device driver code are
available from Cyclades at
    ftp://ftp.cyclades.com/pub/cyclades/cyclades-z/linux/