Added the documentation section of arch/arm32 to not let it dissapear.

Can't say for sure ig the interrupts/majors+minors files are still valid
though.
This commit is contained in:
reinoud 2001-10-18 00:05:00 +00:00
parent e8a24b6100
commit 492b11d134
5 changed files with 934 additions and 0 deletions

View File

@ -0,0 +1,12 @@
# $NetBSD: bootloader,v 1.1 2001/10/18 00:05:00 reinoud Exp $
The current bootloader (since 2001) is written in BASIC and is RISC OS
version independent; it even runs on NC's.
In contrast to the old bootloader, the (new) bootloader is relocating the
kernel itself at 0xf0000000. This address is fixed to support OFW
machines which feature this start address.
The development of a 2nd stage bootloader is a possible extension.

View File

@ -0,0 +1,80 @@
/* $NetBSD: bootoptions,v 1.1 2001/10/18 00:05:01 reinoud Exp $ */
/*
* Copyright (c) 1996 Mark Brinicombe.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by Mark Brinicombe.
* 4. The name of the company nor the name of the author may be used to
* endorse or promote products derived from this software without specific
* prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* RiscBSD kernel project
*
* bootoptions
*
* Description of all available boot options
*
* Created : 02/10/96
* Updated : 20/02/01
*/
This file describes all the boot options available.
RiscPC Boot options
Options for all kernels
nocache Disable all processor caches
nowritebuf Disable processor write buffer
fpaclk2 Clock FPA at half processor clock speed
single Single user mode
kdb KDB
maxproc= Specify the maximum in-core processes (L1 page tables)
ramdisc= Specify ramdisc size in KB
nbuf= Specify the number of buffers
nowdreset Skip the wd driver drive reset command
ascpoll Use polling mode rather than interrupt mode for the asc
driver
nbuf= Specify the number of buffers to use.
Options for StrongARM kernels
icache Enable instruction cache
dcache Enable data cache
Special debugging options not for normal use
pmapdebug= Specify pmap debug level
termdebug Enable console debugging
notermcls Console debugging option
RC7500 Boot options
-s Single user mode
-a Prompt for root device
-k KDB
-m video memory size

View File

