Commit c32f1a34 authored by Linus Torvalds's avatar Linus Torvalds

Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6:
  sparc: Set CONFIG_HAVE_ARCH_TRACEHOOK
  sparc: Add task_pt_regs().
  sparc: Add call to tracehook_signal_handler().
  sparc: Create and use TIF_NOTIFY_RESUME.
  sparc: Use tracehook routines in syscall_trace().
  sparc64: tracehook: CONFIG_HAVE_ARCH_TRACEHOOK
  sparc: Add user_stack_pointer().
  sparc64: tracehook_signal_handler
  sparc64: tracehook: TIF_NOTIFY_RESUME
  sparc: Add asm/syscall.h
  sparc64: tracehook syscall
  sparc: enable headers_export again
  sparc, sparc64: use arch/sparc/include
parents 4f31f308 04d91cb8
...@@ -206,7 +206,11 @@ ifeq ($(ARCH),x86_64) ...@@ -206,7 +206,11 @@ ifeq ($(ARCH),x86_64)
endif endif
# Where to locate arch specific headers # Where to locate arch specific headers
hdr-arch := $(SRCARCH) ifeq ($(ARCH),sparc64)
hdr-arch := sparc
else
hdr-arch := $(SRCARCH)
endif
KCONFIG_CONFIG ?= .config KCONFIG_CONFIG ?= .config
......
...@@ -68,6 +68,7 @@ config SPARC ...@@ -68,6 +68,7 @@ config SPARC
select HAVE_IDE select HAVE_IDE
select HAVE_OPROFILE select HAVE_OPROFILE
select HAVE_ARCH_KGDB if !SMP select HAVE_ARCH_KGDB if !SMP
select HAVE_ARCH_TRACEHOOK
# Identify this as a Sparc32 build # Identify this as a Sparc32 build
config SPARC32 config SPARC32
......
# User exported sparc header files
include include/asm-generic/Kbuild.asm
header-y += ipcbuf_32.h
header-y += ipcbuf_64.h
header-y += posix_types_32.h
header-y += posix_types_64.h
header-y += ptrace_32.h
header-y += ptrace_64.h
header-y += sigcontext_32.h
header-y += sigcontext_64.h
header-y += siginfo_32.h
header-y += siginfo_64.h
header-y += signal_32.h
header-y += signal_64.h
header-y += stat_32.h
header-y += stat_64.h
header-y += statfs_32.h
header-y += statfs_64.h
header-y += unistd_32.h
header-y += unistd_64.h
header-y += apc.h
header-y += asi.h
header-y += bpp.h
header-y += display7seg.h
header-y += envctrl.h
header-y += fbio.h
header-y += jsflash.h
header-y += openprom.h
header-y += openprom_32.h
header-y += openprom_64.h
header-y += openpromio.h
header-y += perfctr.h
header-y += psrcompat.h
header-y += psr.h
header-y += pstate.h
header-y += reg.h
header-y += reg_32.h
header-y += reg_64.h
header-y += traps.h
header-y += uctx.h
header-y += utrap.h
header-y += vfc_ioctls.h
header-y += watchdog.h
#ifndef ___ASM_SPARC_ATOMIC_H #ifndef ___ASM_SPARC_ATOMIC_H
#define ___ASM_SPARC_ATOMIC_H #define ___ASM_SPARC_ATOMIC_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/atomic_64.h> #include <asm/atomic_64.h>
#else #else
#include <asm-sparc/atomic_32.h> #include <asm/atomic_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_AUXIO_H #ifndef ___ASM_SPARC_AUXIO_H
#define ___ASM_SPARC_AUXIO_H #define ___ASM_SPARC_AUXIO_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/auxio_64.h> #include <asm/auxio_64.h>
#else #else
#include <asm-sparc/auxio_32.h> #include <asm/auxio_32.h>
#endif #endif
#endif #endif
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
* understand the hardware you are querying! * understand the hardware you are querying!
*/ */
extern void set_auxio(unsigned char bits_on, unsigned char bits_off); extern void set_auxio(unsigned char bits_on, unsigned char bits_off);
extern unsigned char get_auxio(void); /* .../asm-sparc/floppy.h */ extern unsigned char get_auxio(void); /* .../asm/floppy.h */
/* /*
* The following routines are provided for driver-compatibility * The following routines are provided for driver-compatibility
......
#ifndef ___ASM_SPARC_BITOPS_H #ifndef ___ASM_SPARC_BITOPS_H
#define ___ASM_SPARC_BITOPS_H #define ___ASM_SPARC_BITOPS_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/bitops_64.h> #include <asm/bitops_64.h>
#else #else
#include <asm-sparc/bitops_32.h> #include <asm/bitops_32.h>
#endif #endif
#endif #endif
/* /*
* asm-sparc/btfixup.h: Macros for boot time linking. * asm/btfixup.h: Macros for boot time linking.
* *
* Copyright (C) 1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz) * Copyright (C) 1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
*/ */
......
/* include/asm-sparc/bugs.h: Sparc probes for various bugs. /* include/asm/bugs.h: Sparc probes for various bugs.
* *
* Copyright (C) 1996, 2007 David S. Miller (davem@davemloft.net) * Copyright (C) 1996, 2007 David S. Miller (davem@davemloft.net)
*/ */
......
#ifndef ___ASM_SPARC_CACHEFLUSH_H #ifndef ___ASM_SPARC_CACHEFLUSH_H
#define ___ASM_SPARC_CACHEFLUSH_H #define ___ASM_SPARC_CACHEFLUSH_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/cacheflush_64.h> #include <asm/cacheflush_64.h>
#else #else
#include <asm-sparc/cacheflush_32.h> #include <asm/cacheflush_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_CHECKSUM_H #ifndef ___ASM_SPARC_CHECKSUM_H
#define ___ASM_SPARC_CHECKSUM_H #define ___ASM_SPARC_CHECKSUM_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/checksum_64.h> #include <asm/checksum_64.h>
#else #else
#include <asm-sparc/checksum_32.h> #include <asm/checksum_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_CPUDATA_H #ifndef ___ASM_SPARC_CPUDATA_H
#define ___ASM_SPARC_CPUDATA_H #define ___ASM_SPARC_CPUDATA_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/cpudata_64.h> #include <asm/cpudata_64.h>
#else #else
#include <asm-sparc/cpudata_32.h> #include <asm/cpudata_32.h>
#endif #endif
#endif #endif
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* *
* Copyright (C) 2004 Keith M Wesolowski (wesolows@foobazco.org) * Copyright (C) 2004 Keith M Wesolowski (wesolows@foobazco.org)
* *
* Based on include/asm-sparc64/cpudata.h and Linux 2.4 smp.h * Based on include/asm/cpudata.h and Linux 2.4 smp.h
* both (C) David S. Miller. * both (C) David S. Miller.
*/ */
......
/* include/asm-sparc/current.h /* include/asm/current.h
* *
* Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation * Copyright (C) 1999 IBM Deutschland Entwicklung GmbH, IBM Corporation
* Copyright (C) 2002 Pete Zaitcev (zaitcev@yahoo.com) * Copyright (C) 2002 Pete Zaitcev (zaitcev@yahoo.com)
......
#ifndef ___ASM_SPARC_DELAY_H #ifndef ___ASM_SPARC_DELAY_H
#define ___ASM_SPARC_DELAY_H #define ___ASM_SPARC_DELAY_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/delay_64.h> #include <asm/delay_64.h>
#else #else
#include <asm-sparc/delay_32.h> #include <asm/delay_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_DMA_MAPPING_H #ifndef ___ASM_SPARC_DMA_MAPPING_H
#define ___ASM_SPARC_DMA_MAPPING_H #define ___ASM_SPARC_DMA_MAPPING_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/dma-mapping_64.h> #include <asm/dma-mapping_64.h>
#else #else
#include <asm-sparc/dma-mapping_32.h> #include <asm/dma-mapping_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_DMA_H #ifndef ___ASM_SPARC_DMA_H
#define ___ASM_SPARC_DMA_H #define ___ASM_SPARC_DMA_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/dma_64.h> #include <asm/dma_64.h>
#else #else
#include <asm-sparc/dma_32.h> #include <asm/dma_32.h>
#endif #endif
#endif #endif
/* include/asm-sparc/dma.h /* include/asm/dma.h
* *
* Copyright 1995 (C) David S. Miller (davem@davemloft.net) * Copyright 1995 (C) David S. Miller (davem@davemloft.net)
*/ */
......
/* /*
* include/asm-sparc64/dma.h * include/asm/dma.h
* *
* Copyright 1996 (C) David S. Miller (davem@caip.rutgers.edu) * Copyright 1996 (C) David S. Miller (davem@caip.rutgers.edu)
*/ */
......
#ifndef ___ASM_SPARC_EBUS_H #ifndef ___ASM_SPARC_EBUS_H
#define ___ASM_SPARC_EBUS_H #define ___ASM_SPARC_EBUS_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/ebus_64.h> #include <asm/ebus_64.h>
#else #else
#include <asm-sparc/ebus_32.h> #include <asm/ebus_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_ELF_H #ifndef ___ASM_SPARC_ELF_H
#define ___ASM_SPARC_ELF_H #define ___ASM_SPARC_ELF_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/elf_64.h> #include <asm/elf_64.h>
#else #else
#include <asm-sparc/elf_32.h> #include <asm/elf_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_FLOPPY_H #ifndef ___ASM_SPARC_FLOPPY_H
#define ___ASM_SPARC_FLOPPY_H #define ___ASM_SPARC_FLOPPY_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/floppy_64.h> #include <asm/floppy_64.h>
#else #else
#include <asm-sparc/floppy_32.h> #include <asm/floppy_32.h>
#endif #endif
#endif #endif
/* asm-sparc/floppy.h: Sparc specific parts of the Floppy driver. /* asm/floppy.h: Sparc specific parts of the Floppy driver.
* *
* Copyright (C) 1995 David S. Miller (davem@davemloft.net) * Copyright (C) 1995 David S. Miller (davem@davemloft.net)
*/ */
......
#ifndef ___ASM_SPARC_FUTEX_H #ifndef ___ASM_SPARC_FUTEX_H
#define ___ASM_SPARC_FUTEX_H #define ___ASM_SPARC_FUTEX_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/futex_64.h> #include <asm/futex_64.h>
#else #else
#include <asm-sparc/futex_32.h> #include <asm/futex_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_HARDIRQ_H #ifndef ___ASM_SPARC_HARDIRQ_H
#define ___ASM_SPARC_HARDIRQ_H #define ___ASM_SPARC_HARDIRQ_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/hardirq_64.h> #include <asm/hardirq_64.h>
#else #else
#include <asm-sparc/hardirq_32.h> #include <asm/hardirq_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_HEAD_H #ifndef ___ASM_SPARC_HEAD_H
#define ___ASM_SPARC_HEAD_H #define ___ASM_SPARC_HEAD_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/head_64.h> #include <asm/head_64.h>
#else #else
#include <asm-sparc/head_32.h> #include <asm/head_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_IO_H #ifndef ___ASM_SPARC_IO_H
#define ___ASM_SPARC_IO_H #define ___ASM_SPARC_IO_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/io_64.h> #include <asm/io_64.h>
#else #else
#include <asm-sparc/io_32.h> #include <asm/io_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_IOMMU_H #ifndef ___ASM_SPARC_IOMMU_H
#define ___ASM_SPARC_IOMMU_H #define ___ASM_SPARC_IOMMU_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/iommu_64.h> #include <asm/iommu_64.h>
#else #else
#include <asm-sparc/iommu_32.h> #include <asm/iommu_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_IPCBUF_H #ifndef ___ASM_SPARC_IPCBUF_H
#define ___ASM_SPARC_IPCBUF_H #define ___ASM_SPARC_IPCBUF_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/ipcbuf_64.h> #include <asm/ipcbuf_64.h>
#else #else
#include <asm-sparc/ipcbuf_32.h> #include <asm/ipcbuf_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_IRQ_H #ifndef ___ASM_SPARC_IRQ_H
#define ___ASM_SPARC_IRQ_H #define ___ASM_SPARC_IRQ_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/irq_64.h> #include <asm/irq_64.h>
#else #else
#include <asm-sparc/irq_32.h> #include <asm/irq_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_IRQFLAGS_H #ifndef ___ASM_SPARC_IRQFLAGS_H
#define ___ASM_SPARC_IRQFLAGS_H #define ___ASM_SPARC_IRQFLAGS_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/irqflags_64.h> #include <asm/irqflags_64.h>
#else #else
#include <asm-sparc/irqflags_32.h> #include <asm/irqflags_32.h>
#endif #endif
#endif #endif
/* /*
* include/asm-sparc/irqflags.h * include/asm/irqflags.h
* *
* IRQ flags handling * IRQ flags handling
* *
......
/* /*
* include/asm-sparc64/irqflags.h * include/asm/irqflags.h
* *
* IRQ flags handling * IRQ flags handling
* *
......
#ifndef ___ASM_SPARC_KDEBUG_H #ifndef ___ASM_SPARC_KDEBUG_H
#define ___ASM_SPARC_KDEBUG_H #define ___ASM_SPARC_KDEBUG_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/kdebug_64.h> #include <asm/kdebug_64.h>
#else #else
#include <asm-sparc/kdebug_32.h> #include <asm/kdebug_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_MC146818RTC_H #ifndef ___ASM_SPARC_MC146818RTC_H
#define ___ASM_SPARC_MC146818RTC_H #define ___ASM_SPARC_MC146818RTC_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/mc146818rtc_64.h> #include <asm/mc146818rtc_64.h>
#else #else
#include <asm-sparc/mc146818rtc_32.h> #include <asm/mc146818rtc_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_MMU_H #ifndef ___ASM_SPARC_MMU_H
#define ___ASM_SPARC_MMU_H #define ___ASM_SPARC_MMU_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/mmu_64.h> #include <asm/mmu_64.h>
#else #else
#include <asm-sparc/mmu_32.h> #include <asm/mmu_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_MMU_CONTEXT_H #ifndef ___ASM_SPARC_MMU_CONTEXT_H
#define ___ASM_SPARC_MMU_CONTEXT_H #define ___ASM_SPARC_MMU_CONTEXT_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/mmu_context_64.h> #include <asm/mmu_context_64.h>
#else #else
#include <asm-sparc/mmu_context_32.h> #include <asm/mmu_context_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_MODULE_H #ifndef ___ASM_SPARC_MODULE_H
#define ___ASM_SPARC_MODULE_H #define ___ASM_SPARC_MODULE_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/module_64.h> #include <asm/module_64.h>
#else #else
#include <asm-sparc/module_32.h> #include <asm/module_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_MOSTEK_H #ifndef ___ASM_SPARC_MOSTEK_H
#define ___ASM_SPARC_MOSTEK_H #define ___ASM_SPARC_MOSTEK_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/mostek_64.h> #include <asm/mostek_64.h>
#else #else
#include <asm-sparc/mostek_32.h> #include <asm/mostek_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_OF_PLATFORM_H #ifndef ___ASM_SPARC_OF_PLATFORM_H
#define ___ASM_SPARC_OF_PLATFORM_H #define ___ASM_SPARC_OF_PLATFORM_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/of_platform_64.h> #include <asm/of_platform_64.h>
#else #else
#include <asm-sparc/of_platform_32.h> #include <asm/of_platform_32.h>
#endif #endif
#endif #endif
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
/* /*
* Copyright (C) 2006 Benjamin Herrenschmidt, IBM Corp. * Copyright (C) 2006 Benjamin Herrenschmidt, IBM Corp.
* <benh@kernel.crashing.org> * <benh@kernel.crashing.org>
* Modified for Sparc by merging parts of asm-sparc/of_device.h * Modified for Sparc by merging parts of asm/of_device.h
* by Stephen Rothwell * by Stephen Rothwell
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
/* /*
* Copyright (C) 2006 Benjamin Herrenschmidt, IBM Corp. * Copyright (C) 2006 Benjamin Herrenschmidt, IBM Corp.
* <benh@kernel.crashing.org> * <benh@kernel.crashing.org>
* Modified for Sparc by merging parts of asm-sparc/of_device.h * Modified for Sparc by merging parts of asm/of_device.h
* by Stephen Rothwell * by Stephen Rothwell
* *
* This program is free software; you can redistribute it and/or * This program is free software; you can redistribute it and/or
......
#ifndef ___ASM_SPARC_OPENPROM_H #ifndef ___ASM_SPARC_OPENPROM_H
#define ___ASM_SPARC_OPENPROM_H #define ___ASM_SPARC_OPENPROM_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/openprom_64.h> #include <asm/openprom_64.h>
#else #else
#include <asm-sparc/openprom_32.h> #include <asm/openprom_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_OPLIB_H #ifndef ___ASM_SPARC_OPLIB_H
#define ___ASM_SPARC_OPLIB_H #define ___ASM_SPARC_OPLIB_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/oplib_64.h> #include <asm/oplib_64.h>
#else #else
#include <asm-sparc/oplib_32.h> #include <asm/oplib_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_PAGE_H #ifndef ___ASM_SPARC_PAGE_H
#define ___ASM_SPARC_PAGE_H #define ___ASM_SPARC_PAGE_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/page_64.h> #include <asm/page_64.h>
#else #else
#include <asm-sparc/page_32.h> #include <asm/page_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_PCI_H #ifndef ___ASM_SPARC_PCI_H
#define ___ASM_SPARC_PCI_H #define ___ASM_SPARC_PCI_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/pci_64.h> #include <asm/pci_64.h>
#else #else
#include <asm-sparc/pci_32.h> #include <asm/pci_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_PERCPU_H #ifndef ___ASM_SPARC_PERCPU_H
#define ___ASM_SPARC_PERCPU_H #define ___ASM_SPARC_PERCPU_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/percpu_64.h> #include <asm/percpu_64.h>
#else #else
#include <asm-sparc/percpu_32.h> #include <asm/percpu_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_PGALLOC_H #ifndef ___ASM_SPARC_PGALLOC_H
#define ___ASM_SPARC_PGALLOC_H #define ___ASM_SPARC_PGALLOC_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/pgalloc_64.h> #include <asm/pgalloc_64.h>
#else #else
#include <asm-sparc/pgalloc_32.h> #include <asm/pgalloc_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_PGTABLE_H #ifndef ___ASM_SPARC_PGTABLE_H
#define ___ASM_SPARC_PGTABLE_H #define ___ASM_SPARC_PGTABLE_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/pgtable_64.h> #include <asm/pgtable_64.h>
#else #else
#include <asm-sparc/pgtable_32.h> #include <asm/pgtable_32.h>
#endif #endif
#endif #endif
#ifndef _SPARC_PGTABLE_H #ifndef _SPARC_PGTABLE_H
#define _SPARC_PGTABLE_H #define _SPARC_PGTABLE_H
/* asm-sparc/pgtable.h: Defines and functions used to work /* asm/pgtable.h: Defines and functions used to work
* with Sparc page tables. * with Sparc page tables.
* *
* Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
......
#ifndef ___ASM_SPARC_POSIX_TYPES_H #ifndef ___ASM_SPARC_POSIX_TYPES_H
#define ___ASM_SPARC_POSIX_TYPES_H #define ___ASM_SPARC_POSIX_TYPES_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/posix_types_64.h> #include <asm/posix_types_64.h>
#else #else
#include <asm-sparc/posix_types_32.h> #include <asm/posix_types_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_PROCESSOR_H #ifndef ___ASM_SPARC_PROCESSOR_H
#define ___ASM_SPARC_PROCESSOR_H #define ___ASM_SPARC_PROCESSOR_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/processor_64.h> #include <asm/processor_64.h>
#else #else
#include <asm-sparc/processor_32.h> #include <asm/processor_32.h>
#endif #endif
#endif #endif
/* include/asm-sparc/processor.h /* include/asm/processor.h
* *
* Copyright (C) 1994 David S. Miller (davem@caip.rutgers.edu) * Copyright (C) 1994 David S. Miller (davem@caip.rutgers.edu)
*/ */
...@@ -114,6 +114,7 @@ extern pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); ...@@ -114,6 +114,7 @@ extern pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags);
extern unsigned long get_wchan(struct task_struct *); extern unsigned long get_wchan(struct task_struct *);
#define task_pt_regs(tsk) ((tsk)->thread.kregs)
#define KSTK_EIP(tsk) ((tsk)->thread.kregs->pc) #define KSTK_EIP(tsk) ((tsk)->thread.kregs->pc)
#define KSTK_ESP(tsk) ((tsk)->thread.kregs->u_regs[UREG_FP]) #define KSTK_ESP(tsk) ((tsk)->thread.kregs->u_regs[UREG_FP])
......
/* /*
* include/asm-sparc64/processor.h * include/asm/processor.h
* *
* Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
*/ */
......
#ifndef ___ASM_SPARC_PTRACE_H #ifndef ___ASM_SPARC_PTRACE_H
#define ___ASM_SPARC_PTRACE_H #define ___ASM_SPARC_PTRACE_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/ptrace_64.h> #include <asm/ptrace_64.h>
#else #else
#include <asm-sparc/ptrace_32.h> #include <asm/ptrace_32.h>
#endif #endif
#endif #endif
...@@ -74,6 +74,7 @@ struct sparc_stackf { ...@@ -74,6 +74,7 @@ struct sparc_stackf {
#define user_mode(regs) (!((regs)->psr & PSR_PS)) #define user_mode(regs) (!((regs)->psr & PSR_PS))
#define instruction_pointer(regs) ((regs)->pc) #define instruction_pointer(regs) ((regs)->pc)
#define user_stack_pointer(regs) ((regs)->u_regs[UREG_FP])
unsigned long profile_pc(struct pt_regs *); unsigned long profile_pc(struct pt_regs *);
extern void show_regs(struct pt_regs *); extern void show_regs(struct pt_regs *);
#endif #endif
......
...@@ -146,6 +146,7 @@ do { current_thread_info()->syscall_noerror = 1; \ ...@@ -146,6 +146,7 @@ do { current_thread_info()->syscall_noerror = 1; \
} while (0) } while (0)
#define user_mode(regs) (!((regs)->tstate & TSTATE_PRIV)) #define user_mode(regs) (!((regs)->tstate & TSTATE_PRIV))
#define instruction_pointer(regs) ((regs)->tpc) #define instruction_pointer(regs) ((regs)->tpc)
#define user_stack_pointer(regs) ((regs)->u_regs[UREG_FP])
#define regs_return_value(regs) ((regs)->u_regs[UREG_I0]) #define regs_return_value(regs) ((regs)->u_regs[UREG_I0])
#ifdef CONFIG_SMP #ifdef CONFIG_SMP
extern unsigned long profile_pc(struct pt_regs *); extern unsigned long profile_pc(struct pt_regs *);
......
#ifndef ___ASM_SPARC_REG_H #ifndef ___ASM_SPARC_REG_H
#define ___ASM_SPARC_REG_H #define ___ASM_SPARC_REG_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/reg_64.h> #include <asm/reg_64.h>
#else #else
#include <asm-sparc/reg_32.h> #include <asm/reg_32.h>
#endif #endif
#endif #endif
/* /*
* linux/include/asm-sparc/reg.h * linux/include/asm/reg.h
* Layout of the registers as expected by gdb on the Sparc * Layout of the registers as expected by gdb on the Sparc
* we should replace the user.h definitions with those in * we should replace the user.h definitions with those in
* this file, we don't even use the other * this file, we don't even use the other
......
/* /*
* linux/asm-sparc64/reg.h * linux/asm/reg.h
* Layout of the registers as expected by gdb on the Sparc * Layout of the registers as expected by gdb on the Sparc
* we should replace the user.h definitions with those in * we should replace the user.h definitions with those in
* this file, we don't even use the other * this file, we don't even use the other
......
#ifndef ___ASM_SPARC_SBUS_H #ifndef ___ASM_SPARC_SBUS_H
#define ___ASM_SPARC_SBUS_H #define ___ASM_SPARC_SBUS_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/sbus_64.h> #include <asm/sbus_64.h>
#else #else
#include <asm-sparc/sbus_32.h> #include <asm/sbus_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_SCATTERLIST_H #ifndef ___ASM_SPARC_SCATTERLIST_H
#define ___ASM_SPARC_SCATTERLIST_H #define ___ASM_SPARC_SCATTERLIST_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/scatterlist_64.h> #include <asm/scatterlist_64.h>
#else #else
#include <asm-sparc/scatterlist_32.h> #include <asm/scatterlist_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_SECTIONS_H #ifndef ___ASM_SPARC_SECTIONS_H
#define ___ASM_SPARC_SECTIONS_H #define ___ASM_SPARC_SECTIONS_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/sections_64.h> #include <asm/sections_64.h>
#else #else
#include <asm-sparc/sections_32.h> #include <asm/sections_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_SFP_MACHINE_H #ifndef ___ASM_SPARC_SFP_MACHINE_H
#define ___ASM_SPARC_SFP_MACHINE_H #define ___ASM_SPARC_SFP_MACHINE_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/sfp-machine_64.h> #include <asm/sfp-machine_64.h>
#else #else
#include <asm-sparc/sfp-machine_32.h> #include <asm/sfp-machine_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_SHMPARAM_H #ifndef ___ASM_SPARC_SHMPARAM_H
#define ___ASM_SPARC_SHMPARAM_H #define ___ASM_SPARC_SHMPARAM_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/shmparam_64.h> #include <asm/shmparam_64.h>
#else #else
#include <asm-sparc/shmparam_32.h> #include <asm/shmparam_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_SIGCONTEXT_H #ifndef ___ASM_SPARC_SIGCONTEXT_H
#define ___ASM_SPARC_SIGCONTEXT_H #define ___ASM_SPARC_SIGCONTEXT_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/sigcontext_64.h> #include <asm/sigcontext_64.h>
#else #else
#include <asm-sparc/sigcontext_32.h> #include <asm/sigcontext_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_SIGINFO_H #ifndef ___ASM_SPARC_SIGINFO_H
#define ___ASM_SPARC_SIGINFO_H #define ___ASM_SPARC_SIGINFO_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/siginfo_64.h> #include <asm/siginfo_64.h>
#else #else
#include <asm-sparc/siginfo_32.h> #include <asm/siginfo_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_SIGNAL_H #ifndef ___ASM_SPARC_SIGNAL_H
#define ___ASM_SPARC_SIGNAL_H #define ___ASM_SPARC_SIGNAL_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/signal_64.h> #include <asm/signal_64.h>
#else #else
#include <asm-sparc/signal_32.h> #include <asm/signal_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_SMP_H #ifndef ___ASM_SPARC_SMP_H
#define ___ASM_SPARC_SMP_H #define ___ASM_SPARC_SMP_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/smp_64.h> #include <asm/smp_64.h>
#else #else
#include <asm-sparc/smp_32.h> #include <asm/smp_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_SPINLOCK_H #ifndef ___ASM_SPARC_SPINLOCK_H
#define ___ASM_SPARC_SPINLOCK_H #define ___ASM_SPARC_SPINLOCK_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/spinlock_64.h> #include <asm/spinlock_64.h>
#else #else
#include <asm-sparc/spinlock_32.h> #include <asm/spinlock_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_STAT_H #ifndef ___ASM_SPARC_STAT_H
#define ___ASM_SPARC_STAT_H #define ___ASM_SPARC_STAT_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/stat_64.h> #include <asm/stat_64.h>
#else #else
#include <asm-sparc/stat_32.h> #include <asm/stat_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_STATFS_H #ifndef ___ASM_SPARC_STATFS_H
#define ___ASM_SPARC_STATFS_H #define ___ASM_SPARC_STATFS_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/statfs_64.h> #include <asm/statfs_64.h>
#else #else
#include <asm-sparc/statfs_32.h> #include <asm/statfs_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_STRING_H #ifndef ___ASM_SPARC_STRING_H
#define ___ASM_SPARC_STRING_H #define ___ASM_SPARC_STRING_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/string_64.h> #include <asm/string_64.h>
#else #else
#include <asm-sparc/string_32.h> #include <asm/string_32.h>
#endif #endif
#endif #endif
/* /*
* include/asm-sparc/sunbpp.h * include/asm/sunbpp.h
*/ */
#ifndef _ASM_SPARC_SUNBPP_H #ifndef _ASM_SPARC_SUNBPP_H
......
#ifndef __ASM_SPARC_SYSCALL_H
#define __ASM_SPARC_SYSCALL_H
#include <linux/kernel.h>
#include <linux/sched.h>
#include <asm/ptrace.h>
/* The system call number is given by the user in %g1 */
static inline long syscall_get_nr(struct task_struct *task,
struct pt_regs *regs)
{
int syscall_p = pt_regs_is_syscall(regs);
return (syscall_p ? regs->u_regs[UREG_G1] : -1L);
}
static inline void syscall_rollback(struct task_struct *task,
struct pt_regs *regs)
{
/* XXX This needs some thought. On Sparc we don't
* XXX save away the original %o0 value somewhere.
* XXX Instead we hold it in register %l5 at the top
* XXX level trap frame and pass this down to the signal
* XXX dispatch code which is the only place that value
* XXX ever was needed.
*/
}
#ifdef CONFIG_SPARC32
static inline bool syscall_has_error(struct pt_regs *regs)
{
return (regs->psr & PSR_C) ? true : false;
}
static inline void syscall_set_error(struct pt_regs *regs)
{
regs->psr |= PSR_C;
}
static inline void syscall_clear_error(struct pt_regs *regs)
{
regs->psr &= ~PSR_C;
}
#else
static inline bool syscall_has_error(struct pt_regs *regs)
{
return (regs->tstate & (TSTATE_XCARRY | TSTATE_ICARRY)) ? true : false;
}
static inline void syscall_set_error(struct pt_regs *regs)
{
regs->tstate |= (TSTATE_XCARRY | TSTATE_ICARRY);
}
static inline void syscall_clear_error(struct pt_regs *regs)
{
regs->tstate &= ~(TSTATE_XCARRY | TSTATE_ICARRY);
}
#endif
static inline long syscall_get_error(struct task_struct *task,
struct pt_regs *regs)
{
long val = regs->u_regs[UREG_I0];
return (syscall_has_error(regs) ? -val : 0);
}
static inline long syscall_get_return_value(struct task_struct *task,
struct pt_regs *regs)
{
long val = regs->u_regs[UREG_I0];
return val;
}
static inline void syscall_set_return_value(struct task_struct *task,
struct pt_regs *regs,
int error, long val)
{
if (error) {
syscall_set_error(regs);
regs->u_regs[UREG_I0] = -error;
} else {
syscall_clear_error(regs);
regs->u_regs[UREG_I0] = val;
}
}
static inline void syscall_get_arguments(struct task_struct *task,
struct pt_regs *regs,
unsigned int i, unsigned int n,
unsigned long *args)
{
int zero_extend = 0;
unsigned int j;
#ifdef CONFIG_SPARC64
if (test_tsk_thread_flag(task, TIF_32BIT))
zero_extend = 1;
#endif
for (j = 0; j < n; j++) {
unsigned long val = regs->u_regs[UREG_I0 + i + j];
if (zero_extend)
args[j] = (u32) val;
else
args[j] = val;
}
}
static inline void syscall_set_arguments(struct task_struct *task,
struct pt_regs *regs,
unsigned int i, unsigned int n,
const unsigned long *args)
{
unsigned int j;
for (j = 0; j < n; j++)
regs->u_regs[UREG_I0 + i + j] = args[j];
}
#endif /* __ASM_SPARC_SYSCALL_H */
#ifndef ___ASM_SPARC_SYSTEM_H #ifndef ___ASM_SPARC_SYSTEM_H
#define ___ASM_SPARC_SYSTEM_H #define ___ASM_SPARC_SYSTEM_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/system_64.h> #include <asm/system_64.h>
#else #else
#include <asm-sparc/system_32.h> #include <asm/system_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_THREAD_INFO_H #ifndef ___ASM_SPARC_THREAD_INFO_H
#define ___ASM_SPARC_THREAD_INFO_H #define ___ASM_SPARC_THREAD_INFO_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/thread_info_64.h> #include <asm/thread_info_64.h>
#else #else
#include <asm-sparc/thread_info_32.h> #include <asm/thread_info_32.h>
#endif #endif
#endif #endif
...@@ -130,7 +130,7 @@ BTFIXUPDEF_CALL(void, free_thread_info, struct thread_info *) ...@@ -130,7 +130,7 @@ BTFIXUPDEF_CALL(void, free_thread_info, struct thread_info *)
* thread information flag bit numbers * thread information flag bit numbers
*/ */
#define TIF_SYSCALL_TRACE 0 /* syscall trace active */ #define TIF_SYSCALL_TRACE 0 /* syscall trace active */
/* flag bit 1 is available */ #define TIF_NOTIFY_RESUME 1 /* callback before returning to user */
#define TIF_SIGPENDING 2 /* signal pending */ #define TIF_SIGPENDING 2 /* signal pending */
#define TIF_NEED_RESCHED 3 /* rescheduling necessary */ #define TIF_NEED_RESCHED 3 /* rescheduling necessary */
#define TIF_RESTORE_SIGMASK 4 /* restore signal mask in do_signal() */ #define TIF_RESTORE_SIGMASK 4 /* restore signal mask in do_signal() */
...@@ -142,12 +142,17 @@ BTFIXUPDEF_CALL(void, free_thread_info, struct thread_info *) ...@@ -142,12 +142,17 @@ BTFIXUPDEF_CALL(void, free_thread_info, struct thread_info *)
/* as above, but as bit values */ /* as above, but as bit values */
#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
#define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME)
#define _TIF_SIGPENDING (1<<TIF_SIGPENDING) #define _TIF_SIGPENDING (1<<TIF_SIGPENDING)
#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED) #define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)
#define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK) #define _TIF_RESTORE_SIGMASK (1<<TIF_RESTORE_SIGMASK)
#define _TIF_USEDFPU (1<<TIF_USEDFPU) #define _TIF_USEDFPU (1<<TIF_USEDFPU)
#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
#define _TIF_DO_NOTIFY_RESUME_MASK (_TIF_NOTIFY_RESUME | \
_TIF_SIGPENDING | \
_TIF_RESTORE_SIGMASK)
#endif /* __KERNEL__ */ #endif /* __KERNEL__ */
#endif /* _ASM_THREAD_INFO_H */ #endif /* _ASM_THREAD_INFO_H */
...@@ -219,7 +219,7 @@ register struct thread_info *current_thread_info_reg asm("g6"); ...@@ -219,7 +219,7 @@ register struct thread_info *current_thread_info_reg asm("g6");
* nop * nop
*/ */
#define TIF_SYSCALL_TRACE 0 /* syscall trace active */ #define TIF_SYSCALL_TRACE 0 /* syscall trace active */
/* flags bit 1 is available */ #define TIF_NOTIFY_RESUME 1 /* callback before returning to user */
#define TIF_SIGPENDING 2 /* signal pending */ #define TIF_SIGPENDING 2 /* signal pending */
#define TIF_NEED_RESCHED 3 /* rescheduling necessary */ #define TIF_NEED_RESCHED 3 /* rescheduling necessary */
#define TIF_PERFCTR 4 /* performance counters active */ #define TIF_PERFCTR 4 /* performance counters active */
...@@ -239,6 +239,7 @@ register struct thread_info *current_thread_info_reg asm("g6"); ...@@ -239,6 +239,7 @@ register struct thread_info *current_thread_info_reg asm("g6");
#define TIF_POLLING_NRFLAG 14 #define TIF_POLLING_NRFLAG 14
#define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE) #define _TIF_SYSCALL_TRACE (1<<TIF_SYSCALL_TRACE)
#define _TIF_NOTIFY_RESUME (1<<TIF_NOTIFY_RESUME)
#define _TIF_SIGPENDING (1<<TIF_SIGPENDING) #define _TIF_SIGPENDING (1<<TIF_SIGPENDING)
#define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED) #define _TIF_NEED_RESCHED (1<<TIF_NEED_RESCHED)
#define _TIF_PERFCTR (1<<TIF_PERFCTR) #define _TIF_PERFCTR (1<<TIF_PERFCTR)
...@@ -250,8 +251,9 @@ register struct thread_info *current_thread_info_reg asm("g6"); ...@@ -250,8 +251,9 @@ register struct thread_info *current_thread_info_reg asm("g6");
#define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG) #define _TIF_POLLING_NRFLAG (1<<TIF_POLLING_NRFLAG)
#define _TIF_USER_WORK_MASK ((0xff << TI_FLAG_WSAVED_SHIFT) | \ #define _TIF_USER_WORK_MASK ((0xff << TI_FLAG_WSAVED_SHIFT) | \
(_TIF_SIGPENDING | \ _TIF_DO_NOTIFY_RESUME_MASK | \
_TIF_NEED_RESCHED | _TIF_PERFCTR)) _TIF_NEED_RESCHED | _TIF_PERFCTR)
#define _TIF_DO_NOTIFY_RESUME_MASK (_TIF_NOTIFY_RESUME | _TIF_SIGPENDING)
/* /*
* Thread-synchronous status. * Thread-synchronous status.
......
#ifndef ___ASM_SPARC_TIMER_H #ifndef ___ASM_SPARC_TIMER_H
#define ___ASM_SPARC_TIMER_H #define ___ASM_SPARC_TIMER_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/timer_64.h> #include <asm/timer_64.h>
#else #else
#include <asm-sparc/timer_32.h> #include <asm/timer_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_TIMEX_H #ifndef ___ASM_SPARC_TIMEX_H
#define ___ASM_SPARC_TIMEX_H #define ___ASM_SPARC_TIMEX_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/timex_64.h> #include <asm/timex_64.h>
#else #else
#include <asm-sparc/timex_32.h> #include <asm/timex_32.h>
#endif #endif
#endif #endif
/* /*
* linux/include/asm-sparc/timex.h * linux/include/asm/timex.h
* *
* sparc architecture timex specifications * sparc architecture timex specifications
*/ */
......
/* /*
* linux/include/asm-sparc64/timex.h * linux/include/asm/timex.h
* *
* sparc64 architecture timex specifications * sparc64 architecture timex specifications
*/ */
......
#ifndef ___ASM_SPARC_TLB_H #ifndef ___ASM_SPARC_TLB_H
#define ___ASM_SPARC_TLB_H #define ___ASM_SPARC_TLB_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/tlb_64.h> #include <asm/tlb_64.h>
#else #else
#include <asm-sparc/tlb_32.h> #include <asm/tlb_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_TLBFLUSH_H #ifndef ___ASM_SPARC_TLBFLUSH_H
#define ___ASM_SPARC_TLBFLUSH_H #define ___ASM_SPARC_TLBFLUSH_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/tlbflush_64.h> #include <asm/tlbflush_64.h>
#else #else
#include <asm-sparc/tlbflush_32.h> #include <asm/tlbflush_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_TOPOLOGY_H #ifndef ___ASM_SPARC_TOPOLOGY_H
#define ___ASM_SPARC_TOPOLOGY_H #define ___ASM_SPARC_TOPOLOGY_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/topology_64.h> #include <asm/topology_64.h>
#else #else
#include <asm-sparc/topology_32.h> #include <asm/topology_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_UACCESS_H #ifndef ___ASM_SPARC_UACCESS_H
#define ___ASM_SPARC_UACCESS_H #define ___ASM_SPARC_UACCESS_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/uaccess_64.h> #include <asm/uaccess_64.h>
#else #else
#include <asm-sparc/uaccess_32.h> #include <asm/uaccess_32.h>
#endif #endif
#endif #endif
#ifndef ___ASM_SPARC_UNISTD_H #ifndef ___ASM_SPARC_UNISTD_H
#define ___ASM_SPARC_UNISTD_H #define ___ASM_SPARC_UNISTD_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/unistd_64.h> #include <asm/unistd_64.h>
#else #else
#include <asm-sparc/unistd_32.h> #include <asm/unistd_32.h>
#endif #endif
#endif #endif
/* /*
* include/asm-sparc64/utrap.h * include/asm/utrap.h
* *
* Copyright (C) 1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz) * Copyright (C) 1997 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
*/ */
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
#include <asm/head.h> #include <asm/head.h>
/* /*
* asm-sparc/vaddrs.h: Here we define the virtual addresses at * asm/vaddrs.h: Here we define the virtual addresses at
* which important things will be mapped. * which important things will be mapped.
* *
* Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
......
#ifndef ___ASM_SPARC_XOR_H #ifndef ___ASM_SPARC_XOR_H
#define ___ASM_SPARC_XOR_H #define ___ASM_SPARC_XOR_H
#if defined(__sparc__) && defined(__arch64__) #if defined(__sparc__) && defined(__arch64__)
#include <asm-sparc/xor_64.h> #include <asm/xor_64.h>
#else #else
#include <asm-sparc/xor_32.h> #include <asm/xor_32.h>
#endif #endif
#endif #endif
/* /*
* include/asm-sparc/xor.h * include/asm/xor.h
* *
* Optimized RAID-5 checksumming functions for 32-bit Sparc. * Optimized RAID-5 checksumming functions for 32-bit Sparc.
* *
......
/* /*
* include/asm-sparc64/xor.h * include/asm/xor.h
* *
* High speed xor_block operation for RAID4/5 utilizing the * High speed xor_block operation for RAID4/5 utilizing the
* UltraSparc Visual Instruction Set and Niagara block-init * UltraSparc Visual Instruction Set and Niagara block-init
......
...@@ -1196,8 +1196,9 @@ sys_rt_sigreturn: ...@@ -1196,8 +1196,9 @@ sys_rt_sigreturn:
be 1f be 1f
nop nop
add %sp, STACKFRAME_SZ, %o0
call syscall_trace call syscall_trace
nop mov 1, %o1
1: 1:
/* We are returning to a signal handler. */ /* We are returning to a signal handler. */
...@@ -1287,8 +1288,12 @@ linux_fast_syscall: ...@@ -1287,8 +1288,12 @@ linux_fast_syscall:
mov %i3, %o3 mov %i3, %o3
linux_syscall_trace: linux_syscall_trace:
add %sp, STACKFRAME_SZ, %o0
call syscall_trace call syscall_trace
nop mov 0, %o1
cmp %o0, 0
bne 3f
mov -ENOSYS, %o0
mov %i0, %o0 mov %i0, %o0
mov %i1, %o1 mov %i1, %o1
mov %i2, %o2 mov %i2, %o2
...@@ -1337,6 +1342,7 @@ syscall_is_too_hard: ...@@ -1337,6 +1342,7 @@ syscall_is_too_hard:
call %l7 call %l7
mov %i5, %o5 mov %i5, %o5
3:
st %o0, [%sp + STACKFRAME_SZ + PT_I0] st %o0, [%sp + STACKFRAME_SZ + PT_I0]
ret_sys_call: ret_sys_call:
...@@ -1374,6 +1380,8 @@ ret_sys_call: ...@@ -1374,6 +1380,8 @@ ret_sys_call:
st %l2, [%sp + STACKFRAME_SZ + PT_NPC] st %l2, [%sp + STACKFRAME_SZ + PT_NPC]
linux_syscall_trace2: linux_syscall_trace2:
add %sp, STACKFRAME_SZ, %o0
mov 1, %o1
call syscall_trace call syscall_trace
add %l1, 0x4, %l2 /* npc = npc+4 */ add %l1, 0x4, %l2 /* npc = npc+4 */
st %l1, [%sp + STACKFRAME_SZ + PT_PC] st %l1, [%sp + STACKFRAME_SZ + PT_PC]
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include <linux/signal.h> #include <linux/signal.h>
#include <linux/regset.h> #include <linux/regset.h>
#include <linux/elf.h> #include <linux/elf.h>
#include <linux/tracehook.h>
#include <asm/pgtable.h> #include <asm/pgtable.h>
#include <asm/system.h> #include <asm/system.h>
...@@ -450,21 +451,16 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) ...@@ -450,21 +451,16 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
return ret; return ret;
} }
asmlinkage void syscall_trace(void) asmlinkage int syscall_trace(struct pt_regs *regs, int syscall_exit_p)
{ {
if (!test_thread_flag(TIF_SYSCALL_TRACE)) int ret = 0;
return;
if (!(current->ptrace & PT_PTRACED)) if (test_thread_flag(TIF_SYSCALL_TRACE)) {
return; if (syscall_exit_p)
ptrace_notify(SIGTRAP | ((current->ptrace & PT_TRACESYSGOOD) tracehook_report_syscall_exit(regs, 0);
? 0x80 : 0)); else
/* ret = tracehook_report_syscall_entry(regs);
* this isn't the same as continuing with a signal, but it will do
* for normal use. strace only continues with a signal if the
* stopping signal is not SIGTRAP. -brl
*/
if (current->exit_code) {
send_sig (current->exit_code, current, 1);
current->exit_code = 0;
} }
return ret;
} }
...@@ -69,12 +69,13 @@ ret_trap_lockless_ipi: ...@@ -69,12 +69,13 @@ ret_trap_lockless_ipi:
ld [%curptr + TI_FLAGS], %g2 ld [%curptr + TI_FLAGS], %g2
signal_p: signal_p:
andcc %g2, (_TIF_SIGPENDING|_TIF_RESTORE_SIGMASK), %g0 andcc %g2, _TIF_DO_NOTIFY_RESUME_MASK, %g0
bz,a ret_trap_continue bz,a ret_trap_continue
ld [%sp + STACKFRAME_SZ + PT_PSR], %t_psr ld [%sp + STACKFRAME_SZ + PT_PSR], %t_psr
mov %g2, %o2
mov %l5, %o1 mov %l5, %o1
call do_signal call do_notify_resume
add %sp, STACKFRAME_SZ, %o0 ! pt_regs ptr add %sp, STACKFRAME_SZ, %o0 ! pt_regs ptr
/* Fall through. */ /* Fall through. */
......
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include <linux/smp.h> #include <linux/smp.h>
#include <linux/binfmts.h> /* do_coredum */ #include <linux/binfmts.h> /* do_coredum */
#include <linux/bitops.h> #include <linux/bitops.h>
#include <linux/tracehook.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/ptrace.h> #include <asm/ptrace.h>
...@@ -513,7 +514,7 @@ static inline void syscall_restart(unsigned long orig_i0, struct pt_regs *regs, ...@@ -513,7 +514,7 @@ static inline void syscall_restart(unsigned long orig_i0, struct pt_regs *regs,
* want to handle. Thus you cannot kill init even with a SIGKILL even by * want to handle. Thus you cannot kill init even with a SIGKILL even by
* mistake. * mistake.
*/ */
asmlinkage void do_signal(struct pt_regs * regs, unsigned long orig_i0) static void do_signal(struct pt_regs *regs, unsigned long orig_i0)
{ {
struct k_sigaction ka; struct k_sigaction ka;
int restart_syscall; int restart_syscall;
...@@ -552,6 +553,8 @@ asmlinkage void do_signal(struct pt_regs * regs, unsigned long orig_i0) ...@@ -552,6 +553,8 @@ asmlinkage void do_signal(struct pt_regs * regs, unsigned long orig_i0)
*/ */
if (test_thread_flag(TIF_RESTORE_SIGMASK)) if (test_thread_flag(TIF_RESTORE_SIGMASK))
clear_thread_flag(TIF_RESTORE_SIGMASK); clear_thread_flag(TIF_RESTORE_SIGMASK);
tracehook_signal_handler(signr, &info, &ka, regs, 0);
return; return;
} }
if (restart_syscall && if (restart_syscall &&
...@@ -579,6 +582,17 @@ asmlinkage void do_signal(struct pt_regs * regs, unsigned long orig_i0) ...@@ -579,6 +582,17 @@ asmlinkage void do_signal(struct pt_regs * regs, unsigned long orig_i0)
} }
} }
void do_notify_resume(struct pt_regs *regs, unsigned long orig_i0,
unsigned long thread_info_flags)
{
if (thread_info_flags & (_TIF_SIGPENDING | _TIF_RESTORE_SIGMASK))
do_signal(regs, orig_i0);
if (thread_info_flags & _TIF_NOTIFY_RESUME) {
clear_thread_flag(TIF_NOTIFY_RESUME);
tracehook_notify_resume(regs);
}
}
asmlinkage int asmlinkage int
do_sys_sigstack(struct sigstack __user *ssptr, struct sigstack __user *ossptr, do_sys_sigstack(struct sigstack __user *ssptr, struct sigstack __user *ossptr,
unsigned long sp) unsigned long sp)
......
...@@ -17,6 +17,7 @@ config SPARC64 ...@@ -17,6 +17,7 @@ config SPARC64
select HAVE_LMB select HAVE_LMB
select HAVE_ARCH_KGDB select HAVE_ARCH_KGDB
select USE_GENERIC_SMP_HELPERS if SMP select USE_GENERIC_SMP_HELPERS if SMP
select HAVE_ARCH_TRACEHOOK
config GENERIC_TIME config GENERIC_TIME
bool bool
......
#include <asm-sparc/unistd.h> #include <asm/unistd_32.h>
unsigned sparc32_dir_class[] = { unsigned sparc32_dir_class[] = {
#include <asm-generic/audit_dir_write.h> #include <asm-generic/audit_dir_write.h>
......
...@@ -22,8 +22,7 @@ extern void do_notify_resume(struct pt_regs *regs, ...@@ -22,8 +22,7 @@ extern void do_notify_resume(struct pt_regs *regs,
unsigned long orig_i0, unsigned long orig_i0,
unsigned long thread_info_flags); unsigned long thread_info_flags);
extern asmlinkage void syscall_trace(struct pt_regs *regs, extern asmlinkage int syscall_trace(struct pt_regs *regs, int syscall_exit_p);
int syscall_exit_p);
extern void bad_trap_tl1(struct pt_regs *regs, long lvl); extern void bad_trap_tl1(struct pt_regs *regs, long lvl);
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
#include <linux/audit.h> #include <linux/audit.h>
#include <linux/signal.h> #include <linux/signal.h>
#include <linux/regset.h> #include <linux/regset.h>
#include <linux/tracehook.h>
#include <linux/compat.h> #include <linux/compat.h>
#include <linux/elf.h> #include <linux/elf.h>
...@@ -1049,8 +1050,10 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) ...@@ -1049,8 +1050,10 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data)
return ret; return ret;
} }
asmlinkage void syscall_trace(struct pt_regs *regs, int syscall_exit_p) asmlinkage int syscall_trace(struct pt_regs *regs, int syscall_exit_p)
{ {
int ret = 0;
/* do the secure computing check first */ /* do the secure computing check first */
secure_computing(regs->u_regs[UREG_G1]); secure_computing(regs->u_regs[UREG_G1]);
...@@ -1064,27 +1067,14 @@ asmlinkage void syscall_trace(struct pt_regs *regs, int syscall_exit_p) ...@@ -1064,27 +1067,14 @@ asmlinkage void syscall_trace(struct pt_regs *regs, int syscall_exit_p)
audit_syscall_exit(result, regs->u_regs[UREG_I0]); audit_syscall_exit(result, regs->u_regs[UREG_I0]);
} }
if (!(current->ptrace & PT_PTRACED)) if (test_thread_flag(TIF_SYSCALL_TRACE)) {
goto out; if (syscall_exit_p)
tracehook_report_syscall_exit(regs, 0);
if (!test_thread_flag(TIF_SYSCALL_TRACE)) else
goto out; ret = tracehook_report_syscall_entry(regs);
ptrace_notify(SIGTRAP | ((current->ptrace & PT_TRACESYSGOOD)
? 0x80 : 0));
/*
* this isn't the same as continuing with a signal, but it will do
* for normal use. strace only continues with a signal if the
* stopping signal is not SIGTRAP. -brl
*/
if (current->exit_code) {
send_sig(current->exit_code, current, 1);
current->exit_code = 0;
} }
out: if (unlikely(current->audit_context) && !syscall_exit_p && !ret)
if (unlikely(current->audit_context) && !syscall_exit_p)
audit_syscall_entry((test_thread_flag(TIF_32BIT) ? audit_syscall_entry((test_thread_flag(TIF_32BIT) ?
AUDIT_ARCH_SPARC : AUDIT_ARCH_SPARC :
AUDIT_ARCH_SPARC64), AUDIT_ARCH_SPARC64),
...@@ -1093,4 +1083,6 @@ asmlinkage void syscall_trace(struct pt_regs *regs, int syscall_exit_p) ...@@ -1093,4 +1083,6 @@ asmlinkage void syscall_trace(struct pt_regs *regs, int syscall_exit_p)
regs->u_regs[UREG_I1], regs->u_regs[UREG_I1],
regs->u_regs[UREG_I2], regs->u_regs[UREG_I2],
regs->u_regs[UREG_I3]); regs->u_regs[UREG_I3]);
return ret;
} }
...@@ -46,7 +46,7 @@ __handle_user_windows: ...@@ -46,7 +46,7 @@ __handle_user_windows:
wrpr %g0, RTRAP_PSTATE_IRQOFF, %pstate wrpr %g0, RTRAP_PSTATE_IRQOFF, %pstate
ldx [%g6 + TI_FLAGS], %l0 ldx [%g6 + TI_FLAGS], %l0
1: andcc %l0, _TIF_SIGPENDING, %g0 1: andcc %l0, _TIF_DO_NOTIFY_RESUME_MASK, %g0
be,pt %xcc, __handle_user_windows_continue be,pt %xcc, __handle_user_windows_continue
nop nop
mov %l5, %o1 mov %l5, %o1
...@@ -86,7 +86,7 @@ __handle_perfctrs: ...@@ -86,7 +86,7 @@ __handle_perfctrs:
wrpr %g0, RTRAP_PSTATE, %pstate wrpr %g0, RTRAP_PSTATE, %pstate
wrpr %g0, RTRAP_PSTATE_IRQOFF, %pstate wrpr %g0, RTRAP_PSTATE_IRQOFF, %pstate
ldx [%g6 + TI_FLAGS], %l0 ldx [%g6 + TI_FLAGS], %l0
1: andcc %l0, _TIF_SIGPENDING, %g0 1: andcc %l0, _TIF_DO_NOTIFY_RESUME_MASK, %g0
be,pt %xcc, __handle_perfctrs_continue be,pt %xcc, __handle_perfctrs_continue
sethi %hi(TSTATE_PEF), %o0 sethi %hi(TSTATE_PEF), %o0
...@@ -195,7 +195,7 @@ __handle_preemption_continue: ...@@ -195,7 +195,7 @@ __handle_preemption_continue:
andcc %l1, %o0, %g0 andcc %l1, %o0, %g0
andcc %l0, _TIF_NEED_RESCHED, %g0 andcc %l0, _TIF_NEED_RESCHED, %g0
bne,pn %xcc, __handle_preemption bne,pn %xcc, __handle_preemption
andcc %l0, _TIF_SIGPENDING, %g0 andcc %l0, _TIF_DO_NOTIFY_RESUME_MASK, %g0
bne,pn %xcc, __handle_signal bne,pn %xcc, __handle_signal
__handle_signal_continue: __handle_signal_continue:
ldub [%g6 + TI_WSAVED], %o2 ldub [%g6 + TI_WSAVED], %o2
......
...@@ -17,11 +17,13 @@ ...@@ -17,11 +17,13 @@
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/wait.h> #include <linux/wait.h>
#include <linux/ptrace.h> #include <linux/ptrace.h>
#include <linux/tracehook.h>
#include <linux/unistd.h> #include <linux/unistd.h>
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/tty.h> #include <linux/tty.h>
#include <linux/binfmts.h> #include <linux/binfmts.h>
#include <linux/bitops.h> #include <linux/bitops.h>
#include <linux/tracehook.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/ptrace.h> #include <asm/ptrace.h>
...@@ -574,6 +576,8 @@ static void do_signal(struct pt_regs *regs, unsigned long orig_i0) ...@@ -574,6 +576,8 @@ static void do_signal(struct pt_regs *regs, unsigned long orig_i0)
* clear the TS_RESTORE_SIGMASK flag. * clear the TS_RESTORE_SIGMASK flag.
*/ */
current_thread_info()->status &= ~TS_RESTORE_SIGMASK; current_thread_info()->status &= ~TS_RESTORE_SIGMASK;
tracehook_signal_handler(signr, &info, &ka, regs, 0);
return; return;
} }
if (restart_syscall && if (restart_syscall &&
...@@ -605,4 +609,8 @@ void do_notify_resume(struct pt_regs *regs, unsigned long orig_i0, unsigned long ...@@ -605,4 +609,8 @@ void do_notify_resume(struct pt_regs *regs, unsigned long orig_i0, unsigned long
{ {
if (thread_info_flags & _TIF_SIGPENDING) if (thread_info_flags & _TIF_SIGPENDING)
do_signal(regs, orig_i0); do_signal(regs, orig_i0);
if (thread_info_flags & _TIF_NOTIFY_RESUME) {
clear_thread_flag(TIF_NOTIFY_RESUME);
tracehook_notify_resume(regs);
}
} }
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include <linux/binfmts.h> #include <linux/binfmts.h>
#include <linux/compat.h> #include <linux/compat.h>
#include <linux/bitops.h> #include <linux/bitops.h>
#include <linux/tracehook.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/ptrace.h> #include <asm/ptrace.h>
...@@ -794,6 +795,8 @@ void do_signal32(sigset_t *oldset, struct pt_regs * regs, ...@@ -794,6 +795,8 @@ void do_signal32(sigset_t *oldset, struct pt_regs * regs,
* clear the TS_RESTORE_SIGMASK flag. * clear the TS_RESTORE_SIGMASK flag.
*/ */
current_thread_info()->status &= ~TS_RESTORE_SIGMASK; current_thread_info()->status &= ~TS_RESTORE_SIGMASK;
tracehook_signal_handler(signr, &info, &ka, regs, 0);
return; return;
} }
if (restart_syscall && if (restart_syscall &&
......
...@@ -162,6 +162,8 @@ linux_syscall_trace32: ...@@ -162,6 +162,8 @@ linux_syscall_trace32:
add %sp, PTREGS_OFF, %o0 add %sp, PTREGS_OFF, %o0
call syscall_trace call syscall_trace
clr %o1 clr %o1
brnz,pn %o0, 3f
mov -ENOSYS, %o0
srl %i0, 0, %o0 srl %i0, 0, %o0
srl %i4, 0, %o4 srl %i4, 0, %o4
srl %i1, 0, %o1 srl %i1, 0, %o1
...@@ -173,6 +175,8 @@ linux_syscall_trace: ...@@ -173,6 +175,8 @@ linux_syscall_trace:
add %sp, PTREGS_OFF, %o0 add %sp, PTREGS_OFF, %o0
call syscall_trace call syscall_trace
clr %o1 clr %o1
brnz,pn %o0, 3f
mov -ENOSYS, %o0
mov %i0, %o0 mov %i0, %o0
mov %i1, %o1 mov %i1, %o1
mov %i2, %o2 mov %i2, %o2
......
# dummy file to avoid breaking make headers_install
# dummy file to avoid breaking make headers_install
#include <asm-sparc/agp.h>
#include <asm-sparc/apb.h>
#include <asm-sparc/asi.h>
#include <asm-sparc/atomic.h>
#include <asm-sparc/auxio.h>
#include <asm-sparc/auxvec.h>
#include <asm-sparc/backoff.h>
#include <asm-sparc/bbc.h>
#include <asm-sparc/bitops.h>
#include <asm-sparc/bpp.h>
#include <asm-sparc/bug.h>
#include <asm-sparc/bugs.h>
#include <asm-sparc/byteorder.h>
#include <asm-sparc/cache.h>
#include <asm-sparc/cacheflush.h>
#include <asm-sparc/chafsr.h>
#include <asm-sparc/checksum.h>
#include <asm-sparc/chmctrl.h>
#include <asm-sparc/cmt.h>
#include <asm-sparc/compat.h>
#include <asm-sparc/compat_signal.h>
#include <asm-sparc/cpudata.h>
#include <asm-sparc/cputime.h>
#include <asm-sparc/current.h>
#include <asm-sparc/dcr.h>
#include <asm-sparc/dcu.h>
#include <asm-sparc/delay.h>
#include <asm-sparc/device.h>
#include <asm-sparc/display7seg.h>
#include <asm-sparc/div64.h>
#include <asm-sparc/dma-mapping.h>
#include <asm-sparc/dma.h>
#include <asm-sparc/ebus.h>
#include <asm-sparc/elf.h>
#include <asm-sparc/emergency-restart.h>
#include <asm-sparc/envctrl.h>
#include <asm-sparc/errno.h>
#include <asm-sparc/estate.h>
#include <asm-sparc/fb.h>
#include <asm-sparc/fbio.h>
#include <asm-sparc/fcntl.h>
#include <asm-sparc/fhc.h>
#include <asm-sparc/floppy.h>
#include <asm-sparc/fpumacro.h>
#include <asm-sparc/futex.h>
#include <asm-sparc/hardirq.h>
#include <asm-sparc/head.h>
#include <asm-sparc/hugetlb.h>
#include <asm-sparc/hvtramp.h>
#include <asm-sparc/hw_irq.h>
#include <asm-sparc/hypervisor.h>
#include <asm-sparc/ide.h>
#include <asm-sparc/idprom.h>
#include <asm-sparc/intr_queue.h>
#include <asm-sparc/io.h>
#include <asm-sparc/ioctl.h>
#include <asm-sparc/ioctls.h>
#include <asm-sparc/iommu.h>
#include <asm-sparc/ipcbuf.h>
#include <asm-sparc/irq.h>
#include <asm-sparc/irq_regs.h>
#include <asm-sparc/irqflags.h>
#include <asm-sparc/kdebug.h>
#include <asm-sparc/kgdb.h>
#include <asm-sparc/kmap_types.h>
#include <asm-sparc/kprobes.h>
#include <asm-sparc/ldc.h>
#include <asm-sparc/linkage.h>
#include <asm-sparc/lmb.h>
#include <asm-generic/local.h>
#include <asm-sparc/lsu.h>
#include <asm-sparc/mc146818rtc.h>
#include <asm-sparc/mdesc.h>
#include <asm-sparc/mman.h>
#include <asm-sparc/mmu.h>
#include <asm-sparc/mmu_context.h>
#include <asm-sparc/mmzone.h>
#include <asm-sparc/module.h>
#include <asm-sparc/mostek.h>
#include <asm-sparc/msgbuf.h>
#include <asm-sparc/mutex.h>
#include <asm-sparc/ns87303.h>
#include <asm-sparc/of_device.h>
#include <asm-sparc/of_platform.h>
#include <asm-sparc/openprom.h>
#include <asm-sparc/openpromio.h>
#include <asm-sparc/oplib.h>
#include <asm-sparc/page.h>
#include <asm-sparc/param.h>
#include <asm-sparc/parport.h>
#include <asm-sparc/pci.h>
#include <asm-sparc/percpu.h>
#include <asm-sparc/perfctr.h>
#include <asm-sparc/pgalloc.h>
#include <asm-sparc/pgtable.h>
#include <asm-sparc/pil.h>
#include <asm-sparc/poll.h>
#include <asm-sparc/posix_types.h>
#include <asm-sparc/processor.h>
#include <asm-sparc/prom.h>
#include <asm-sparc/psrcompat.h>
#include <asm-sparc/pstate.h>
#include <asm-sparc/ptrace.h>
#include <asm-sparc/reboot.h>
#include <asm-sparc/reg.h>
#include <asm-sparc/resource.h>
#include <asm-sparc/rtc.h>
#include <asm-sparc/rwsem-const.h>
#include <asm-sparc/rwsem.h>
#include <asm-sparc/sbus.h>
#include <asm-sparc/scatterlist.h>
#include <asm-sparc/scratchpad.h>
#include <asm-sparc/seccomp.h>
#include <asm-sparc/sections.h>
#include <asm-sparc/sembuf.h>
#include <asm-sparc/setup.h>
#include <asm-sparc/sfafsr.h>
#include <asm-sparc/sfp-machine.h>
#include <asm-sparc/shmbuf.h>
#include <asm-sparc/shmparam.h>
#include <asm-sparc/sigcontext.h>
#include <asm-sparc/siginfo.h>
#include <asm-sparc/signal.h>
#include <asm-sparc/smp.h>
#include <asm-sparc/socket.h>
#include <asm-sparc/sockios.h>
#include <asm-sparc/sparsemem.h>
#include <asm-sparc/spinlock.h>
#include <asm-sparc/spinlock_types.h>
#include <asm-sparc/spitfire.h>
#include <asm-sparc/sstate.h>
#include <asm-sparc/stacktrace.h>
#include <asm-sparc/starfire.h>
#include <asm-sparc/stat.h>
#include <asm-sparc/statfs.h>
#include <asm-sparc/string.h>
#include <asm-sparc/sunbpp.h>
#include <asm-sparc/syscalls.h>
#include <asm-sparc/system.h>
#include <asm-sparc/termbits.h>
#include <asm-sparc/termios.h>
#include <asm-sparc/thread_info.h>
#include <asm-sparc/timer.h>
#include <asm-sparc/timex.h>
#include <asm-sparc/tlb.h>
#include <asm-sparc/tlbflush.h>
#include <asm-sparc/topology.h>
#include <asm-sparc/tsb.h>
#include <asm-sparc/ttable.h>
#include <asm-sparc/types.h>
#include <asm-sparc/uaccess.h>
#include <asm-sparc/uctx.h>
#include <asm-sparc/unaligned.h>
#include <asm-sparc/unistd.h>
#include <asm-sparc/upa.h>
#include <asm-sparc/user.h>
#include <asm-sparc/utrap.h>
#include <asm-sparc/vga.h>
#include <asm-sparc/vio.h>
#include <asm-sparc/visasm.h>
#include <asm-sparc/watchdog.h>
#include <asm-sparc/xor.h>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment