summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2009-06-182006-10-09 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* linux/src/drivers/scsi/in2000.c (in2000_proc_info) [PROC_INTERFACE]: Don't consider `__DATE__' and `__TIME__'.
2009-06-182006-10-08 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* linux/dev/drivers/scsi/scsi.h: Move file... * linux/src/drivers/scsi/scsi.h: ... here.
2009-06-182006-10-08 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* linux/dev/drivers/scsi/seagate.c: Move file... * linux/src/drivers/scsi/seagate.c: ... here.
2009-06-182006-10-08 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* linux/dev/drivers/scsi/aha152x.c: Move file... * linux/src/drivers/scsi/aha152x.c: ... here.
2009-06-182006-10-08 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* linux/dev/drivers/scsi/sr.c: Move file... * linux/src/drivers/scsi/sr.c: ... here.
2009-06-182006-10-08 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* linux/dev/drivers/scsi/sd_ioctl.c: Move file... * linux/src/drivers/scsi/sd_ioctl.c: ... here.
2009-06-182006-10-08 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* linux/dev/drivers/scsi/sd.c: Move file... * linux/src/drivers/scsi/sd.c: ... here.
2009-06-182006-10-08 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* linux/dev/drivers/scsi/scsi.c: Remove file.
2009-06-182006-10-08 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* linux/dev/drivers/scsi/hosts.c: Remove file.
2009-06-182006-10-08 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* linux/dev/drivers/block/ide.c: Move file... * linux/src/drivers/block/ide.c: ... here.
2009-06-182006-10-08 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* linux/dev/drivers/block/ide-cd.c: Remove file. * linux/src/drivers/block/ide-cd.c (cdrom_sleep): Don't define function `#ifndef MACH'.
2009-06-182006-10-07 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* i386/linux/configure: Regernerate. * i386/linux/device-drivers.h.in: Likewise.
2009-06-182006-10-07 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* Drivers.macros (AC_DRIVER, AC_DRIVER_nodef): Rewrite to allow options with dashes in them, make it usable more universally and enhance the generated comments in header files. * i386/linux/configure.ac (linux_DRIVER, linux_DRIVER_nodef): Enhance DESCRIPTION. (u1434f): Rename to `u14-34f'. (smcultra): Rename to `smc-ultra'. (smcultra32): Rename to `smc-ultra32'. (hpplus): Rename to `hp-plus'. (ne2kpci): Rename to `ne2k-pci'. (viarhine): Rename to `via-rhine'. (intelgige): Rename to `intel-gige'. (winbond840): Rename to `winbond-840'. (AC_PCMCIA_OPTION): Remove function. (pcmcia-isa): Use `AC_DRIVER' instead of `AC_PCMCIA_OPTION'. * i386/README-Drivers: Update accordingly.
2009-06-182006-10-03 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
[task #5941 --- ``Linker script for GNU Mach''] * Makefile.in (kernel.o): Remove `$(systype)-objfiles-prepend' hackery. * i386/Makefile.in (sysdep.a): Likewise. * i386/Makerules.in: Likewise. (LDFLAGS-kernel): Point to the linker script. * i386/i386at/boothdr.S (_start): Don't put into `.text', but into `.text.start' instead. * i386/ldscript: Change to put `.text' at 0x100000 and put `.text.start' first into `.text'.
2009-06-182006-10-03 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
[task #5941 --- ``Linker script for GNU Mach''] * i386/ldscript: New file, copied from `/lib/ldscripts/elf_i386.x' of a GNU Binutils 2.16.1 installation.
2009-06-182006-09-25 Stefan Siegl <stesie@brokenpipe.de>Stefan Siegl
* linux/dev/glue/net.c (device_get_status): Reworked to not read from STATUS. Fill `struct iw_point' correctly if necessary.
2009-06-182006-09-23 Stefan Siegl <stesie@brokenpipe.de>Stefan Siegl
* i386/linux/configure: Regenerate. * i386/linux/device-drivers.h.in: Likewise.
2009-06-182006-09-23 Stefan Siegl <stesie@brokenpipe.de>Stefan Siegl
* i386/linux/configure.ac (AC_PCMCIA_OPTION): New function. (--disable-pcmcia-isa): New configuration option to disable ISA-bus support in the pcmcia core, which is otherwise enabled now by default. * doc/mach.texi (Configuration): Briefly document the new configuration option. * i386/README-Drivers: Likewise.
2009-06-182006-09-20 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* configure: Regenerate. * i386/configure: Likewise. * i386/linux/configure: Likewise. * i386/linux/device-drivers.h.in: Likewise.
2009-06-182006-09-20 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* Drivers.macros (AC_DRIVER_ALIAS): Remove definition. (AC_DRIVER): Extend to take a `description' parameter and consider `$enable_default_device_drivers'. (AC_DRIVER_nodef): New definition. * configure.in (options kdb, kmsg): Remove redundancy. * i386/configure.in (option default-device-drivers): New option. (option lpr): Consider `$enable_default_device_drivers'. * i386/linux/configure.ac: Rework substantially. Remove all aliases. Rename some of the device driver options. (option default-device-drivers): New option. (linux_DRIVER): Take care about a `description' parameter and don't invoke AC_DRIVER_ALIAS. (linux_DRIVER_nodef): New definition. Adopt all usages of AC_DRIVER and linux_DRIVER to provide a `description' parameter. (g_NCR5380, NCR53c406a, eata_dma, wavelan, atp): Change from AC_DRIVER to AC_DRIVER_nodef to have these device drivers disabled by default. * doc/mach.texi: Add a note about the outdatedness to the configuration option table. * i386/README-Drivers: Update.
2009-06-18Savannah tags.Thomas Schwinge
2009-06-182006-09-19 Samuel Thibault <samuel.thibault@ens-lyon.org>Samuel Thibault
Fix against gcc 4.1's optimizations. * i386/i386/seg.h (struct pseudo_descriptor): Pack structure and move the padding field to the end. (lgdt): Pass the whole structure to the lgdt assembly command. (lidt): Likewise.
2009-06-182006-08-06 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* DEVELOPMENT: Update.
2009-06-182006-07-31 Stefan Siegl <stesie@brokenpipe.de>Thomas Schwinge
* doc/mach.texi (Configuration): Document the new PCMCIA drivers a bit more. * i386/README-Drivers: Likewise.
2009-06-182006-07-27 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* i386/linux/configure: Regenerate.
2009-06-182006-07-27 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* i386/linux/configure.ac: Pull in the pcmcia code only if really needed.
2009-06-182006-07-27 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* doc/mach.texi (Configuration): Very briefly document the new drivers. * i386/README-Drivers: Likewise.
2009-06-182006-07-27 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* linux/dev/include/linux/types.h (_MACH_SA_SYS_TYPES_H_): Define.
2009-06-182006-07-27 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* i386/linux/configure: Regenerate. * i386/linux/device-drivers.h.in: Likewise.
2009-06-182006-07-27 Stefan Siegl <stesie@brokenpipe.de>Thomas Schwinge
* i386/linux/configure.ac (pcmcia, wireless): New driver classes. (i82365, 3c574_cs, 3c589_cs, axnet_cs, fmvj18x_cs, nmclan_cs, pcnet_cs) (smc91c92_cs, xirc2ps_cs, orinoco_cs): New drivers. * i386/linux/Makefile.in (linux-pcmcia-cs-modules-files) (linux-pcmcia-cs-clients-files, linux-pcmcia-cs-wireless-files): New variables. Add `vpath's to the files locations. (all-linux-files): Add the three new variables. (linux-pcmcia-cs-modules-flags, linux-pcmcia-cs-clients-flags) (linux-pcmcia-cs-wireless-flags): New variables. (linux-flags): Add code to handle the above files and flags.
2009-06-182006-07-27 Stefan Siegl <stesie@brokenpipe.de>Thomas Schwinge
* i386/i386at/i386at_ds_routines.c (emulation_list) [LINUX_DEV && CONFIG_INET && CONFIG_PCMCIA]: Add the Linux pcmcia emulation structure. * linux/dev/glue/net.c: Include <linux/wireless.h>. (device_get_status): Rewrite function. (device_set_status): New function. (linux_net_emulation_ops): Add `device_set_status' at the appropriate position. * linux/dev/init/main.c (linux_init) [CONFIG_PCMCIA]: Call pcmcia_init.
2009-06-182006-07-27 Stefan Siegl <stesie@brokenpipe.de>Thomas Schwinge
* linux/pcmcia-cs/glue/ds.c: New file. * linux/pcmcia-cs/glue/pcmcia.c: Likewise. * linux/pcmcia-cs/glue/pcmcia_glue.h: Likewise. * linux/pcmcia-cs/glue/wireless_glue.h: Likewise.
2009-06-182006-07-27 Stefan Siegl <stesie@brokenpipe.de>Thomas Schwinge
* linux/pcmcia-cs/clients/xirc2ps_cs.c (busy_loop): Replace the code by a call to __udelay. * linux/pcmcia-cs/include/linux/init.h: Adapt to our Linux environment. * linux/pcmcia-cs/include/linux/slab.h: Use `#include', not `#include_next'. * linux/pcmcia-cs/include/pcmcia/mem_op.h: Adapt to our Linux environment and fix GCC 4.0 complaints. * linux/pcmcia-cs/include/pcmcia/version.h: Always assume that CONFIG_PCMCIA is not defined. * linux/pcmcia-cs/modules/cs.c (init_pcmcia_cs): Don't make it static. * linux/pcmcia-cs/modules/ds.c: Use some magic to avoid duplicate definition `io_req_t'. (ds_open, ds_release, ds_read, ds_write, ds_select, ds_poll, ds_fops): Hide functions if MACH is defined. Likewise for the module handling code. (ds_ioctl): Use plain `memcpy' if MACH is defined. (init_pcmcia_ds): Don't register charcater devices if MACH is defined. Include "../glue/ds.c". * linux/pcmcia-cs/modules/i82365.c (test_irq): Adapt to GNU Mach. (init_i82365): Don't make it static. * linux/pcmcia-cs/modules/pci_fixup.c (pci_devices): Don't define if MACH is defined. * linux/pcmcia-cs/wireless/orinoco.c: Adapt to our Linux environment.
2009-06-182006-07-27 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
Import a number of files from the pcmcia-cs package, version 3.2.8, available from <http://pcmcia-cs.sourceforge.net/>. * linux/pcmcia-cs/clients/3c574_cs.c: Import file. * linux/pcmcia-cs/clients/3c589_cs.c: Likewise. * linux/pcmcia-cs/clients/ax8390.h: Likewise. * linux/pcmcia-cs/clients/axnet_cs.c: Likewise. * linux/pcmcia-cs/clients/fmvj18x_cs.c: Likewise. * linux/pcmcia-cs/clients/nmclan_cs.c: Likewise. * linux/pcmcia-cs/clients/ositech.h: Likewise. * linux/pcmcia-cs/clients/pcnet_cs.c: Likewise. * linux/pcmcia-cs/clients/smc91c92_cs.c: Likewise. * linux/pcmcia-cs/clients/xirc2ps_cs.c: Likewise. * linux/pcmcia-cs/include/linux/crc32.h: Likewise. * linux/pcmcia-cs/include/linux/init.h: Likewise. * linux/pcmcia-cs/include/linux/slab.h: Likewise. * linux/pcmcia-cs/include/pcmcia/bulkmem.h: Likewise. * linux/pcmcia-cs/include/pcmcia/bus_ops.h: Likewise. * linux/pcmcia-cs/include/pcmcia/ciscode.h: Likewise. * linux/pcmcia-cs/include/pcmcia/cisreg.h: Likewise. * linux/pcmcia-cs/include/pcmcia/cistpl.h: Likewise. * linux/pcmcia-cs/include/pcmcia/cs.h: Likewise. * linux/pcmcia-cs/include/pcmcia/cs_types.h: Likewise. * linux/pcmcia-cs/include/pcmcia/driver_ops.h: Likewise. * linux/pcmcia-cs/include/pcmcia/ds.h: Likewise. * linux/pcmcia-cs/include/pcmcia/mem_op.h: Likewise. * linux/pcmcia-cs/include/pcmcia/ss.h: Likewise. * linux/pcmcia-cs/include/pcmcia/version.h: Likewise. * linux/pcmcia-cs/modules/bulkmem.c: Likewise. * linux/pcmcia-cs/modules/cirrus.h: Likewise. * linux/pcmcia-cs/modules/cistpl.c: Likewise. * linux/pcmcia-cs/modules/cs.c: Likewise. * linux/pcmcia-cs/modules/cs_internal.h: Likewise. * linux/pcmcia-cs/modules/ds.c: Likewise. * linux/pcmcia-cs/modules/ene.h: Likewise. * linux/pcmcia-cs/modules/i82365.c: Likewise. * linux/pcmcia-cs/modules/i82365.h: Likewise. * linux/pcmcia-cs/modules/o2micro.h: Likewise. * linux/pcmcia-cs/modules/pci_fixup.c: Likewise. * linux/pcmcia-cs/modules/ricoh.h: Likewise. * linux/pcmcia-cs/modules/rsrc_mgr.c: Likewise. * linux/pcmcia-cs/modules/smc34c90.h: Likewise. * linux/pcmcia-cs/modules/ti113x.h: Likewise. * linux/pcmcia-cs/modules/topic.h: Likewise. * linux/pcmcia-cs/modules/vg468.h: Likewise. * linux/pcmcia-cs/modules/yenta.h: Likewise. * linux/pcmcia-cs/wireless/hermes.c: Likewise. * linux/pcmcia-cs/wireless/hermes.h: Likewise. * linux/pcmcia-cs/wireless/hermes_rid.h: Likewise. * linux/pcmcia-cs/wireless/ieee802_11.h: Likewise. * linux/pcmcia-cs/wireless/orinoco.c: Likewise. * linux/pcmcia-cs/wireless/orinoco.h: Likewise. * linux/pcmcia-cs/wireless/orinoco_cs.c: Likewise.
2009-06-182006-07-24 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* Makerules.in (%.h %_user.c): Add `%.cli.d' to the target list. Create these files by specifying `-MD' as a flag for mig and rename the resulting files as needed. Include these `*.cli.d' files instead of `*.migu.d' files. (%_interface.h %_server.c): Likewise for `%.srv.d' / `*.migs.d'. (%.migs.d, %.migu.d): Remove targets. * Makefile.in (clean): Adapt to the above. * i386/Makefile.in (clean): Likewise.
2009-06-182006-06-30 Samuel Thibault <samuel.thibault@ens-lyon.org>Thomas Schwinge
* i386/i386at/kd_mouse.c (mouse_char_in, mouse_char) Remove variables. (mouse_char_index) New variable. (mouse_handle_byte, kd_mouse_read): Use MOUSEBUF instead of MOUSE_CHAR for storing incoming command characters. (kd_mouse_read_reset): New function. (ibm_ps2_mouse_open, ibm_ps2_mouse_close): Call new kd_mouse_read_reset function.
2009-06-182006-06-09 Stefan Siegl <stesie@brokenpipe.de>Thomas Schwinge
* linux/dev/include/asm-i386/uaccess.h: New dummy file. * linux/dev/include/linux/pm.h: Likewise. * linux/dev/include/linux/threads.h: Likewise. * linux/src/include/linux/symtab_begin.h: New file from Linux 2.0.40. * linux/src/include/linux/symtab_end.h: Likewise. * linux/src/include/linux/module.h: Update from Linux 2.0.40 with minor changes. * linux/src/include/linux/list.h: New file from Linux 2.2.26. * linux/src/include/linux/kcomp.h: Likewise with minor changes. * linux/src/include/linux/wait.h: Update from Linux 2.2.26. * linux/src/include/linux/wireless.h: Likewise. * linux/src/include/asm-i386/bitops.h [__KERNEL__] (ffs, hweight32) (hweight16, hweight8): Copy from Linux 2.2.26.
2009-06-182006-06-09 Stefan Siegl <stesie@brokenpipe.de>Thomas Schwinge
* kern/printf.c (_doprnt): Support printing of pointer addresses.
2009-06-182006-05-14 Roland McGrath <roland@frob.com>Thomas Schwinge
[sync from HEAD, 2002-06-17] * 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.
2009-06-182006-05-14 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* i386/i386at/autoconf.c (bus_device_init) <lpr> [! LINUX_DEV]: Depend on `MACH_LPR' instead. * i386/i386at/lpr.c: Fix obsolescent `#else' / `#endif' syntax.
2009-06-182006-05-12 Stefan Siegl <stesie@brokenpipe.de>Thomas Schwinge
* linux/dev/glue/kmem.c (vfree): Panic if `vmalloc_list_lookup' did NOT succeed.
2009-06-18Savannah tag.Thomas Schwinge
2009-06-182006-05-08 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* DEVELOPMENT: Document Samuel's patch. 2006-05-08 Samuel Thibault <samuel.thibault@ens-lyon.org> * i386/i386at/model_dep.c (mem_size_init): Limit memory to what can actually be used (minus a little extra for virtual mappings). * i386/intel/pmap.c (pmap_bootstrap): Extend the virtual mapping area according to memory size for at least being able to manage it. But look out for wrap and limit it to kernel adresses. Remove duplicate computing.
2009-06-182006-04-27 Richard Braun <syn@hurdfr.org>Thomas Schwinge
Manuel Menal <mmenal@hurdfr.org> * device/if_hdr.h (struct ifnet): Added new members `if_snd_port_list' and `if_snd_port_list_lock'. * device/net_io.c: Reworked to improve BPF support. Filters can be applied to ingress packets, egress packets, or both. * device/subrs.c: Initialize the `if_snd_port_list' and `if_snd_port_list_lock'. * include/device/bpf.h [0]: Enable unconditionally. Include <sys/types.h>. (BPF_IN, BPF_OUT): New macros. * include/device/net_status.h (NETF_TYPE_MASK, NETF_IN, NETF_OUT): New macros. (struct net_rcv_msg): New member `sent'. * linux/dev/glue/net.c: Mark ingress packets as received and inject egress packets into the packet filters.
2009-06-182006-04-26 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* Makefile.in: Replace `make' with `$(MAKE)'. * i386/Makefile.in: Likewise. Reported by Leonardo Lopes Pereira <leonardolopespereira@gmail.com>.
2009-06-182006-04-08 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* i386/Makefile.in (INCLUDES): Don't add `$(srcdir)/bogus'. * i386/Makerules.in (INCLUDES): Add `$(abs_top_srcdir)/$(systype)/bogus'. Reported by Samuel Thibault <samuel.thibault@ens-lyon.org>.
2009-06-182006-04-02 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* Makerules.in (%_user.c, %_server.c): Those are `.PRECIOUS'. (%.migs.d, %.migu.d): New targets. (%.migs_d, %.migu_d, %.migsh_d, %.miguh_d): Remove targets. Adopt the `include's to the renamed targets. * Makefile.in (clean): Adopt to the renamed targets. * i386/Makefile.in (clean): Likewise.
2009-06-182006-04-02 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* i386/Makefile.in (boothdr.o): New target.
2009-06-182006-03-21 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* Makefile.in (clean): Also remove `kernel.gz', `kernel.stripped' and `kernel.stripped.gz'. * Makefile.in (kernel.o): Handle `$(systype)-objfiles-prepend'. * i386/Makefile.in (sysdep.a): Likewise. * i386/Makerules.in (kernel-objfiles-prepend): Transform variable into `$(systype)-objfiles-prepend'. (kernel.o): Remove target.
2009-06-182006-03-20 Thomas Schwinge <tschwinge@gnu.org>Thomas Schwinge
* DEVELOPMENT: Document the NORMA removal. 2006-03-20 Leonardo Lopes Pereira <leonardolopespereira@gmail.com> Remove unused and unsupported code. Consult the file `DEVELOPMENT' for details. [patch #4982] * bogus/norma_device.h: Remove file. * bogus/norma_ether.h: Likewise. * bogus/norma_ipc.h: Likewise. * bogus/norma_task.h: Likewise. * bogus/norma_vm.h: Likewise. * include/mach/mach_norma.defs: Likewise. * include/mach/norma_task.defs: Likewise. * include/mach/norma_special_ports.h: Likewise. * Makefile.in (bogus-files): Remove `norma_device.h', `norma_ether.h', `norma_ipc.h', `norma_task.h' and `norma_vm.h'. (mach-headers): Remove `mach_norma.defs', `norma_task.defs' and `norma_special_ports.h'. * device/ds_routines.c: Don't include <norma_device.h> anymore and adopt all users of NORMA_DEVICE as if it were always defined to `0'. * device/net_io.c: Likewise for <norma_ether.h>, NORMA_ETHER. * kern/machine.c: Likewise. * ddb/db_command.c: Likevise for <norma_ipc.h>, NORMA_IPC. * ipc/ipc_init.c: Likewise. * ipc/ipc_kmsg.c: Likewise. * ipc/ipc_kmsg.h: Likewise. * ipc/ipc_mqueue.c: Likewise. * ipc/ipc_notify.c: Likewise. * ipc/ipc_port.c: Likewise. * ipc/ipc_port.h: Likewise. * ipc/ipc_space.c: Likewise. * ipc/ipc_space.h: Likewise. * ipc/mach_msg.c: Likewise. * kern/ast.c: Likewise. * kern/debug.c: Likewise. * kern/exception.c: Likewise. * kern/startup.c: Likewise. * vm/memory_object.c: Likewise. * vm/vm_map.c: Likewise. * kern/ipc_kobject.c: Likewise for <norma_task.h>, NORMA_TASK. * kern/task.c: Likewise. * kern/task.h: Likewise. * ddb/db_command.c: Likewise for <norma_vm.h>, NORMA_VM. * device/dev_pager.c: Likewise. * include/mach/mach_types.defs: Likewise. * include/mach/mach_types.h: Likewise. * include/mach/memory_object_default.defs: Likewise. * include/mach/memory_object.defs: Likewise. * ipc/ipc_kmsg.c: Likewise. * kern/ipc_kobject.c: Likewise. * kern/ipc_mig.c: Likewise. * kern/startup.c: Likewise. * vm/memory_object.c: Likewise. * vm/vm_object.c: Likewise. * vm/vm_object.h: Likewise. * vm/vm_pageout.c: Likewise.