@ -0,0 +1,463 @@
# $NetBSD: history,v 1.1 2001/10/18 00:05:01 reinoud Exp $
---------------------------------------------------------------------------
This document is more included as a historical reference and nostalgia :)
rather than a still worked on list.
---------------------------------------------------------------------------
(stuff before this time is aparently lost)
3135 - fixed mode selection on boot
- page up/down, insert and delete now generate the correct codes in
the console
- the configured modesare now compiled in a separate file rather
than in vidcconsole.c
- The eb timeout reduced to 30 secs
- clreos problems fixed
- / on the keypad generated the correct code
- the block cursor hove down 2 scan lines to align with characters
- extended irq renamed netslot
- extra double mapping of kstack removed
- kstack located at efbfe000
- implementation of cpu_swapin() to remap the kstack
- patch to vm_glue to use kmem_alloc for the kstack
- extra pmap debugging code added with DEBUG669
- the pventry tables can not be dumped from the kshell
or from a running system.
- merged console code v133 into kernel
- the disklabel code no longer prints a warning if a HD is found
without a adfs partition
- the kbd driver now is capable of setting the keyboard leds.
- added ioctl to set the keyboard leds.
- added a routine to read the keyboard state.
- added a routine to set the keyboard state.
- added some prototypes to kbd.h
- implmented irq_setmasks() as an assembly function.
- added an extra disable irq mask
- the irq bits from IOMD reg A are cleared as soon as req A is read
- Debugged the plip driver. The ip packet is now word aligned when
passed to the upper network levels
20/09/95
- the cpu_switch routine checks the amount of stack space used when
swapping in a task and prints a warning when 6K has been used
- removed the remnants of the old kstack double mapping
- a separate message is printed for umounts during a halt.
- added extra validation in copyin() copyout() copyinstr() and
copyoutstr()
- podule irq handler no longer panics
- Lark A16 podule now recognised
- section permission faults now cause bus errors
- the syscall handler now correctly uses bcopy to copy the register
passed parameters
- the copyin() function now validates the uaddrs argumant
- the kstack is filled with a know pattern on a fork()
- the postmortem code will check the size of the kstack fill pattern
- the assembly bcopyinout() now returns EFAULT on error
- the copyin() copyout() copyinstr() copyoutstr() now return EFAULT
if the validation checks fail.
23/09/95
- the fault handler will report faults from (fu/su)iwintr()
- added new pmap function to return the address of the next physical
page (pmap_next_phys_page).
- added code to machdep.c to compare the page number against
pmap_next_phys_page() to try and locate source to kernel size
limit
- added option to syscall_special (32) to return the address of the
next physical page.
- fixed the primary bootstrap to map more memory for the secondary
bootstrap to use.
- The 936K kernel size limit has been removed.
- Added support for KTRACE in syscall.c
- Seondary bootstrap now zeros down its memory
- cpu_switch now zeros curpcb while there is no valid process
-
1/10/95
- cpuswitch now detects trahsed stacks.
- new compile option for generation of enhanced postmortem debugging
- merged console code 183b
- implemented a memcpy routine
- removed remnants of the kstackpte's
- cleaned old commented debugging code out of cpu_switch
- Added new comments in exception.S
- userret() check for a non-zero proc pointer
- extended postmortem debug for cpu_switch bug
- updated prototype declarations in machdep.c
- fixed passing of proc0 pointer into cpu_switch from switch_exit
- podulebus now recognised Lingenuity podules
- Lingenuity 16bit SCSI card recognised
3/10/95
- new compile option ROTTEN_INARDS to dump full debugging info on
postmortem
- Rewritten postmortem debug information printout
- Postmortem will now examine the IRQ stack for traceback info
- Fix cpu_exit() bug thus could result in the idle being entered at
splhigh()
- Added function prototypes for functions called in vm_machdep.c
- boot0() now makes sure IRQ's and FIQ's have been disabled
- The ARM700 FPA is now correctly turned off during boot
- A major has been allocated for the vidcaudio device (36)
- vidcaudio.c added to mainbus/ and associated support added in
conf/ and conf.c
- Patch to the console code to report the version number
- Latest version of dev/isa/com.c merged into mainbus/com.c
- Latest version of dev/isa/lpt.c merged into mainbus/lpt.c
- Latest version of dev/isa/wd.c merged into mainbus/wd.c
- new assembly version of copystr added
- buffer address for beep0 removed from attach message
- unrecognised undefined instructions are now logged as errors to
syslog
- fpe now attaches a coproc2 handler to stap coproc2 FP instructions
and report an error
- New compile option FPE_INLINE added to fpe.c to inline some of the
conversion functions
- Added new compile option FPE_PROF to fpe.c to compile in FP profiling
code
-
14/10/95
- added podule id for laser direct card
- added podule id for morley SCSI card
- added podule id for AXRE SCSI card
- added podule id for CC midi max card
- modified primary/secondary bootstraps to reserve special boot
- memory for hydra board
- added hydra device
- Added cpu identification for all hydra processors
- Private stacks are allocated to all slave processors
- All hydra processors are halted on reboot
- podule code checks for chunk directories but does not try to read
them yet.
- polling, immediate execution asc driver written for Acorn SCSI
card
- new special syscalls added to aid development of hydra software
01/11/95
- kernel built with new netbsd-current source tree
- arm32 source updated to conform to latest netbsd-current source
tree
03/11/95
- ALT-Cursor Left/Right now work the correct way round
- ALT-F6 now gernerates the correct code
- alpha version of the cumana SCSI II driver added
- alpha version of the ether1 driver added
- console code upgraded to V191
- driver directory structure changed.
- ./src/patch directory updated
- alpha version of ATAPI CDROM driver added
- mainbus and podulebus directories split in to public and private
directories.
- warnings from validate_trapframe() are prefixed with "VTF"
- old rpc console stuff removed from files.arm32 and source moved to
arch/arm32/old/
- the arch/arm32/pmap_stuff dir has been moved to arch/arm32/old/
- the _mcount.S and belgium.S files have been moved to old and
removed from files.arm32
- the device name to major code in autoconf.c now recognised /dev/cd
and /dev/wcd
- the mountroot code in stubs.c will call cd9660_mountroot() instead
of ffs_mountroot() is the root dev is a CDROM major.
- major 36 allocated to audio device
- major 37 allocated to vidcvideo device
- major 38 allocated to hydra device
07/11/95
- cpu_fork() now maps in a page table for each process covering the
0M-4M block of memory.
- VM_MIN_ADDRESS lowered to 0x1000
- cpu_swapout() unmaps the system page at 0x00000000 from its page
table
- cpu_swapin() wires down the pagetable covering 0x00000000 and
maps in the system page at 0x00000000
- cpu_swapin() and cpu_swapout() moved to vm_machdep.c
- pmap_enter_pv() no longer panics on duplicate mapping, it just
prints an warning.
- alpha version of the powertec SCSI driver
15/11/95
- switch_exit now unmaps the system page.
- added newline to printf in disksubr.c
- the console code has been moved to the dev directory
- cumana SCSI II driver upgraded to support interrupts
- powertec SCSI II driver upgraded to support interrupts
- the mount root code in stubs.c will attempt to mount
a hd partition as cd9660 if the ffs_mountroot() fails.
- added missing copyright notices
- updated some declarations in header files
- removed DEBUG669 code from pmap.c
- new syncing routine written for boot()
- syncing no longer requires kshell support
- Added extra comments to the boot() function
- Implemented cpu_sysctl() function (just returns not supported
error)
- The nosync kernel interrupt now correctly uses RB_NOSYNC
-
20/11/95
- restructure of directories contains device files
- fixed bug in pmap_pte() that could result in non-word
aligned pointers being returned in a off page boundry virtual
address was specified.
-
24/11/95
- merged in new netbsd-current source tree
- removed all the validate_trapframe() calls
- the ioctl CONSOLE_BLANKTIME now reloads the blank timer
- the ioctl CONSOLE_BLANKTIME uses the default blank time if a
negative time is specified.
- the machine id is now passed in the bootconfig structure
- the eb0 driver will set the MAC address from the machine id
if the address has not already been set.
26/11/95
- Fixed the definition of va_dcl in arm32/include/varargs.h
-
02/12/95
- Fixed the WriteShort() macro
- Removed some redundant code from machdep.c
- cpu_sysctl is now declared to return an int
- stubs.c now has prototypes for the floppy driver functions it
calls when loading the ramdisc.
- further debugging work on the ether3 driver
10/12/95
- Added uk device for unknown scsi devices to configuration files
and conf.c
- Alpha version of the ether3 ea device driver
14/12/95
- Merged in beta version of the ether1 (ie) device driver
- added ifdefs to stubs.c so the cd9660_mountroot() is only called
when the kernel is compiled with CD9660
- created new text file to track all major and minor numbers
16/12/95
- define __FORK_BRAINDAMAGE for compilation with the latest NetBSD
sources
- boot() now calls doshutdownhooks()
- merged in frank's new debugger code (process_machdep.c, ptrace.h,
regs.h)
- patches stub.c to take account of frank's new code
- patch cpu.h to give more detail on the PSR bits
- fixed the setting of p->p_mdregs to point to the trapframe in
the kernel mapping of kstack rather than the current mapping.
- removed some redundant code from mem.c
- commented out all the trace_debug code
- cpu_coredump moved from stubs.c to vm_machdep.c
- implemented ptrace.S in libc
- boot() no longer sets the curproc to proc0 if it was zero.
- spl's added to the console locking code
-
19/12/95
- merged in new console code (V203) from Nut
- dosoftints() now calls pppintr()
21/12/95
- sys_sysarch() no longer panics but returns EINVAL instead.
- added 3 new debugging syscalls for tracing the vnode bug
- identified what goes wrong with vnodes resulting in a lockup
- fixed a number of source file headers
- Added new comments to a number of routines.
- readdisklabel() now sets the B_AGE flag on its buffer
- ether3 drive now reports the controller chip type
- removed all stand and glue code from kshell
- added a new debugging syscall to all wakeup() to be called
24/12/95
- removed redundant physconinit() call in initarm().
- updated comments in machdep.c
- added support for mulitple swap devices to be specified at boot
time
- changed debugging output in userret()
- added extra debugging
- added new debugging syscalls for tracubg the vnode bug
- added new debugging commands to the kshell
- added a new insw16() function for faster block transfers
- created a patch to fix p_nice
- the wd driver now supports multisector transfers
- added a new outsw16() function for faster block transfers but is
currently untested
- the existing arm32/fpe directory has been renamed to
arm32/fpe-sp
- started work on integrating the ARM FPE
- a new fpe directory arm32/fpe-arm has been created for the new FPE
- file arm32/cpu.S renamed to arm32/cpuswitch.S
- created new mainbus device 'cpu' (mainbus/cpu.c)
- created new header file include/cpus.h to hold macros and
structure definitions for cpus.
- all identify functions for the processor and FPA have been moved
to mainbus/cpu.c
- FPE is now attached during the cpu attachment during
autoconfiguration
- Identification of CPU and FPU split into separate functions in
mainbus/cpu.c
- Added new function initialise_fpe() to fpe-sp/fpe.c This is the
new initialisation point for the FPE. All vector claiming is done
in this routine. Routine is also responsible for IDing the FPE.
- ramdisc memory allocation now only ever done in the ramdisc driver
- cpu_model now declared in mainbus/cpu.c
- rpc_configure() renamed to configure()
- added function need_proftick() to clock.c
- further development work ARM FPE driver
- glue code for ARM FPE written and tested.
- ARM FPE now gets first chance as being installed with
the existing FPE installed as a fallback if the ARM FPE
installation failed.
- Hooks for the ARM FPE added in cpu_fork() cpu_exit() and
cpu_switch()
- Recoding of ether3 driver started.
- More debugging code added to trace vnode bug
- macro added to syscall.c to handle exit from the syscall handler
for special development syscalls.
- Vnode bug idenitfied as a corruption of the first word (v_flag)
of certain vnodes.
- Ether3 driver rewritten and debugged. Now a beta stage driver
- Vnode corruption traced to console code.
- Ether3 drive now has interface buffer memory tests
- vnode corruption traced to do_scrolldown() routine in the
console driver.
- vnode corruption bug located and fixed. Incorrect loop start and
end points when scrolling the character map down (writing beyond
allocated memory).
- Started work on rewriting the etherB driver
- cleaned up various header files
- removed stub.c as it was no longer needed
- updated strstr.c
- hydra code hooks now only compiled in if hydra device is
configured
- EtherB driver rewritten to match recoding of ether3 driver
- EtherB driver now a beta stage driver
- Work started on generic driver code for SEEQ EDLC's
- vidcvideo device now supports multiple openings
- EtherB driver now puts the controller to sleep when not active
- strstr() replaced with version borrowed from libc/string/strstr.c
05/01/96
- Further development of ARM FPE
- generic fas216 code no longer experimental/NDA
- powertec scsi driver no longer experimental/NDA
- entry to undefined instruction handlers is now indirected in
exception.s
- entry to the undefined instruction handlers is made a trapframe
on the stack and r0-r12 preserved from exception.
- bounce code added so the existing undefined instuction handler
can be called with r0 pointing to the trapframe.
- new function arm_fpe_copycontext created
- fixed the use of FP instructions in sfas.c
- fixed errors in the softint code
- netns support can be be compiled in the kernel
- fixed warnings in fpe-sp/fpe.c and mainbus/cpu.c
10/01/96
- exception.S updated pending new undefined instruction handling
code
- merged in new wd driver from NetBSD-current
- merged in new com driver from NetBSD-current
- merged in new fd driver from NetBSD-current
- created new file sys_machdep.c for machine dependant syscall stuff
- moved sys_sysctl from machdep.c to sys_machdep.c
- fixed nested comments in iic.S
- removed old bug tracing code from cpuswitch.S
- debugged new fd driver
13/01/96
- undefined mode r13 added to the pcb structure
- new version of the ARM fpe built
- ARM FPE now has core deactivate routine accessible
- Call back from ARM FPE added on instruction completion
- cpu_switch() now switches UND32 mode r13
- cpu_fork() now sets up UND32 mode r13 in pcb
- undefined vector now calls stub routine that indirects
via address held in data area.
- data abort handler address now held in data area rather
than text area.
- prefetch abort handler address now held in data area rather
than text area.
- disabled warnings about soft errors from the fd driver
17/01/96
- implemented pmap_resident_count()
- fixed the kernel avail_start and avail_end variable. This
fixes the divide by zero bug in /bin/ps
- ps now reports the correct resident size
19/01/96
- kernel now supports permission faults in UND32 mode.
- kernel shell now has kshell> prompt instead of #
- ramdisc loading code has been moved from stubs.c to fd.c
- ramdisc loading code now uses a rd_conf structure to
describe the ramdisc.
- rd_hooks.c file added to the arm32/dev directory in
order to support the generic ramdisk.
- patch to generic ramdisc driver to allow a device match hook
- mainbus/ramdisc.c removed.
- generic ramdisc has now replaces to mainbus/ramdisc.
- fault.c reformatted
- new compile symbols introduced to comile in debug code for
fault correction.
- all remnants of the trace_debug code removed.
- armfpe code moved from arm32/fpe-arm/arm32 to arm32/fpe-arm/
- fu*() su*() functions moved from libkern into arm32/fusu.c
- added code to locore.S to traceback frames on the user process
stack
- added variable to enable / disable tracing back of user process
stacks
- added syscall to control user stack trackbacks.
- optimised ARM FPE exception delivery code
- implemented ARM FPE post processing callback glue
- ARM FPE post processor now calls user
- ARM FPE post processor optimised to recover some of the
performance lost by calling userret()
- integrated alpha version of the etherH driver
- updated ramdisc hooks to removed the need for a rd_match_hook()
function
- added Oak to the list of podule manufacturers
- kernel now reconised Oak SCSI I cards.
- Added generic NCR5380 SCSI driver code
- integrating in alpha version of the oak SCSI driver
26/01/96
- merged in latest updates from the NetBSD-current source tree
29/01/96
- code updated for merging into NetBSD source tree
02/02/96
- assembly symbol file now names assym.h instead of assym.s
- The symbol LOCORE has been replaced with _LOCORE
- ramdisc loading code in now compiled in conditionally on
RAMDISK_HOOKS
- Further development of hydrabus device.
- cpus can noe be attached to both the mainbus and the hydrabus
- hooks for hydrabus device updated in pmap.c syscall.c and
machdep.c
- Extra comments added in exception.S
- sizeof(struct trapframe) now defined in assym.h
- register fixup for data transfer instruction aborts now handles
LDC/STC instructions i.e. hardware executed LDF/STF
- configuration files updated for latest devices
- fixed use of mkdepend in makefile
- fixed the bug that caused panics when issuing the mode change
ioctl to the vidcvideo device
- console code version number updated
- Updated armfpe_post_proc() to take a trapframe pointer as the
second argument
- updated the armfpe_post_proc_glue() code to fake a trapframe
structure from the FPE frame before calling the post proc handler
so that sendsig has a valid trapframe in p->p_md.md_regs
- updated the armfpe_post_proc_glue() code to patch the FPE frame
with data from the trapframe on return from the post proc handler.
- signal delivery is now working during FP instructions.
- mondef code resurrected and renamed to setdisplay and moved to the
stand directory.
NetBSD/arm32 source code is now merged in to the NetBSD source tree.
All code changes are now logged via CVS and are available from the
NetBSD source-changes mailing list.

