2007-01-21 Ralf Wildenhues * doc/mach.texi: Many typos fixed. 2004-01-15 Alfred M. Szmidt * Makefile.in (%-undef: %.o): Match new output format from nm (binutils) 2.14.x. 2003-03-05 Roland McGrath * Makefile.in (tool_prefix): Variable removed. (version): @VERSION@ -> @PACKAGE_VERSION@ * version.c.in: Use @PACKAGE_NAME@ and @PACKAGE_VERSION@. * configure.in: Require 2.54 and use new form of AC_INIT. Add descriptions to all AC_DEFINE and AC_DEFINE_UNQUOTED. Punt AC_PROG_CC_LOCAL, just use vanilla AC_PROG_CC. AC_TRY_CPP -> AC_PREPROC_IFELSE for oskit version check. AC_LINK_FILES -> AC_CONFIG_LINKS. Use new form of AC_OUTPUT with AC_CONFIG_FILES. * acconfig.h, aclocal.m4: Files removed. * configure. config.h.in: Regenerated with version 2.57. * Makefile.in ($(srcdir)/config.h.in): Depend on configure.in instead of acconfig.h. 2003-03-05 Roland McGrath * configure.in (HAVE_I8042): New check for oskit_dev_init_i8042. * oskit/ds_osenv.c (ds_osenv_init) [HAVE_I8042]: Call it. * config.h.in: Add #undef. * configure: Regenerated. 2003-02-28 Roland McGrath * oskit/osenv_irq.c (console_irq, console_irq_handler): New variables. (irq_alloc, irq_free): Implement special kludge with console_irq. * oskit/ds_osenv.c (ds_osenv_init): Set console_irq before initializing the minimal interrupt-driven console. 2002-11-20 Marcus Brinkmann * i386/i386/io_perm.c (io_perm_device_ops): New static variable. (i386_io_perm_create): Use the io_perm_device_ops for the device. (i386_io_perm_modify): Check that this is really an io_perm device. * iopb.h, iopb.c: Obsolete files removed. 2002-11-12 Roland McGrath * oskit/ds_routines.c (dev_open_com): Revert last change. The hash table should not hold a reference. 2002-11-09 Roland McGrath * Makefile.in (clib-routines.o): Add `-x none' before -lc. * oskit/ds_routines.c (ds_notify): Deallocate two refs, not one. (dev_open_com): Bump the ref_count on a new device to account for the reference held in the hash table as well as the one returned. * i386/i386/idt.c: Include "gdt.h" instead of and . 2002-11-09 Marcus Brinkmann * i386/i386/pcb.c (switch_context): Update the I/O permission bitmap from stack_handoff() here (not only in stack_handoff()). 2002-11-05 Roland McGrath * oskit/pc/osenv_bell.c (direct_cons_bell): Use a private timer instead of calling `timeout'. If a bell is already ringing, turn it off for an instant before setting the new one. 2002-10-21 Roland McGrath * configure.in: Check for oskit/dev/stream.h. * configure, config.h.in: Regenerated. * oskit/ds_routines.c (dev_open_com): Query for an oskit_streamdev_t and open it. 2002-10-03 Roland McGrath * i386/include/mach/i386/mach_i386.defs (i386_set_gdt, i386_get_gdt): New routines. * i386/i386/user_ldt.c (i386_set_gdt, i386_get_gdt): New functions. * i386/i386/gdt.h (USER_GDT, USER_GDT_SLOTS): New macros. * i386/i386/thread.h (struct i386_machine_state): New member user_gdt. * i386/i386/pcb.c (switch_ktss): Copy those slots into the GDT. * i386/i386/gdt.h (KERNEL_CS, KERNEL_DS, KERNEL_TSS, KERNEL_LDT): Values changed, new GDT layout not matching oskit base_gdt.h defaults. (BASE_KERNEL_CS, BASE_KERNEL_DS): New macros with to oskit's values. * oskit/x86/main.c (ktss): Variable moved to gdt.c. (main): Don't diddle the tss here. * i386/i386/gdt.c (gdt_init): Do it here instead. * oskit/x86/main.c (my_exit): Restore oskit's base_gdt. * oskit/x86/main.c (main): BASE_TSS -> KERNEL_TSS * i386/i386/mp_desc.c (mp_desc_load): Likewise. * i386/i386/gdt.h (USER_TSS): Macro removed (was unused). (KERNEL_GS): Macro removed (value was bogus!--fix SMP later). * i386/i386/i386asm.sym: Comment out KERNEL_GS. Remove magic %gs:0 pseudo-register support. * i386/i386/ldt.h (USER_GS): Macro removed. * i386/i386/pcb.c (pcb_init): Set gs to USER_DS, not USER_GS. (thread_setstatus): Likewise. * i386/i386/mp_desc.h (struct mp_desc_table): Remove member `user_thread_register'. * i386/i386/thread.h (struct i386_machine_state): Likewise. * i386/i386/mp_desc.c (mp_desc_init): Don't set up USER_GS in LDT. * i386/i386/ldt.c (ldt_init): Likewise. * i386/intel/pmap.c (pmap_bootstrap): Don't give users access to direct-mapped pages. * i386/i386/user_ldt.c (i386_set_ldt): Don't cap segment limits. 2002-07-19 Roland McGrath * configure.in (force_install): New substituted variable, set to yes/no by --enable-force-install. * Makefile.in (force-install): New variable from configure. [$(force_install) = yes]: Make installed headers depend on a force target. * configure: Regenerated. 2002-07-05 Roland McGrath * Makefile.in (kernel-%.o): Use -L$(OSKIT_LIBDIR)/.. switch. Reoprted by James Morrison . 2002-06-23 Roland McGrath * kern/sched_prim.c (wait_hash): Macro replaced with static inline function. Use oskit_sreg_t instead of int. * ipc/mach_port.c (mach_port_insert_right): Type fiddle in argument passing. * bogus/mach_ipc_compat.h (MACH_IPC_COMPAT): Define to 0. * alpha/alpha/pmap.h (kvtophys): Remove decl (now a macro in oskit). * device/net_io.c (EXTRACT_LONG, EXTRACT_SHORT, bpf_do_filter): Use oskit_u32_t/s32/u16 in place of u_long/long/u_short. * i386/i386/mach_machine_routines.h: New file. * bogus/mach_machine_routines.h (MACH_MACHINE_ROUTINES): Define to 0. * alpha/alpha/cpu_number.h (cpu_number): Declare only if [NCPUS > 1]. [! ASSEMBLER]: Include kern/cpu_number.h like i386 file does. * ipc/ipc_object.h: Uncomment prototypes in all decls. Include "ipc_types.h" for types they use. * ipc/ipc_port.h: Uncomment prototypes in all decls. * ipc/ipc_hash.c (ipc_hash_index_t): Move typedef to ... * ipc/ipc_hash.h: ... here. (ipc_hash_info): Fix return and argument types in decl. 2002-06-17 Roland McGrath * device/if_hdr.h: Replace ancient UCB copyright terms with current approved UCB terms. * include/sys/reboot.h: Likewise. * include/device/disk_status.h: Likewise. * include/device/tape_status.h: Likewise. * device/net_io.c: Remove advertising clause from UCB copyright terms. * include/device/audio_status.h: Likewise. * include/device/bpf.h: Likewise. 2002-06-14 Roland McGrath * oskit/ds_routines.c: Fix copyright: Utah -> CMU. I wrote this file and copied a little bit of CMU code, no Utah code. * oskit/ds_routines.c (ds_device_write): Fix typo: mach_msg_number_t -> mach_msg_type_number_t 2002-06-05 Roland McGrath * ipc/ipc_hash.h: Include "ipc_types.h", "ipc_object.h" for types. [MACH_IPC_DEBUG]: Include for types. 2002-06-02 Roland McGrath * oskit/ds_routines.c (DEV_PTR_HASH): uintptr_t -> natural_t * oskit/ds_routines.c (DEV_PTR_HASH): unsigned int -> uintptr_t (ds_device_write): unsigned int -> mach_msg_number_t * alpha/alpha/ast.h: Fix obsolescent #endif syntax. 2002-06-01 Roland McGrath * ipc/ipc_hash.h (ipc_hash_local_delete): Uncomment prototype decls. * kern/mach_clock.c (clock_interrupt): Remove bogus debugging hack. 2002-05-28 Roland McGrath * include/device/device.defs (xxx_device_set_status, xxx_device_get_status, xxx_device_set_filter): Replace these routines with skips. [MACH_KERNEL]: Remove simport . * kern/boot_script.c, kern/boot_script.h: Files updated from versions in hurd/boot (64 bit fixes). * alpha/alpha/alpha_cpu.S: Use "alphaasm.h" instead of "assym.s". * alpha/alpha/context.S: Likewise. * alpha/alpha/locore.S: Likewise. * Makefile.in (objs): New target. * alpha/alpha/alphaasm.sym: New file. * alpha/alpha/task.h: New file. * alpha/alpha/context.h (jmp_buf): Define as `struct jmp_buf' too. * kern/zalloc.h: Remove #include . * alpha/alpha/prom_interface.h: Fix obsolescent #else/#endif syntax. * alpha/alpha/pmap.c: Likewise. * alpha/alpha/pmap.h: Likewise. * alpha/alpha/pcb.c: Likewise. * alpha/alpha/context.h: Likewise. * alpha/alpha/thread.h: Likewise. * alpha/include/mach/alpha/alpha_instruction.h: Likewise. * alpha/include/mach/alpha/vm_param.h: Likewise. * alpha/include/mach/alpha/vm_types.h: Likewise. * alpha/include/mach/alpha/boolean.h: Likewise. * alpha/include/mach/alpha/kern_return.h: Likewise. * alpha/include/mach/alpha/thread_status.h: Likewise. * alpha/include/mach/alpha/syscall_sw.h: Likewise. * alpha/include/mach/alpha/exception.h: Likewise. * alpha/alpha/alpha_copyin.S: Likewise. * alpha/alpha/machspl.h: Likewise. * alpha/alpha/trap.c: Likewise. * alpha/alpha/alpha_instruction.c: Likewise. * alpha/alpha/alpha_init.c: Likewise. * alpha/alpha/setjmp.h: Likewise. * alpha/alpha/vm_tuning.h: Likewise. * alpha/Makefrag: New file. * alpha/Files: New file. * alpha/Subdirs: New file. Alpha support files verbatim from CMU release MK83a. * alpha/include/mach/alpha/alpha_instruction.h: New file. * alpha/include/mach/alpha/asm.h: New file. * alpha/include/mach/alpha/boolean.h: New file. * alpha/include/mach/alpha/exception.h: New file. * alpha/include/mach/alpha/kern_return.h: New file. * alpha/include/mach/alpha/machine_types.defs: New file. * alpha/include/mach/alpha/syscall_sw.h: New file. * alpha/include/mach/alpha/thread_status.h: New file. * alpha/include/mach/alpha/vm_param.h: New file. * alpha/include/mach/alpha/vm_types.h: New file. * alpha/alpha/alpha_cache.S: New file. * alpha/alpha/alpha_copyin.S: New file. * alpha/alpha/alpha_cpu.S: New file. * alpha/alpha/alpha_cpu.h: New file. * alpha/alpha/alpha_init.c: New file. * alpha/alpha/alpha_instruction.c: New file. * alpha/alpha/alpha_lock.S: New file. * alpha/alpha/alpha_mem_ops.c: New file. * alpha/alpha/alpha_misc.c: New file. * alpha/alpha/alpha_scb.c: New file. * alpha/alpha/alpha_scb.h: New file. * alpha/alpha/alpha_startup.c: New file. * alpha/alpha/ast.h: New file. * alpha/alpha/ast_check.c: New file. * alpha/alpha/ast_types.h: New file. * alpha/alpha/autoconf.c: New file. * alpha/alpha/c_misc.c: New file. * alpha/alpha/clock.c: New file. * alpha/alpha/clock.h: New file. * alpha/alpha/context.S: New file. * alpha/alpha/context.h: New file. * alpha/alpha/cpu_number.h: New file. * alpha/alpha/frame.h: New file. * alpha/alpha/lock.h: New file. * alpha/alpha/locore.S: New file. * alpha/alpha/mach_param.h: New file. * alpha/alpha/machspl.h: New file. * alpha/alpha/parse_args.c: New file. * alpha/alpha/pcb.c: New file. * alpha/alpha/pmap.c: New file. * alpha/alpha/pmap.h: New file. * alpha/alpha/prom_interface.S: New file. * alpha/alpha/prom_interface.h: New file. * alpha/alpha/prom_routines.S: New file. * alpha/alpha/prom_routines.h: New file. * alpha/alpha/setjmp.h: New file. * alpha/alpha/start.S: New file. * alpha/alpha/supage.S: New file. * alpha/alpha/thread.h: New file. * alpha/alpha/time_stamp.h: New file. * alpha/alpha/trap.c: New file. * alpha/alpha/trap.h: New file. * alpha/alpha/vm_tuning.h: New file. * alpha/dec/ln_copy.c: New file. * configure.in (VERSION): Set to 1.90 for mainlining of OSKit-Mach. * configure: Regenerated. 2002-05-22 Roland McGrath * oskit/x86/main.c (machine_idle): New function. * bogus/power_save.h (POWER_SAVE): Define to 1. * oskit/x86/main.c (iopb_init, iopb_destroy): Functions removed. (i386_io_port_add, i386_io_port_remove, i386_io_port_list): Likewise. 2002-05-20 Roland McGrath * configure.in (systype): Grok alpha. * configure: Regenerated. * Makefile.in (all-archs): Add alpha. (oskit-dirs-alpha): New variable. 2002-04-28 Roland McGrath * configure.in [$MAXCPUS > 1] (SMP_LIBS): Substitute this after checking for -loskit_smp. * configure: Regenerated. * Makefile.in (SMP_LIBS): New variable, substituted by configure. (OSKIT_LIBS): Use it in place of literal -loskit_smp. 2002-04-21 Roland McGrath * i386/i386/mp_desc.c (mp_desc_load): Avoid newlines inside strings. 2002-04-21 Roland McGrath * i386/intel/pmap.c (pmap_bootstrap): Set INTEL_PTE_USER in pte entries as well as pde entries. Reported by Jeroen Dekkers . 2002-04-07 Roland McGrath Provide a new special segment to user tasks so %gs:0 points to one writable word, a different word on each CPU, saved by thread switching. * i386/i386/ldt.h (USER_GS): New macro. * i386/i386/ldt.c (ldt_init): Set USER_GS to point at global variable `user_thread_register'. * i386/i386/mp_desc.h (struct mp_desc_table): New member `user_thread_register'. * i386/i386/mp_desc.c (mp_desc_init): Set USER_GS descriptor in LDT to point at that member. * i386/intel/pmap.c (pmap_bootstrap): Make direct-mapped pages accessible in user mode. * i386/i386/user_ldt.c (i386_set_ldt): Silently cap user segment limits to VM_MAX_ADDRESS. * i386/i386/thread.h (struct i386_machine_state): New member `user_thread_register'. * i386/i386/pcb.c (pcb_init, thread_setstatus): Set user threads' %gs register to USER_GS rather than USER_DS. (switch_ktss): Take new arg OLD_PCB. Don't do set_ldt at all if old and new match. Switch the per-CPU user thread variable into OLD_PCB and out of PCB. (stack_handoff, load_context, switch_context): Update callers. * i386/i386/user_ldt.c (i386_set_ldt): Likewise. 2002-03-11 Marcus Brinkmann * i386/i386/machine_task.c (machine_task_module_init): Set ZONE_COLLECTABLE and ZONE_EXHAUSTIBLE flags for the iopb zone. Requested by Roland McGrath . 2002-02-27 Marcus Brinkmann * bogus/mach_machine_routines.h (MACH_MACHINE_ROUTINES): Set to 1. * i386/i386/io_perm.h: New file. * i386/i386/io_perm.c: New file. * i386/i386/machine_task.c: New file. * i386/Makefrag (i386-files): Add io_perm.c and machine_task.c. * i386/i386/mp_desc.h: Include `machine/tss.h' instead `oskit/x86/tss.h'. (struct mp_desc_table): Change type of ktss to struct task_tss. (mp_ktss): Likewise for array of pointers to the struct. * i386/i386/mp_desc.c: Include `machine/tss.h' and `machine/io_perm.h'. (mp_ktss): Change type to array of struct task_tss. (mp_desc_init): Cast pointer to x86_tss into pointer to task_tss, and use size of struct task_tss instead size of struct x86_tss. Initialize the task_tss structure. * i386/i386/pcb.c: Include `stddef.h' and `machine/tss.h'. (iopb_create, iopb_destroy): Prototypes removed. (curr_ktss): Cast pointer to base_tss to pointer to struct task_tss. (switch_ktss): Always use kernel TSS. (update_ktss_iopb): New function. (stack_handoff): Call update_ktss_iopb. (pcb_module_init): Do not call iopb_init. (pcb_terminate): Do not call iopb_destroy. (thread_setstatus): Remove local variable tss. (thread_getstatus): Rewrite i386_ISA_PORT_MAP_STATE case handler. * i386/i386/task.h: New file. * i386/i386/thread.h: Do not include `i386/iopb.h'. (struct i386_machine_state): Remove member io_tss. * i386/i386/tss.h: New file. * i386/include/mach/i386/mach_i386.defs: Do not include `mach/machine/mach_i386_types.h'. [KERNEL_SERVER]: Include `machine/io_perm.h'. Define intran, outtran and destructor. (io_port_t): New type. (io_perm_t): Likewise. (i386_io_port_add): Interface removed. (i386_io_port_remove): Likewise. (i386_io_port_list): Likewise. (i386_io_perm_create): New interface. (i386_io_perm_modify): Likewise. * i386/include/mach/i386/mach_i386_types.h [MACH_KERNEL]: Include `i386/io_perm.h'. [!MACH_KERNEL]: Define types io_port_t and io_perm_t. * kern/task.c (task_init): Call machine_task_module_init. (task_create): Call machine_task_init. (task_deallocate): Call machine_task_terminate. (task_collect_scan): Call machine_task_collect. * task.h: Include `machine/task.h'. (struct task): Add member machine. * oskit/x86/main.c: Include `i386/io_perm.h' and `machine/tss.h'. (ktss): New static global variable that replaces base_tss at link time. (main): Rename base_tss to ktss and set it up to include an I/O permission bitmap. * oskit/ds_oskit.h [__i386__]: Include `machine/io_perm.h'. (struct device) [__i386__]: Add a structure with io_perm range to the com union. * oskit/ds_routines.c (dev_open_alloc): Remove static attribute. (setup_no_senders): Likewise. 2002-02-28 Marcus Brinkmann * oskit/ds_routines.c (device_deallocate): Allow DEVICE->com_device to be NULL for simple pseudo device handlers. 2002-03-05 Roland McGrath * oskit/ds_request.h (ds_request_init, ds_asyncio_ready): Declare them. * oskit/ds_oskit.h (oskit_softint, kmsg_init, ds_netdev_open): Declare them. * oskit/kmsg.c (kmsg_init): Fix declaration. * oskit/ds_mem.c (ds_mem_map): If OFFSET and SIZE are both zero, map the whole thing. 2002-03-04 Roland McGrath * oskit/ds_routines.c (ds_device_write): If the write_inband routine returns an error other than MIG_NO_REPLY, send an asynchronous reply and return MIG_NO_REPLY to prevent caller from destroying the message. 2002-03-03 Michael Teichgraeber * include/device/device_error_reply.defs: Changed subsystem name to device_error_reply. * oskit/ds_asyncio.c: Include "device_reply.h", "device_error_reply.h". * oskit/ds_asyncio.c (new_request): Removed unused variable(s). (ds_asyncio_complete_write_inband_1): Likewise. (ds_asyncio_write_inband): Likewise. * oskit/ds_partition.c (ds_blkpart_get_status): Likewise. * oskit/ds_net.c (ds_netdev_open): Likewise. * oskit/ds_stream.c (ds_stream_read_inband): Likewise. 2002-02-28 Roland McGrath * oskit/ds_osenv.c (ds_osenv_init): Pass missing argument to oskit_create_osenv_sleep. * oskit/ds_asyncio.c (listener_notify): Add missing return. * oskit/ds_net.c (ds_net_get_status): Remove unused variable. * oskit/ds_osenv.c: Include , ,, . * oskit/x86/main.c: Include . * oskit/ds_block.c: Likewise. * oskit/osenv_irq.c: Likewise. * oskit/ds_mem.c: Likewise. * oskit/ds_net.c: Likewise. * oskit/ds_asyncio.c: Likewise. * oskit/osenv_log.c: Include , , . * oskit/osenv_mem.c: Include . (pmap_startup): Remove unused variable. * ipc/ipc_entry.c: Terminate comment. * i386/i386/locore.S: Likewise. * ipc/fipc.c: Likewise. 2002-02-18 Roland McGrath * i386/i386/mp_desc.c (mp_desc_load): Set %gs to KERNEL_GS, not zero. 2001-12-12 Roland McGrath * oskit/ds_routines.c (ds_device_read): Remove old debugging crap. 2001-12-10 Roland McGrath * oskit/ds_mem.c (ds_mem_read_inband, ds_mem_write_inband): Check RECNUM and COUNT so as not to be fooled by overflow. Apply offset to DEV->com.mem.pa before checking direct_mapped. Check that both ends of the range are direct_mapped. (ds_mem_map): Check OFFSET and SIZE so as not to be fooled by overflow. * oskit/ds_oskit.h (INVALREC): Disable panic definition. 2001-12-10 Roland McGrath * oskit/ds_routines.c (special_mem_device): New argument MODE; use that instead of hardcoding D_READ. (ds_device_open): Changed callers. 2001-11-23 Roland McGrath * oskit/ds_routines.c (device_deallocate): Do nothing if argument is DEVICE_NULL. 2001-10-20 Roland McGrath * Merged from gnumach: -j oskit-fork-20011007 -j oskit-fork-20011019. CVS tags oskit-premerge-20011019 and oskit-postmerge-20011019 mark the oskit-branch state before and after this merge. 2001-10-19 Roland McGrath * i386/i386/mp_desc.c (mp_desc_init): Use kvtolin on addresses in segment descriptors. 2001-10-10 Roland McGrath * oskit/ds_osenv.c (ds_osenv_init): Don't call direct_cons_set_flags. * oskit/ds_routines.c (ds_device_open): Call it here instead. Motivated by Kevin Kreamer . 2001-10-07 Roland McGrath * Merged from gnumach: -j oskit-fork-20010405 -j oskit-fork-20011007. CVS tags oskit-premerge-20011007 and oskit-postmerge-20011007 mark the oskit-branch state before and after this merge. 2001-10-07 Roland McGrath * oskit/osenv_softirq.c: New file, contributed by Daniel Wagner * oskit/pc/osenv_timer.c (softclock_oskit): Call oskit_softint. * Makefile.in (osenv-overrides): Add osenv_softirq. 2001-10-03 Roland McGrath * oskit/ds_routines.c (no_device_ops): New variable. * oskit/ds_oskit.h: Declare it. * oskit/ds_routines.c (ds_device_write_inband): Check for D_WRITE here. * configure.in: Check for mbchk, set MBCHK. * Makefile.in (MBCHK): New variable, substituted by configure. (check): Run mbchk on the kernel. * cpus.h: Moved to ... * bogus/cpus.h: ... here. * Makefile.in (clean): Avoid removing config.h. These problems reported by Gordon Matzigkeit . 2001-09-26 Roland McGrath * oskit/ds_mem.c (direct_mapped): Page 0 is not direct mapped. 2001-08-20 Roland McGrath * kern/bootstrap.c (bootstrap_create): Doc fix, whitespace cleanup. 2001-08-20 Roland McGrath * kern/bootstrap.c (bootstrap_create): Set ${kernel-command-line} rather than ${multiboot-cmdline}, to match Hurd's serverboot. 2001-08-20 Roland McGrath * kern/bootstrap.c (boot_read, read_exec): Use phystokv to access module data addresses. (boot_script_exec_cmd): Return a value. (boot_script_task_create, boot_script_task_resume): Add \n to err msg. (user_bootstrap): Remove spurious & in thread_wakeup arg. These bugs all reported by Neal H Walfield . 2001-08-18 Roland McGrath * kern/bootstrap.c (bootstrap_create): Pass &BMODS[0] to bootstrap_exec_compat, not the module data address. 2001-08-17 Roland McGrath * kern/bootstrap.c (boot_script_exec_cmd, user_bootstrap): Synchronize so boot_script_exec_cmd doesn't return until the thread running user_bootstrap has done its job. (bootstrap_create): Set boot script variable "multiboot-cmdline". * kern/bootstrap.c (boot_script_insert_task_port): New function. (boot_script_insert_task_port): Rewritten using task_insert_send_right. (bootstrap_create): Set up boot script variable values. * kern/bootstrap.c: Largely rewritten, using Hurd boot_script code. * Makefile.in ($(srcdir)/configure, $(srcdir)/config.h.in): Use $(srcdir) in deps. (Makefile, config.h, config.status): Likewise. * kern/strings.c, kern/strings.h: Files removed. * Makefile.in (kern-cfiles): Remove strings.c. (kern-hfiles): Remove strings.h. * kern/bootstrap.c: -> * Makefile.in (DEFINES): Add -DOSKIT_MACH=1. 2001-08-16 Roland McGrath * Makefile.in (k%nel.o, kernel.o, oskit-kern%.o): Insert a -L$(OSKIT_LIBDIR)/.. switch before the oskit libraries. 2001-06-02 Roland McGrath * i386/i386/locore.S (alltraps): Don't conditionalize pushl %gs on [MULTIPROCESSOR]. Reported by Jeroen Dekkers . * i386/i386/locore.S (mach_call_call) [DEBUG]: Remove syscall_trace code. Reported by Jeroen Dekkers . 2001-05-31 Roland McGrath * i386/i386/mp_desc.c (interrupt_stack, int_stack_top): Initialize these' first elements to &base_stack_start,&base_stack_end. (interrupt_stack_alloc): Remove counting loop with unused results. Problem found by Jeroen Dekkers . 2001-02-03 Roland McGrath * configure.in: Substitute LDFLAGS. * Makefile.in (LDFLAGS): Substitute configure value. * configure.in (OSKIT_LIBDIR): Don't override environment value. * Makefile.in (mach-headers): Remove boot.h, which is gone. (mach-exec-headers): Variable removed. (installed-headers): Don't use it. (mach-headers): Remove multiboot.h * i386/Makefrag (i386-installed-headers): Remove dead files. (installed-headers): Don't touch this. 2001-01-11 Roland McGrath * oskit/ds_block.c (ds_blkio_get_status): Implement DEV_GET_RECORDS. 2000-12-21 Roland McGrath * oskit/x86/main.c (CR4_PGE): #undef and define to 0x80, since the oskit's value is incorrect. 2000-10-29 Roland McGrath Remove numerous dead header files. Suggested by Igor Khavkine . * kern/elf-load.c: Dead file removed. * Makefile.in (kern-cfiles): Remove elf-load.c. (OSKIT_LIBS): Add -loskit_exec. * i386/i386/pcb.c: -> #include * i386/i386/idt-gen.h: Dead file removed. * i386/i386at/idt.h: Dead file removed. * i386/include/mach/i386/exec/elf.h: Dead file removed. * i386/include/mach/i386/multiboot.h: Dead file removed. * include/mach/boot.h: Dead file removed. * include/mach/exec/a.out.h: Dead file removed. * include/mach/exec/elf.h: Dead file removed. * include/mach/exec/exec.h: Dead file removed. * include/mach/multiboot.h: Dead file removed. * Makefile.in (clib-routines): Add ffs, needed when not inlined. Reported by Igor Khavkine . 2000-10-27 Roland McGrath * oskit/x86/main.c (main): Don't #define master_cpu here. * kern/cpu_number.h [NCPUS == 1] (master_cpu): Define as a macro. Move variable decl to [NCPUS != 1]. * oskit/smp-glue.c: New file. * Makefile.in (oskit-cfiles): Add it. * configure.in (MAXCPUS): Fix quoting of [] pattern in case statement. * configure: Regenerated. * i386/Makefrag (i386-files): Add back ast_check.c. * i386/i386/ast_check.c (cause_ast_check): Call interrupt_processor. * i386/i386/mp_desc.c (interrupt_stack_alloc): Don't set int_stack_high here. Call init_alloc separately for each CPU. * oskit/osenv_mem.c (init_alloc): New function. * i386/i386/cswitch.S: Use EXT macro on interrupt_stack. * i386/i386/cpu_number.h [NCPUS > 1] (cpu_number, CPU_NUMBER): Define these loading the value from %gs:0. * i386/i386/locore.S (all_traps, all_intrs, return_to_iret, ast_from_interrupt, syscall) [MULTIPROCESSOR]: When restoring kernel segment registers, put KERNEL_GS in %gs. * i386/i386/gdt.h (KERNEL_GS): New macro. * i386/i386/i386asm.sym: Emit KERNEL_GS. * i386/i386/gdt.c (gdt_init): Set up KERNEL_GS segment to point to master_cpu. * i386/i386/mp_desc.h (struct mp_desc_table): New member `cpu_number'. * i386/i386/mp_desc.c (mp_desc_init): Set up KERNEL_GS segment to point to this CPU's cpu_number slot, and store MYCPU there. * oskit/ds_oskit.h (DEV_LOCK_INIT, DEV_LOCK, DEV_UNLOCK): New macros. * oskit/osenv_mem.c (smp_map_range): Add necessary cast. * Makefile.in (OSKIT_LIBS): Add -loskit_smp. * oskit/ds_routines.c (device_deallocate): dev_number_lock -> dev_hash_lock * oskit/x86/main.c: Include for master_cpu decl. * i386/i386/mp_desc.h: Include for IDTSZ decl. Include . Declare mp_desc_load to return void. * i386/i386/mp_desc.c: Use struct x86_desc instead of i386_desc. (mp_desc_init): Replace ktss with base_tss. (interrupt_stack_alloc): base_stack -> base_stack_start 2000-10-26 Roland McGrath * oskit/osenv_synch.c (osenv_intr_save_disable): New function. * i386/i386/mp_desc.h: Declare int_stack_high here. 2000-10-09 Roland McGrath On the road to getting NCPUS > 1 to work in oskit-mach. * oskit/x86/main.c (int_stack_top, int_stack_bottom): Remove defns. (setup_machine_slot): New function, broken out of main. (main): Call it. Include (main) [NCPUS > 1]: Initialize oskit smp library and our mp_desc structures. * i386/i386/mp_desc.c: Use oskit includes. (interrupt_stack, int_stack_top, int_stack_high): Make unconditional. (eintstack, eintstack): Decls removed. (interrupt_stack_alloc): Use base_stack instead. (mp_ktss, mp_gdt): Let these go in bss. (mp_desc_init): Use memcpy instead of bcopy. (mp_desc_load): New function. * oskit/osenv_mem.c [NCPUS > 1] (smp_map_range): New function. 2000-10-01 Roland McGrath * oskit/osenv_mem.c (free_for_oskit): Copy assert on FLAGS consistency from alloc_for_oskit. 2000-09-17 Roland McGrath * oskit/x86/main.c (main): Set CR4_PGE bit here, after paging_enable. * i386/intel/pmap.c (pmap_bootstrap): Not here, since it's before paging is enabled, and that is verboten. Still check the feature flag and initialize kernel_pte_global here. 2000-03-20 Roland McGrath * Makefile.in (oskit-kern%.o): Pattern rule replaces oskit-kernel.o target rule. (kern%): Pattern rule replaces kernel target rule. (kernel-%.o): New pattern rule, like kernel.o rule. (init-%.c): New pattern rule. 2000-02-07 Roland McGrath * oskit/osenv_mem.c (alloc_for_oskit): Add to lmm_wants_pages, rather than resetting it. (consider_lmm_collect): Separate the conditions, so we always check vm_page_unqueued_count against lmm_wants_pages first. As another separate condition, if lmm_want_pages is nonzero, clear it and then thread_wakeup on it. Check to move pages into the VM system is now a final independent conditional. 2000-02-06 Roland McGrath * Drivers.macros: File removed; obsolete in this branch. * oskit/osenv_mem.c (consider_lmm_collect): Fix fencepost error in loop calling vm_page_grab. After putting memory back into the LMM, wake up threads blocked on &lmm_wants_pages. (alloc_for_oskit): After waking from &lmm_wants_pages block, loop to retry LMM allocation. 2000-02-05 Roland McGrath * version.c (version): Call it 1.2.91-OSKit now. * debian/changelog: Likewise. * Makefile.in (device-files): Remove obsolete files ds_routines.c and dev_forward.defs. (dist): Punt old rules and just run dpkg-buildpackage. * Makefile.in (oskit-cfiles): Add ds_routines.c here. * Makefile.in (config.h): Depend on stamp-configh. (stamp-configh): New target to run config.status for config.h update. * i386/Makefrag (install-headers, i386-install-headers, install-kernel, i386-install-kernel): Rules removed. * i386/i386/locore.S (dr6, dr0, dr1, dr2, dr3, dr_msk, dr_addr): Remove these obsolete entry points and variables. (null_idt, null_idtr, cpu_shutdown): These too. * oskit/osenv_irq.c: Don't #include ! 2000-01-28 Roland McGrath * i386/i386/trap.c (user_page_fault_continue): Disable a debugging printf. 2000-01-25 Roland McGrath * configure.in: Remove check for host_os. It does not matter. * configure: Regenerated. 1999-11-25 Roland McGrath Drastically revamp hardware support using the Flux OSKit. Numerous new and changed files, and many files and whole subdirectory trees removed. All old device drivers are removed, replaced using the OSKit device driver libraries. All the changes on this page are a unified interdependent set of changes turning GNUmach into OSKit-Mach, but since there are so many changes I have put them in separate paragraphs roughly divided by topic. * oskit: New subdirectory of support code using OSKit interfaces, and providing OSKit bottom-end interfaces for using components in Mach. * oskit/ds_asyncio.c: New file. * oskit/ds_block.c: New file. * oskit/ds_bus.c: New file. * oskit/ds_mem.c: New file. * oskit/ds_net.c: New file. * oskit/ds_osenv.c: New file. * oskit/ds_oskit.h: New file. * oskit/ds_partition.c: New file. * oskit/ds_request.c: New file. * oskit/ds_request.h: New file. * oskit/ds_routines.c: New file. * oskit/ds_stream.c: New file. * oskit/osenv_irq.c: New file. * oskit/osenv_log.c: New file. * oskit/osenv_mem.c: New file. * oskit/osenv_sleep.c: New file. * oskit/osenv_synch.c: New file. * oskit/pc/osenv_bell.c: New file. * oskit/pc/osenv_timer.c: New file. * oskit/x86/main.c: New file. * oskit/kmsg.c: New file. This is an oskit-based kernel logging device in the style of Linux's /proc/kmsg magical file. It is the backend used for all logging output from oskit components. Front-end changes for device and miscellaneous support code changes: * device/dev_hdr.h: Rewritten. * device/dev_pager.c: Revamped to support only the new uniform oskit-based device_t interface, one flavor of pager. Commented out unused routines. * device/device_init.c (device_service_create): Don't call dev_lookup_init. * device/net_io.c (if_init_queues): Moved here from defunct subrs.c. (net_set_filter): Call net_kmsg_more before successful return, to make sure the very first packet buffer gets allocated. * kern/startup.c: Remove XPR cruft, panic_init, printf_init. * kern/syscall_sw.c: Add some missing headers. * kern/mach_clock.c: Deliver oskit clock ticks at splsoftclock. Miscellaneous cleanups & changes to use convenient OSKit facilities. * i386/i386/cswitch.S: Assembler macro nits. * i386/i386/fpu.c, i386/i386/fpu.h: Magic instruction macro nits. * i386/i386/fpe_linkage.c: Use OSKit structure and constant names. * i386/i386/i386sym.sym: Likewise. * i386/i386/idt-gen.h: Likewise. * i386/i386/idt.c: Likewise. * i386/i386/idt_inittab.S: Likewise. * i386/i386/gdt.c: Likewise. * i386/i386/gdt.h: Likewise. * i386/i386/ldt.c: Likewise. * i386/i386/ldt.h: Likewise. * i386/i386/user_ldt.h: Likewise. * i386/i386/user_ldt.c: Likewise. * i386/i386/locore.S: Likewise. * i386/i386/iopb.c: Likewise. * i386/i386/iopb.h: Likewise. * i386/i386/mp_desc.c: Likewise. * i386/i386/mp_desc.h: Likewise. * i386/i386/io_emulate.c: Likewise. * i386/i386/io_emulate.h: Likewise. * i386/i386/pcb.c: Likewise. * i386/i386/pit.c: Likewise. * i386/i386/pic.c: Likewise. * i386/i386/spl.S: Likewise. * i386/i386/thread.h: Likewise. * i386/i386at/int_init.c: Likewise. * i386/i386at/interrupt.S: Likewise. * i386/i386at/pic_isa.c: Likewise. * kern/kalloc.c: Likewise. * i386/intel/pmap.h: Likewise. * i386/i386/trap.c: Likewise. Remove much cruft, TTD & KDB. Call oskit gdb_trap handler if enabled. * i386/i386/vm_param.h: Use for defns. * i386/i386/hardclock.c: Clean up unused PS2 & LINUX_DEV cruft. * i386/include/mach/i386/vm_param.h: #undef PAGE_SHIFT in case of conflicting defn from the oskit. * kern/assert.h: Rewritten using . * kern/debug.h: Use . * kern/machine.c: Likewise. * kern/bootstrap.c: Use oskit headers for multiboot and exec stuff. (boot_info): Fix type, not a pointer. (bootstrap_create): Fix uses. (get_compat_strings): Initialize to "UNKNOWN" in case nothing seen. (user_bootstrap): Increase buffer sizes for device/file name prompts. * vm/vm_object.c: Remove XPR cruft. Changes to the physical page pool code to share a pool of available memory kept in contiguous chunks with oskit code (drivers). The pageout daemon moves memory between the shared pool (the LMM) and the vm_page_queue_free list to keep some available for either use, but vm_page_grab can always steal a page directly from the LMM if the pageout daemon is not keeping the free list full enough. The interesting action here goes on in oskit/osenv_mem.c. * vm/vm_page.h (vm_page_queue_free_count, vm_page_unqueued_count): Declare new variables. (vm_page_free_count): Now a macro. * vm/vm_pageout.c (vm_pageout_scan): Call consider_lmm_collect. * vm/vm_resident.c: Remove XPR cruft. (vm_page_queue_free_count, vm_page_unqueued_count): New variables. (vm_page_free_count): Variable removed. (pmap_startup): Commented out. (vm_page_grab): When the queue is empty, call vm_page_grab_oskit_page. Also wakeup the pageout daemon whenever vm_page_queue_free_count < vm_page_unqueued_count. (vm_page_release): Use vm_page_queue_free_count for vm_page_free_count. (vm_page_module_init): Make the vm_page_zone collectable. * i386/intel/pmap.c: Use oskit types, macros, and variables that apply. (INVALIDATE_TLB): Macro replaced with inline function. Attempt to use INVLPG instruction if available. (kernel_pte_global): New variable. (pmap_bootstrap): Set it if processor supports INTEL_PTE_GLOBAL bit, and set PGE flag in %cr4 to enable using it. Use it for page table entries in the kernel portion of address space. (pmap_create): Use pmap_page_table_page_alloc to get a direct-mapped physical page for the page directory. (pmap_destroy): Deallocate accordingly. (pmap_enter): Zero-fill new page table pages. Use kernel_pte_global if allocating in the kernel_pmap. * ipc/mach_port.c (mach_port_insert_right): IO_VALID -> IP_VALID. * kern/ipc_tt.c (mach_ports_register): Add a cast. Associated configure/build changes for reorganizations. * configure.in: Generate config.h file instead of -D switches. (--enable-kdb, --enable-kmsg): Options removed. (--enable-smp): New argument, sets MAXCPUS, defines NCPUS. (--enable-fpe): New argument, defines FPE. Add check for a sufficiently new installed oskit version. (OSKIT_LIBDIR): New variable, substituted. Comment out AC_CONFIG_SUBDIRS call. * configure: Regenerated. * acconfig.h, config.h.in: New files, used by autoheader and configure. * cpus.h: New file, uses configure-generated config.h for values. * include/device/device_error_reply.defs: New file. * device/device_error_reply.cli: New file. Well-typed error replies. * version.c (version): Changed to "GNUmach 1.2.90-OSKit". * Makefile.in, i386/Makefrag: Substantially revamped for many added and removed modules, new linking rules to use oskit libraries. * i386/Files, i386/Subdirs: Updated. Removed all old device drivers, hardware support code, and miscellaneous things that can be replaced by using OSKit libraries. Also removed much cruft that was already unused in GNUmach. Removed unused "XPR" kernel logging facility. * chips, ddb, linux, scsi, util: Whole directory trees all removed. * device/blkio.c: Obsolete file removed. * device/buf.h: Likewise. * device/chario.c: Likewise. * device/cirbuf.c: Likewise. * device/cirbuf.h: Likewise. * device/conf.h: Likewise. * device/cons.c: Likewise. * device/cons.h: Likewise. * device/dev_forward.defs: Likewise. * device/dev_lookup.c: Likewise. * device/dev_name.c: Likewise. * device/dk_label.c: Likewise. * device/ds_routines.c: Likewise. * device/errno.h: Likewise. * device/io_req.h: Likewise. * device/kmsg.c: Likewise. * device/kmsg.h: Likewise. * device/param.h: Likewise. * device/subrs.c: Likewise. * device/tty.h: Likewise. * i386/Makefile.in: Likewise. * i386/README-Drivers: Likewise. * i386/configure: Likewise. * i386/configure.in: Likewise. * i386/i386/_setjmp.S: Likewise. * i386/i386/db_disasm.c: Likewise. * i386/i386/db_interface.c: Likewise. * i386/i386/db_machdep.h: Likewise. * i386/i386/db_trace.c: Likewise. * i386/i386/debug.h: Likewise. * i386/i386/debug_i386.c: Likewise. * i386/i386/debug_trace.S: Likewise. * i386/i386/fpe.b: Likewise. * i386/i386/fpe.b_elf: Likewise. * i386/i386/io_map.c: Likewise. * i386/i386/ktss.c: Likewise. * i386/i386/ktss.h: Likewise. * i386/i386/kttd_interface.c: Likewise. * i386/i386/kttd_machdep.h: Likewise. * i386/i386/loose_ends.c: Likewise. * i386/i386/pic.h: Likewise. * i386/i386/pit.h: Likewise. * i386/i386/proc_reg.h: Likewise. * i386/i386/seg.c: Likewise. * i386/i386/seg.h: Likewise. * i386/i386/setjmp.h: Likewise. * i386/i386/timer.h: Likewise. * i386/i386/tss.h: Likewise. * i386/i386/xpr.h: Likewise. * i386/i386at/asm_startup.h: Likewise. * i386/i386at/autoconf.c: Likewise. * i386/i386at/blit.c: Likewise. * i386/i386at/blitreg.h: Likewise. * i386/i386at/blituser.h: Likewise. * i386/i386at/blitvar.h: Likewise. * i386/i386at/boothdr.S: Likewise. * i386/i386at/com.c: Likewise. * i386/i386at/comreg.h: Likewise. * i386/i386at/conf.c: Likewise. * i386/i386at/cons_conf.c: Likewise. * i386/i386at/cram.h: Likewise. * i386/i386at/dev_hdr.h: Likewise. * i386/i386at/device_emul.h: Likewise. * i386/i386at/disk.h: Likewise. * i386/i386at/ds8390.h: Likewise. * i386/i386at/eisa.h: Likewise. * i386/i386at/fd.c: Likewise. * i386/i386at/fdreg.h: Likewise. * i386/i386at/i386at_ds_routines.c: Likewise. * i386/i386at/i8250.h: Likewise. * i386/i386at/i82586.h: Likewise. * i386/i386at/if_3c501.c: Likewise. * i386/i386at/if_3c501.h: Likewise. * i386/i386at/if_3c503.h: Likewise. * i386/i386at/if_de6c.c: Likewise. * i386/i386at/if_de6c.h: Likewise. * i386/i386at/if_de6s.S: Likewise. * i386/i386at/if_ne.c: Likewise. * i386/i386at/if_nereg.h: Likewise. * i386/i386at/if_ns8390.c: Likewise. * i386/i386at/if_ns8390.h: Likewise. * i386/i386at/if_par.c: Likewise. * i386/i386at/if_par.h: Likewise. * i386/i386at/if_pc586.c: Likewise. * i386/i386at/if_pc586.h: Likewise. * i386/i386at/if_wd8003.h: Likewise. * i386/i386at/immc.c: Likewise. * i386/i386at/iopl.c: Likewise. * i386/i386at/kd.c: Likewise. * i386/i386at/kd.h: Likewise. * i386/i386at/kd_event.c: Likewise. * i386/i386at/kd_mouse.c: Likewise. * i386/i386at/kd_queue.c: Likewise. * i386/i386at/kd_queue.h: Likewise. * i386/i386at/kdasm.S: Likewise. * i386/i386at/kdsoft.h: Likewise. * i386/i386at/lpr.c: Likewise. * i386/i386at/lprreg.h: Likewise. * i386/i386at/model_dep.c: Likewise. * i386/i386at/nfd.c: Likewise. * i386/i386at/nfdreg.h: Likewise. * i386/i386at/nhd.c: Likewise. * i386/i386at/nhdreg.h: Likewise. * i386/i386at/phys_mem_grab_page.c: Likewise. * i386/i386at/rtc.c: Likewise. * i386/i386at/rtc.h: Likewise. * kern/debug.c: Likewise. * kern/printf.c: Likewise. * kern/xpr.c: Likewise. * kern/xpr.h: Likewise. * debian/control, debian/rules: First crack at setting things up to build an oskit-mach package instead of gnumach. Older changes in ChangeLog.1 Local variables: mode: change-log fill-column: 75 End: