Annotation of 43BSDReno/share/doc/smm/13.kchanges/vax.t, revision 1.1

1.1     ! root        1: .\" Copyright (c) 1986 Regents of the University of California.
        !             2: .\" All rights reserved.  The Berkeley software License Agreement
        !             3: .\" specifies the terms and conditions for redistribution.
        !             4: .\"
        !             5: .\"    @(#)vax.t       1.6 (Berkeley) 4/11/86
        !             6: .\"
        !             7: .NH
        !             8: Machine specific support
        !             9: .PP
        !            10: The next several sections describe changes to the VAX-specific
        !            11: portion of the kernel whose sources reside in \fB/sys/vax\fP.
        !            12: .NH 2
        !            13: Autoconfiguration
        !            14: .PP
        !            15: The data structures and top level of autoconfiguration
        !            16: have been generalized to support the VAX 8600 and
        !            17: machines whose main I/O busses are not similar to an SBI.
        !            18: The \fIpercpu\fP structure has been broken into three
        !            19: structures.
        !            20: The \fIpercpu\fP structure itself contains only the CPU type,
        !            21: an approximate value for the speed of the CPU,
        !            22: and a pointer to an array of I/O bus descriptions.
        !            23: Each of these, in turn, contain general information about one I/O bus that must
        !            24: be configured and a pointer to the private data for its configuration
        !            25: routine.
        !            26: The third new structure that has been defined
        !            27: describes the SBI and the other interconnects that emulate it.
        !            28: At boot time,
        !            29: \fIconfigure\fP calls \fIprobeio\fP to configure the I/O bus(ses).
        !            30: \fIProbeio\fP looks through the array of bus descriptions,
        !            31: indirecting to the correct routine to configure each bus.
        !            32: For the VAXen currently supported,
        !            33: the main bus is configured by either
        !            34: \fIprobe_Abus\fP (on the 8600 and 8650)
        !            35: or by \fIprobenexi\fP, that is used on anything resembling an SBI.
        !            36: Multiple SBI adaptors on the 8600 are handled by multiple calls
        !            37: to \fIprobenexi\fP.
        !            38: (Although the code has been tested with a second SBI,
        !            39: there were no adaptors installed on the second SBI.)
        !            40: This structure is easily extensible to other architectures
        !            41: using the BI bus, Q bus, or any combination of busses.
        !            42: .PP
        !            43: The CPU speed value is used to scale the DELAY macro
        !            44: so that autoconfiguration of old devices on faster CPU's
        !            45: will continue to work.
        !            46: The units are roughly millions of instructions per second (MIPS),
        !            47: with a value of 1 for the 780,
        !            48: although fractional values are not used.
        !            49: When multiple CPU's share the same CPU type,
        !            50: the largest value for any of them is used.
        !            51: .PP
        !            52: UNIBUS autoconfiguration has been modified to accommodate UNIBUS
        !            53: memory devices correctly.
        !            54: A new routine, \fIubameminit\fP, is used to configure UNIBUS memory
        !            55: before probing other devices,
        !            56: and is also used after a UNIBUS reset to remap these memory areas.
        !            57: The device probe or attach routines may then allocate and hold
        !            58: UNIBUS map registers without interfering with these devices.
        !            59: .NH 2
        !            60: Memory controller support
        !            61: .PP
        !            62: The introduction of the MS780-E memory controller for the VAX 780
        !            63: made it necessary to configure the memory controller(s) on a VAX
        !            64: separately from the CPU.
        !            65: During autoconfiguration, the types of the memory controllers
        !            66: are recorded in an array.
        !            67: Memory error routines that must know the type of controller
        !            68: then use this information rather than the CPU type.
        !            69: The MS780-E controller is listed as two controllers, as each half
        !            70: reports errors independently.
        !            71: Both 1Mb and 4Mb boards using 64K and 256K dRAM chips are supported.
        !            72: .XP Locore.c
        !            73: For \fIlint\fP's sake, \fILocore.c\fP has been updated to include the functions
        !            74: provided by \fIinline\fP and the new functions in \fIlocore.s\fP.
        !            75: .XP autoconf.c
        !            76: Most of the changes to autoconfiguration are described above.
        !            77: Other minor changes:
        !            78: UNIBUS controller probe routines are now passed an additional argument,
        !            79: a pointer to the \fIuba_ctlr\fP structure,
        !            80: and similarly device probe routines are passed a pointer to the \fIuba_device\fP
        !            81: structure.
        !            82: \fIUbaaccess\fP and \fInxaccess\fP were combined into a single routine
        !            83: to map I/O register areas.
        !            84: A logic error was corrected so that swap device sizes that were initialized
        !            85: from information in the machine configuration file
        !            86: are used unmodified.
        !            87: \fIDumplo\fP is set at configuration time according
        !            88: to the sizes of the dump device and memory.
        !            89: .XP conf.c
        !            90: Several new devices have been added and old entries have been deleted.
        !            91: A number of devices incorrectly set unused UNIBUS reset entries
        !            92: to \fInodev\fP; these were changed to \fInulldev\fP.
        !            93: An entry was added for the new error log device.
        !            94: Additional device numbers have been reserved for local use.
        !            95: .XP cons.h
        !            96: New definitions have been added for the 8600 console.
        !            97: .XP "crl.h,crl.c"
        !            98: New files for the VAX 8600 console RL02 (our third RL02 driver!).
        !            99: .XP flp.c
        !           100: It was discovered that not all VAXen that are not 780's are 750's;
        !           101: the console floppy driver for the 780 now checks for cpu == 780,
        !           102: not cpu != 750.
        !           103: An error causing the floppy to be locked in the busy state was corrected.
        !           104: .XP genassym.c
        !           105: Several new structure offsets were needed by the assembly language routines.
        !           106: .XP in_cksum.c
        !           107: It was discovered that the instruction used to clear the carry
        !           108: in the checksum loops did not actually clear carry.
        !           109: As the carry bit was always off when entering the checksum loop,
        !           110: this was never noticed.
        !           111: .XP inline
        !           112: This directory contains the new \fIinline\fP program used to edit
        !           113: the assembly language output by the compiler.
        !           114: .XP locore.s
        !           115: The assembly language support for the kernel has a number of changes,
        !           116: some of which are VAX specific and some of which are needed
        !           117: on all machines.
        !           118: They are simply enumerated here without distinction.
        !           119: .XP
        !           120: The \fIdoadump\fP routine sometimes faulted because it changed the page
        !           121: table entry for the \fIrpb\fP without flushing the translation buffer.
        !           122: In order to reconfigure UNIBUS memory devices again after UNIBUS resets,
        !           123: \fIbadaddr\fP was reimplemented without the need to modify the
        !           124: system control block.
        !           125: The machine check handler catches faults predicted by \fIbadaddr\fP,
        !           126: cleans up and then returns to the error handler.
        !           127: The interrupt vectors have each been modified to count the number
        !           128: of interrupts from their respective devices, so that it is possible
        !           129: to account for software interrupts and UBA interrupts,
        !           130: and to determine which of several similar devices is generating
        !           131: unexpected interrupt loads.
        !           132: The \fIconfig\fP program generates the definitions for the indices
        !           133: into this interrupt count table.
        !           134: Software clock interrupts no longer call timer entries in the dz
        !           135: and dh drivers.
        !           136: The processing of network software interrupts has been reordered
        !           137: so that new interrupts requested during the protocol interrupt routine
        !           138: are likely to be handled before return from the software interrupt.
        !           139: Additional map entries were added to the network buffer and user page
        !           140: table page maps, as both use origin-1 indexing.
        !           141: The memory size limit and  the offsets into the coremap are both obtained
        !           142: from \fIcmap.h\fP instead of inline constants.
        !           143: The signal trampoline code is all new and uses the \fIsigreturn\fP
        !           144: system call to reset signal masks and perform the \fIrei\fP to user mode.
        !           145: The initialization code for process 1, \fIicode\fP, was moved to this file
        !           146: to avoid hand assembly; it has been changed to exit instead of looping
        !           147: if \fI/etc/init\fP cannot be executed, and to allow arguments
        !           148: to be passed to \fIinit\fP.
        !           149: The routines that are called with \fIjsb\fP rather than \fIcalls\fP
        !           150: use a new entry macro that allows them to be profiled if profiling
        !           151: is enabled.
        !           152: .XP
        !           153: Several new routines were added to move data from address space to address
        !           154: space a character string at a time; they are \fIcopyinstr\fP,
        !           155: \fIcopyoutstr\fP, and \fIcopystr\fP.
        !           156: \fICopyin\fP and \fIcopyout\fP now receive their arguments
        !           157: in registers.
        !           158: \fISetjmp\fP and \fIlongjmp\fP are now similar to the user-level
        !           159: routines; \fIsetjmp\fP saves the stack and frame pointers and PC only
        !           160: (all implemented in line),
        !           161: and \fIlongjmp\fP unwinds the stack to recover the other registers.
        !           162: This optimizes the common case, \fIsetjmp\fP, and allows the
        !           163: same semantics for register variables as for stack variables.
        !           164: For swaps and alternate returns using \fIu.u_save\fP, however,
        !           165: all registers must be saved as in a context switch, and \fIsavectx\fP
        !           166: is provided for that purpose.
        !           167: .XP
        !           168: Redundant context switches were caused by two bugs in \fIswtch\fP.
        !           169: First, \fIswtch\fP cleared \fIrunrun\fP before entering the idle loop.
        !           170: Once an interrupt caused a \fIwakeup\fP, \fIrunrun\fP would be set,
        !           171: requesting another context switch at system call exit.
        !           172: Also, the use of the VAX AST mechanism caused a similar problem,
        !           173: posting AST's to one process that would then \fIswtch\fP (or might
        !           174: already be in the idle loop), only to catch the AST after being rescheduled
        !           175: and completing its system service.
        !           176: The AST is no longer marked in the process control block and is cancelled
        !           177: during the context switch.
        !           178: The idle loop has been separated from \fIswtch\fP for profiling.
        !           179: .XP machdep.c
        !           180: The \fIstartup\fP code to calculate the core map size and the limit
        !           181: to the buffer cache's virtual memory allocation was corrected
        !           182: and reworked.
        !           183: The number of buffer pages was reduced for larger memories
        !           184: (10% of the first 2 Mb of physical memory is used for buffers,
        !           185: as before, and 5% thereafter).
        !           186: The default number of buffers or buffer pages may be overridden
        !           187: with configuration-file options.
        !           188: If the number of buffers must be reduced to fit the system page table,
        !           189: a warning message is printed.
        !           190: Buffers are allocated after all of the fully dense data structures,
        !           191: allowing the other tables allocated at boot time to be mapped by the identity
        !           192: map once again.
        !           193: The new signal stack call and return mechanisms are implemented here
        !           194: by \fIsendsig\fP and \fIsigreturn\fP; \fIsigcleanup\fP remains for compatibility
        !           195: with 4.2BSD's \fIlongjmp\fP.
        !           196: There are a number of modifications for the VAX 8600, particularly
        !           197: in the machine check and memory error handlers and in the use of the console
        !           198: flags.
        !           199: On the VAX-11/750 more translation-buffer
        !           200: parity faults are considered recoverable.
        !           201: The \fIreboot\fP routine flushes the text cache before initiating
        !           202: the filesystem update, and may wait longer for the update to complete.
        !           203: The time-of-day register is set, as any earlier time adjustments are not
        !           204: reflected there yet.
        !           205: The \fImicrotime\fP function was completed and is now used;
        !           206: it is careful not to allow time to appear to reverse during time corrections.
        !           207: An \fIinitcpu\fP routine was added to enable caches, floating point
        !           208: accelerators, etc.
        !           209: .XP machparam.h
        !           210: The file \fIvax/param.h\fP was renamed to avoid ambiguity
        !           211: when including \fI``param.h''\fP.
        !           212: .XP ns_cksum.c
        !           213: This new file contains the checksum code for the Xerox NS network protocols.
        !           214: .XP pcb.h
        !           215: The \fIaston\fP() and \fIastoff\fP\^() macros no longer set an AST
        !           216: in the process control block (see \fIlocore.s\fP).
        !           217: .XP pte.h
        !           218: The \fIpg_blkno\fP field was increased to 24 bits to correspond
        !           219: with the \fIcmap\fP structure; the \fIpg_fileno\fP field was reduced
        !           220: to a single bit, as it no longer contains a file descriptor.
        !           221: .XP swapgeneric.c
        !           222: \fIDumpdev\fP and \fIargdev\fP are initialized to NODEV,
        !           223: preventing accidents should they be used before configuration completes.
        !           224: DEL is now recognized as an erase character by the kernel \fIgets\fP.
        !           225: .XP tmscp.h
        !           226: A new file which contains definitions for the
        !           227: Tape Mass Storage Control Protocol.
        !           228: .XP trap.c
        !           229: Syscall 63 is no longer reserved by \fIsyscall\fP for out-of-range calls.
        !           230: In order to make \fIwait3\fP restartable, \fIsyscall\fP must not clear
        !           231: the carry bit in the program status longword before beginning a system
        !           232: call, but only after successful completion.
        !           233: .XP tu.c
        !           234: There were several important fixes in the console TU58 driver.
        !           235: .XP vm_machdep.c
        !           236: The \fIchksize\fP routine requires an additional argument,
        !           237: allowing it to check data size and bss growth separately without overflow.
        !           238: .XP vmparam.h
        !           239: The limits to user process virtual memory allow nondefault values
        !           240: to be defined by configuration file options.
        !           241: The definition of DMMAX here now defines only the maximum value;
        !           242: it will be reduced according to the definition of MAXDSIZ.
        !           243: The space allocated to user page tables was increased substantially.
        !           244: The free-memory threshold at which \fIpageout\fP begins
        !           245: was changed to be at most 512K.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.