View File

@ -0,0 +1,81 @@
/* $NetBSD: interrupts,v 1.1 2001/10/18 00:05:01 reinoud Exp $ */
/*
* Copyright (c) 1996 Mark Brinicombe.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by Mark Brinicombe.
* 4. The name of the company nor the name of the author may be used to
* endorse or promote products derived from this software without specific
* prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
Notes on interrupts.
Ok since interrupts can be chained the return value from an interrupt
handler is important.
The following return values are defined :
-1 - interrupt may have been for us but not sure so pass it on
0 - interrupt no serviced (not ours)
interrupt serviced but pass on down the chain
1 - interrupt serviced do not pass on down the chain
The important bit is whether the interrupt should be passed on down
the chain of attached interrupt handlers.
For some interrupts and drivers where only a single device is
ever expected, the interrupt should be claimed if it has been serviced.
Passing it on down the chain may result in the stray interrupt handler
being called.
There are however some interrupt that should *always* be passed on down
the chain. These are interrupt which may commonly have multiple drivers
attached.
The following interrupts should always be passed on (return value of 0)
IRQ_TIMER0
IRQ_TIMER1
IRQ_VSYNC
IRQ_FLYBACK
IRQ_PODULE
IRQ_CLOCK (RC7500)
The following interrupts are recommended to be passed on
IRQ_DMACH0
IRQ_DMACH1
IRQ_DMACH2
IRQ_DMACH3
IRQ_DMASCH0
IRQ_DMASCH1
IRQ_SDMA (RC7500)
All other interrupts are not expected to be shared and may be claimed
when serviced. Stray IRQ handlers may or may not be attached to the end
of these irq chains.

View File

@ -0,0 +1,298 @@
/* $NetBSD: majors+minors,v 1.1 2001/10/18 00:05:01 reinoud Exp $ */
/*
* Copyright (c) 19941198 Mark Brinicombe.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by Mark Brinicombe
* for the NetBSD Project.
* 4. The name of the company nor the name of the author may be used to
* endorse or promote products derived from this software without specific
* prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* list of all allocated major numbers
*
* Created : 17/09/94
*/
List of allocated and reserved major and minor numbers
The block and character major numbers are ALWAYS allocated together to the
same device driver even if the driver does not require both.
0 B - reserved
0 C - memory device
minor = 0 - /dev/mem
minor = 1 - /dev/kmem
minor = 2 - /dev/null
minor = 3 - /dev/zero
1 B - swap device
1 C - psuedo swap device
minor = 0 - /dev/drum
2 B - reserved
2 C - console device
minor = 0 - /dev/console
3 B - reserved
3 C - controlling terminal
minor = 0 - /dev/tty
4 B - reserved
4 C - virtual console
/dev/ttyv{unit}
unit = minor
5 B - reserved
5 C - kernel log device
minor = 0 - /dev/klog
6 B - reserved
6 C - psuedo tty master
/dev/pty{class}{unit}
unit = minor % 16
minor / 16 = 0 - class = p
minor / 16 = 1 - class = q
minor / 16 = 2 - class = r
minor / 16 = 3 - class = s
minor / 16 = 4 - class = t
7 B - reserved
7 C - psuedo tty slave
/dev/tty{class}{unit}
unit = minor % 16
minor / 16 = 0 - class = p
minor / 16 = 1 - class = q
minor / 16 = 2 - class = r
minor / 16 = 3 - class = s
minor / 16 = 4 - class = t
8 B - reserved
8 C - parallel printer
/dev/lp{class}{unit}
unit = minor & 0x1f
minor & 0x80 = 0x00 - class = t - interrupt driver
minor & 0x80 = 0x80 - class = a - polling driver
e.g.
0 - /dev/lpt0
128 - /dev/lpa0
9 B - reserved
9 C - quadrature mouse
minor = 0 - /dev/quadmouse
10 B - reserved
10 C - beep device
minor = 0 - /dev/beep
11 B - reserved
11 C - keyboard device
minor = 0 - /dev/kbd
12 B - reserved
12 C - serial port
/dev/tty0{unit}
unit = minor
13 B - reserver
13 C - reserved
14 B - reserved
14 C - reserved
15 B - reserved
15 C - reserved
16 B - ST506/ESDI/IDE disk
/dev/wd{unit}{partition}
partition = minor % 8
unit = minor / 8
16 C - ST506/ESDI/IDE disk
/dev/rwd{unit}{partition}
partition = minor % 8
unit = minor / 8
17 B - floppy disk
/dev/fd{unit}{partition}
partition = minor % 8
unit = minor / 8
17 C - floppy disk
/dev/rfd{unit}{partition}
partition = minor % 8
unit = minor / 8
18 B - ram disk
/dev/rd{unit}{partition}
partition = minor % 8
unit = minor / 8
18 C - ram disk
/dev/rrd{unit}{partition}
partition = minor % 8
unit = minor / 8
19 B - vnode disk driver
/dev/vnd{unit}{partition}
partition = minor % 8
unit = minor / 8
19 C - vnode disk driver
/dev/rvnd{unit}{partition}
partition = minor % 8
unit = minor / 8
20 B - reserved (ATAPI CDROM)
/dev/acd{unit}{partition}
partition = minor % 8
unit = minor / 8
20 C - reserved (ATAPI CDROM)
/dev/racd{unit}{partition}
partition = minor % 8
unit = minor / 8
21 B - concatenated disk driver
/dev/ccd{unit}{partition}
partition = minor % 8
unit = minor / 8
21 C - concatenated disk driver
/dev/rccd{unit}{partition}
partition = minor % 8
unit = minor / 8
22 B - reserved
22 C - reserved
23 B - reserved
23 C - reserved
24 B - SCSI disk
/dev/sd{unit}{partition}
partition = minor % 8
unit = minor / 8
24 C - SCSI disk
/dev/rsd{unit}{partition}
partition = minor % 8
unit = minor / 8
25 B - SCSI tape
25 C - SCSI tape
26 B - SCSI cdrom
/dev/cd{unit}{partition}
partition = minor % 8
unit = minor / 8
26 C - SCSI cdrom
/dev/rcd{unit}{partition}
partition = minor % 8
unit = minor / 8
27 B - reserved
27 C - SCSI autochanger
/dev/ch{unit}
unit = minor
28 B - reserved
28 C - SCSI unknown device
/dev/uk{unit}
unit = minor
29 B - reserved
29 C - SCSI scanner device
/dev/ss{unit}
unit = minor
30 B - reserved
30 C - reserved
31 B - reserved
31 C - reserved
32 B - reserved
32 C - Berkeley packet filter
/dev/bpf{unit}
unit = minor
minor = 0 - /dev/bpf0
minor = 1 - /dev/bpf1
minor = 2 - /dev/bpf2
minor = 3 - /dev/bpf3
33 B - reserved
33 C - network tunnel
/dev/tun{unit}
unit = minor
minor = 0 - /dev/tun0
minor = 1 - /dev/tun1
minor = 2 - /dev/tun2
34 B - reserved
34 C - file descriptor pseudo-device
minor = 0 - /dev/stdin
minor = 1 - /dev/stdout
minor = 2 - /dev/stderr
35 B - reserved
35 C - loadable module driver
minor = 0 - /dev/lkm
36 B - reserved
36 C - generic audio device
37 B - reserved
37 C - vidcconsole device
minor = 0 - /dev/vidcconsole
38 B - reserved
38 C - cpu/hydra
minor = 0 - /dev/cpu0
39 B - reserved
39 C - reserved
40 B - reserved
40 C - PS2 mouse
minor = 0 - /dev/pms
41 B - reserved
41 C - reserved
42 B - reserved
42 C - IIC device
43 B - reserved
43 C - RTC device
44 B - reserved
44 C - reserved (generic video)
(/dev/gfx{unit})
(unit = minor)
45 B - reserved
45 C - reserved (virtual console)
(/dev/ttyg{unit})
(unit = minor)
46 B - reserved
46 C - ip-filter
47 - reserved
48 B - reserved
48 C - S/PDIF
49 B - reserved
49 C - ofrom
50 B - reserved
50 C - smart card (/dev/scr)
51 B - reserved
51 C - reserved
52 B - reserved
52 C - random device
53 B - reserved
53 C - FIQ profiler
54 B - reserved
54 C - Footbridge diag serial
minor = 0 - /dev/fcom
55 B - reserved
55 C - reserved for bypass device
56 B - reserved
56 C - ISA jostick
57 B - reserved
57 C - MIDI I/O
58 B - reserved
58 C - Sequencer I/O
59 B - reserved
59 C - reserved for CODA
60 B - reserved
60 C - wsdisplay device
61 B - reserved
61 C - wskbd device
62 B - reserved
62 C - wsmouse device
63 B - reserved
63 C - reserved
64 B - reserved
64 C - USB controller
65 B - reserved
65 C - USB HID
66 B - reserved
66 C - USB printer
67 B - reserved
67 C - reserved
68 B - reserved
68 C - reserved
69 B - reserved
69 C - reserved
70+ free for allocation