Merge master.kernel.org:/pub/scm/linux/kernel/git/paulus/ppc64-2.6

This commit is contained in:
Linus Torvalds 2005-09-09 10:38:02 -07:00
commit 3aed77bc84
65 changed files with 530 additions and 529 deletions

View file

@ -1,10 +1,10 @@
#ifndef _ASM_POWERPC_8253PIT_H
#define _ASM_POWERPC_8253PIT_H
/*
* 8253/8254 Programmable Interval Timer
*/
#ifndef _8253PIT_H
#define _8253PIT_H
#define PIT_TICK_RATE 1193182UL
#endif
#endif /* _ASM_POWERPC_8253PIT_H */

View file

@ -1,10 +1,8 @@
#ifndef AGP_H
#define AGP_H 1
#ifndef _ASM_POWERPC_AGP_H
#define _ASM_POWERPC_AGP_H
#include <asm/io.h>
/* nothing much needed here */
#define map_page_into_agp(page)
#define unmap_page_from_agp(page)
#define flush_agp_mappings()
@ -20,4 +18,4 @@
#define free_gatt_pages(table, order) \
free_pages((unsigned long)(table), (order))
#endif
#endif /* _ASM_POWERPC_AGP_H */

View file

@ -1,5 +1,5 @@
#ifndef _POWERPC_BUGS_H
#define _POWERPC_BUGS_H
#ifndef _ASM_POWERPC_BUGS_H
#define _ASM_POWERPC_BUGS_H
/*
* This program is free software; you can redistribute it and/or
@ -13,6 +13,6 @@
* architecture-dependent bugs.
*/
extern void check_bugs(void);
static inline void check_bugs(void) { }
#endif /* _POWERPC_BUGS_H */
#endif /* _ASM_POWERPC_BUGS_H */

View file

@ -1,5 +1,5 @@
#ifndef _PPC_ERRNO_H
#define _PPC_ERRNO_H
#ifndef _ASM_POWERPC_ERRNO_H
#define _ASM_POWERPC_ERRNO_H
#include <asm-generic/errno.h>
@ -8,4 +8,4 @@
#define _LAST_ERRNO 516
#endif
#endif /* _ASM_POWERPC_ERRNO_H */

View file

@ -1,5 +1,5 @@
#ifndef _PPC_IOCTL_H
#define _PPC_IOCTL_H
#ifndef _ASM_POWERPC_IOCTL_H
#define _ASM_POWERPC_IOCTL_H
/*
@ -66,4 +66,4 @@ extern unsigned int __invalid_size_argument_for_IOC;
#define IOCSIZE_MASK (_IOC_SIZEMASK << _IOC_SIZESHIFT)
#define IOCSIZE_SHIFT (_IOC_SIZESHIFT)
#endif
#endif /* _ASM_POWERPC_IOCTL_H */

View file

@ -1,5 +1,5 @@
#ifndef _ASM_PPC_IOCTLS_H
#define _ASM_PPC_IOCTLS_H
#ifndef _ASM_POWERPC_IOCTLS_H
#define _ASM_POWERPC_IOCTLS_H
#include <asm/ioctl.h>
@ -104,4 +104,4 @@
#define TIOCMIWAIT 0x545C /* wait for a change on serial input line(s) */
#define TIOCGICOUNT 0x545D /* read serial port inline interrupt counts */
#endif /* _ASM_PPC_IOCTLS_H */
#endif /* _ASM_POWERPC_IOCTLS_H */

View file

@ -1,6 +1,6 @@
#ifndef __ASM_LINKAGE_H
#define __ASM_LINKAGE_H
#ifndef _ASM_POWERPC_LINKAGE_H
#define _ASM_POWERPC_LINKAGE_H
/* Nothing to see here... */
#endif
#endif /* _ASM_POWERPC_LINKAGE_H */

View file

@ -1,5 +1,5 @@
#ifndef _POWERPC_MC146818RTC_H
#define _POWERPC_MC146818RTC_H
#ifndef _ASM_POWERPC_MC146818RTC_H
#define _ASM_POWERPC_MC146818RTC_H
/*
* Machine dependent access functions for RTC registers.
@ -33,4 +33,4 @@ outb_p((val),RTC_PORT(1)); \
})
#endif /* __KERNEL__ */
#endif /* _POWERPC_MC146818RTC_H */
#endif /* _ASM_POWERPC_MC146818RTC_H */

View file

@ -1,5 +1,5 @@
#ifndef _POWERPC_MMAN_H
#define _POWERPC_MMAN_H
#ifndef _ASM_POWERPC_MMAN_H
#define _ASM_POWERPC_MMAN_H
/*
* This program is free software; you can redistribute it and/or
@ -49,4 +49,4 @@
#define MAP_ANON MAP_ANONYMOUS
#define MAP_FILE 0
#endif /* _POWERPC_MMAN_H */
#endif /* _ASM_POWERPC_MMAN_H */

View file

@ -1,5 +1,5 @@
#ifndef _POWERPC_MODULE_H
#define _POWERPC_MODULE_H
#ifndef _ASM_POWERPC_MODULE_H
#define _ASM_POWERPC_MODULE_H
/*
* This program is free software; you can redistribute it and/or
@ -74,4 +74,4 @@ struct exception_table_entry;
void sort_ex_table(struct exception_table_entry *start,
struct exception_table_entry *finish);
#endif /* _POWERPC_MODULE_H */
#endif /* _ASM_POWERPC_MODULE_H */

View file

@ -1,17 +1,25 @@
#ifndef _PPC_MSGBUF_H
#define _PPC_MSGBUF_H
#ifndef _ASM_POWERPC_MSGBUF_H
#define _ASM_POWERPC_MSGBUF_H
/*
* The msqid64_ds structure for the PPC architecture.
* The msqid64_ds structure for the PowerPC architecture.
* Note extra padding because this structure is passed back and forth
* between kernel and user space.
*/
struct msqid64_ds {
struct ipc64_perm msg_perm;
#ifndef __powerpc64__
unsigned int __unused1;
#endif
__kernel_time_t msg_stime; /* last msgsnd time */
#ifndef __powerpc64__
unsigned int __unused2;
#endif
__kernel_time_t msg_rtime; /* last msgrcv time */
#ifndef __powerpc64__
unsigned int __unused3;
#endif
__kernel_time_t msg_ctime; /* last change time */
unsigned long msg_cbytes; /* current number of bytes on queue */
unsigned long msg_qnum; /* number of messages in queue */
@ -22,4 +30,4 @@ struct msqid64_ds {
unsigned long __unused5;
};
#endif /* _PPC_MSGBUF_H */
#endif /* _ASM_POWERPC_MSGBUF_H */

View file

@ -1,14 +1,14 @@
#ifndef _ASM_POWERPC_NAMEI_H
#define _ASM_POWERPC_NAMEI_H
#ifdef __KERNEL__
/*
* include/asm-ppc/namei.h
* Adapted from include/asm-alpha/namei.h
*
* Included from fs/namei.c
*/
#ifdef __KERNEL__
#ifndef __PPC_NAMEI_H
#define __PPC_NAMEI_H
/* This dummy routine maybe changed to something useful
* for /usr/gnemul/ emulation stuff.
* Look at asm-sparc/namei.h for details.
@ -16,5 +16,5 @@
#define __emul_prefix() NULL
#endif /* __PPC_NAMEI_H */
#endif /* __KERNEL__ */
#endif /* __KERNEL__ */
#endif /* _ASM_POWERPC_NAMEI_H */

View file

@ -1,10 +1,10 @@
#ifndef _ASM_PPC_PARAM_H
#define _ASM_PPC_PARAM_H
#ifndef _ASM_POWERPC_PARAM_H
#define _ASM_POWERPC_PARAM_H
#include <linux/config.h>
#ifdef __KERNEL__
#define HZ CONFIG_HZ /* internal timer frequency */
#define HZ CONFIG_HZ /* internal kernel timer frequency */
#define USER_HZ 100 /* for user interfaces in "ticks" */
#define CLOCKS_PER_SEC (USER_HZ) /* frequency at which times() counts */
#endif /* __KERNEL__ */
@ -21,4 +21,4 @@
#define MAXHOSTNAMELEN 64 /* max length of hostname */
#endif
#endif /* _ASM_POWERPC_PARAM_H */

View file

@ -1,5 +1,5 @@
#ifndef __PPC_POLL_H
#define __PPC_POLL_H
#ifndef _ASM_POWERPC_POLL_H
#define _ASM_POWERPC_POLL_H
#define POLLIN 0x0001
#define POLLPRI 0x0002
@ -20,4 +20,4 @@ struct pollfd {
short revents;
};
#endif
#endif /* _ASM_POWERPC_POLL_H */

View file

@ -1,5 +1,5 @@
#ifndef _POWERPC_SEMBUF_H
#define _POWERPC_SEMBUF_H
#ifndef _ASM_POWERPC_SEMBUF_H
#define _ASM_POWERPC_SEMBUF_H
/*
* This program is free software; you can redistribute it and/or
@ -33,4 +33,4 @@ struct semid64_ds {
unsigned long __unused4;
};
#endif /* _POWERPC_SEMBUF_H */
#endif /* _ASM_POWERPC_SEMBUF_H */

View file

@ -0,0 +1,9 @@
#ifndef _ASM_POWERPC_SETUP_H
#define _ASM_POWERPC_SETUP_H
#ifdef __KERNEL__
#define COMMAND_LINE_SIZE 512
#endif /* __KERNEL__ */
#endif /* _ASM_POWERPC_SETUP_H */

View file

@ -1,5 +1,5 @@
#ifndef _POWERPC_SHMBUF_H
#define _POWERPC_SHMBUF_H
#ifndef _ASM_POWERPC_SHMBUF_H
#define _ASM_POWERPC_SHMBUF_H
/*
* This program is free software; you can redistribute it and/or
@ -21,19 +21,19 @@
struct shmid64_ds {
struct ipc64_perm shm_perm; /* operation perms */
#ifndef __power64__
#ifndef __powerpc64__
unsigned long __unused1;
#endif
__kernel_time_t shm_atime; /* last attach time */
#ifndef __power64__
#ifndef __powerpc64__
unsigned long __unused2;
#endif
__kernel_time_t shm_dtime; /* last detach time */
#ifndef __power64__
#ifndef __powerpc64__
unsigned long __unused3;
#endif
__kernel_time_t shm_ctime; /* last change time */
#ifndef __power64__
#ifndef __powerpc64__
unsigned long __unused4;
#endif
size_t shm_segsz; /* size of segment (bytes) */
@ -56,4 +56,4 @@ struct shminfo64 {
unsigned long __unused4;
};
#endif /* _POWERPC_SHMBUF_H */
#endif /* _ASM_POWERPC_SHMBUF_H */

View file

@ -1,6 +1,6 @@
#ifndef _PPC_SHMPARAM_H
#define _PPC_SHMPARAM_H
#ifndef _ASM_POWERPC_SHMPARAM_H
#define _ASM_POWERPC_SHMPARAM_H
#define SHMLBA PAGE_SIZE /* attach addr a multiple of this */
#endif /* _PPC_SHMPARAM_H */
#endif /* _ASM_POWERPC_SHMPARAM_H */

View file

@ -1,5 +1,5 @@
#ifndef _POWERPC_SIGINFO_H
#define _POWERPC_SIGINFO_H
#ifndef _ASM_POWERPC_SIGINFO_H
#define _ASM_POWERPC_SIGINFO_H
/*
* This program is free software; you can redistribute it and/or
@ -15,4 +15,4 @@
#include <asm-generic/siginfo.h>
#endif /* _POWERPC_SIGINFO_H */
#endif /* _ASM_POWERPC_SIGINFO_H */

View file

@ -1,5 +1,5 @@
#ifndef _POWERPC_SOCKET_H
#define _POWERPC_SOCKET_H
#ifndef _ASM_POWERPC_SOCKET_H
#define _ASM_POWERPC_SOCKET_H
/*
* This program is free software; you can redistribute it and/or
@ -56,4 +56,4 @@
#define SO_PEERSEC 31
#endif /* _POWERPC_SOCKET_H */
#endif /* _ASM_POWERPC_SOCKET_H */

View file

@ -1,5 +1,5 @@
#ifndef _POWERPC_SOCKIOS_H
#define _POWERPC_SOCKIOS_H
#ifndef _ASM_POWERPC_SOCKIOS_H
#define _ASM_POWERPC_SOCKIOS_H
/*
* This program is free software; you can redistribute it and/or
@ -16,4 +16,4 @@
#define SIOCATMARK 0x8905
#define SIOCGSTAMP 0x8906 /* Get stamp */
#endif /* _POWERPC_SOCKIOS_H */
#endif /* _ASM_POWERPC_SOCKIOS_H */

View file

@ -1,5 +1,5 @@
#ifndef _PPC_STRING_H_
#define _PPC_STRING_H_
#ifndef _ASM_POWERPC_STRING_H
#define _ASM_POWERPC_STRING_H
#ifdef __KERNEL__
@ -29,4 +29,4 @@ extern void * memchr(const void *,int,__kernel_size_t);
#endif /* __KERNEL__ */
#endif
#endif /* _ASM_POWERPC_STRING_H */

View file

@ -1,5 +1,5 @@
#ifndef _POWERPC_TERMBITS_H
#define _POWERPC_TERMBITS_H
#ifndef _ASM_POWERPC_TERMBITS_H
#define _ASM_POWERPC_TERMBITS_H
/*
* This program is free software; you can redistribute it and/or
@ -188,4 +188,4 @@ struct termios {
#define TCSADRAIN 1
#define TCSAFLUSH 2
#endif /* _POWERPC_TERMBITS_H */
#endif /* _ASM_POWERPC_TERMBITS_H */

View file

@ -1,5 +1,5 @@
#ifndef _POWERPC_TERMIOS_H
#define _POWERPC_TERMIOS_H
#ifndef _ASM_POWERPC_TERMIOS_H
#define _ASM_POWERPC_TERMIOS_H
/*
* Liberally adapted from alpha/termios.h. In particular, the c_cc[]
@ -233,4 +233,4 @@ struct termio {
#endif /* __KERNEL__ */
#endif /* _POWERPC_TERMIOS_H */
#endif /* _ASM_POWERPC_TERMIOS_H */

View file

@ -1,11 +1,11 @@
/*
* include/asm-ppc/timex.h
*
* ppc architecture timex specifications
*/
#ifndef _ASM_POWERPC_TIMEX_H
#define _ASM_POWERPC_TIMEX_H
#ifdef __KERNEL__
#ifndef _ASMppc_TIMEX_H
#define _ASMppc_TIMEX_H
/*
* PowerPC architecture timex specifications
*/
#include <linux/config.h>
#include <asm/cputable.h>
@ -14,14 +14,21 @@
typedef unsigned long cycles_t;
/*
* For the "cycle" counter we use the timebase lower half.
* Currently only used on SMP.
*/
static inline cycles_t get_cycles(void)
{
cycles_t ret = 0;
cycles_t ret;
#ifdef __powerpc64__
__asm__ __volatile__("mftb %0" : "=r" (ret) : );
#else
/*
* For the "cycle" counter we use the timebase lower half.
* Currently only used on SMP.
*/
ret = 0;
__asm__ __volatile__(
"98: mftb %0\n"
@ -33,8 +40,10 @@ static inline cycles_t get_cycles(void)
" .long 99b\n"
".previous"
: "=r" (ret) : "i" (CPU_FTR_601));
#endif
return ret;
}
#endif
#endif /* __KERNEL__ */
#endif /* __KERNEL__ */
#endif /* _ASM_POWERPC_TIMEX_H */

View file

@ -1,11 +1,12 @@
#ifndef _ASM_PPC64_TOPOLOGY_H
#define _ASM_PPC64_TOPOLOGY_H
#ifndef _ASM_POWERPC_TOPOLOGY_H
#define _ASM_POWERPC_TOPOLOGY_H
#include <linux/config.h>
#include <asm/mmzone.h>
#ifdef CONFIG_NUMA
#include <asm/mmzone.h>
static inline int cpu_to_node(int cpu)
{
int node;
@ -66,4 +67,4 @@ static inline int node_to_first_cpu(int node)
#endif /* CONFIG_NUMA */
#endif /* _ASM_PPC64_TOPOLOGY_H */
#endif /* _ASM_POWERPC_TOPOLOGY_H */

View file

@ -1,6 +1,7 @@
#ifndef _ASM_POWERPC_UNALIGNED_H
#define _ASM_POWERPC_UNALIGNED_H
#ifdef __KERNEL__
#ifndef __PPC_UNALIGNED_H
#define __PPC_UNALIGNED_H
/*
* The PowerPC can do unaligned accesses itself in big endian mode.
@ -14,5 +15,5 @@
#define put_unaligned(val, ptr) ((void)( *(ptr) = (val) ))
#endif
#endif /* __KERNEL__ */
#endif /* __KERNEL__ */
#endif /* _ASM_POWERPC_UNALIGNED_H */

View file

@ -1,13 +1,14 @@
#ifndef _ASM_POWERPC_USER_H
#define _ASM_POWERPC_USER_H
#ifdef __KERNEL__
#ifndef _PPC_USER_H
#define _PPC_USER_H
/* Adapted from <asm-alpha/user.h> */
#include <linux/ptrace.h>
#include <asm/ptrace.h>
#include <asm/page.h>
/*
* Adapted from <asm-alpha/user.h>
*
* Core file format: The core file is written in such a way that gdb
* can understand it and provide useful information to the user (under
* linux we use the `trad-core' bfd, NOT the osf-core). The file contents
@ -50,5 +51,5 @@ struct user {
#define HOST_DATA_START_ADDR (u.start_data)
#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
#endif /* _PPC_USER_H */
#endif /* __KERNEL__ */
#endif /* __KERNEL__ */
#endif /* _ASM_POWERPC_USER_H */

View file

@ -1,14 +0,0 @@
#ifdef __KERNEL__
#ifndef _PPC_SETUP_H
#define _PPC_SETUP_H
#define m68k_num_memory num_memory
#define m68k_memory memory
#include <asm-m68k/setup.h>
/* We have a bigger command line buffer. */
#undef COMMAND_LINE_SIZE
#define COMMAND_LINE_SIZE 512
#endif /* _PPC_SETUP_H */
#endif /* __KERNEL__ */

View file

@ -1,6 +0,0 @@
#ifndef _ASM_PPC_TOPOLOGY_H
#define _ASM_PPC_TOPOLOGY_H
#include <asm-generic/topology.h>
#endif /* _ASM_PPC_TOPOLOGY_H */

View file

@ -1,27 +0,0 @@
#ifndef _PPC64_MSGBUF_H
#define _PPC64_MSGBUF_H
/*
* The msqid64_ds structure for the PPC architecture.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*/
struct msqid64_ds {
struct ipc64_perm msg_perm;
__kernel_time_t msg_stime; /* last msgsnd time */
__kernel_time_t msg_rtime; /* last msgrcv time */
__kernel_time_t msg_ctime; /* last change time */
unsigned long msg_cbytes; /* current number of bytes on queue */
unsigned long msg_qnum; /* number of messages in queue */
unsigned long msg_qbytes; /* max number of bytes on queue */
__kernel_pid_t msg_lspid; /* pid of last msgsnd */
__kernel_pid_t msg_lrpid; /* last receive pid */
unsigned long __unused1;
unsigned long __unused2;
};
#endif /* _PPC64_MSGBUF_H */

View file

@ -1,31 +0,0 @@
#ifndef _ASM_PPC64_PARAM_H
#define _ASM_PPC64_PARAM_H
#include <linux/config.h>
/*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*/
#ifdef __KERNEL__
# define HZ CONFIG_HZ /* Internal kernel timer frequency */
# define USER_HZ 100 /* .. some user interfaces are in "ticks" */
# define CLOCKS_PER_SEC (USER_HZ) /* like times() */
#endif
#ifndef HZ
#define HZ 100
#endif
#define EXEC_PAGESIZE 4096
#ifndef NOGROUP
#define NOGROUP (-1)
#endif
#define MAXHOSTNAMELEN 64 /* max length of hostname */
#endif /* _ASM_PPC64_PARAM_H */

View file

@ -48,19 +48,52 @@ struct pci_controller {
unsigned long dma_window_size;
};
/*
* PCI stuff, for nodes representing PCI devices, pointed to
* by device_node->data.
*/
struct pci_controller;
struct iommu_table;
struct pci_dn {
int busno; /* for pci devices */
int bussubno; /* for pci devices */
int devfn; /* for pci devices */
int eeh_mode; /* See eeh.h for possible EEH_MODEs */
int eeh_config_addr;
int eeh_capable; /* from firmware */
int eeh_check_count; /* # times driver ignored error */
int eeh_freeze_count; /* # times this device froze up. */
int eeh_is_bridge; /* device is pci-to-pci bridge */
int pci_ext_config_space; /* for pci devices */
struct pci_controller *phb; /* for pci devices */
struct iommu_table *iommu_table; /* for phb's or bridges */
struct pci_dev *pcidev; /* back-pointer to the pci device */
struct device_node *node; /* back-pointer to the device_node */
u32 config_space[16]; /* saved PCI config space */
};
/* Get the pointer to a device_node's pci_dn */
#define PCI_DN(dn) ((struct pci_dn *) (dn)->data)
struct device_node *fetch_dev_dn(struct pci_dev *dev);
/* Get a device_node from a pci_dev. This code must be fast except in the case
* where the sysdata is incorrect and needs to be fixed up (hopefully just once)
/* Get a device_node from a pci_dev. This code must be fast except
* in the case where the sysdata is incorrect and needs to be fixed
* up (this will only happen once).
* In this case the sysdata will have been inherited from a PCI host
* bridge or a PCI-PCI bridge further up the tree, so it will point
* to a valid struct pci_dn, just not the one we want.
*/
static inline struct device_node *pci_device_to_OF_node(struct pci_dev *dev)
{
struct device_node *dn = dev->sysdata;
struct pci_dn *pdn = dn->data;
if (dn->devfn == dev->devfn && dn->busno == dev->bus->number)
if (pdn && pdn->devfn == dev->devfn && pdn->busno == dev->bus->number)
return dn; /* fast path. sysdata is good */
else
return fetch_dev_dn(dev);
return fetch_dev_dn(dev);
}
static inline struct device_node *pci_bus_to_OF_node(struct pci_bus *bus)
@ -83,7 +116,7 @@ static inline struct pci_controller *pci_bus_to_host(struct pci_bus *bus)
struct device_node *busdn = bus->sysdata;
BUG_ON(busdn == NULL);
return busdn->phb;
return PCI_DN(busdn)->phb;
}
#endif

View file

@ -116,14 +116,6 @@ struct property {
struct property *next;
};
/* NOTE: the device_node contains PCI specific info for pci devices.
* This perhaps could be hung off the device_node with another struct,
* but for now it is directly in the node. The phb ptr is a good
* indication of a real PCI node. Other nodes leave these fields zeroed.
*/
struct pci_controller;
struct iommu_table;
struct device_node {
char *name;
char *type;
@ -135,16 +127,6 @@ struct device_node {
struct interrupt_info *intrs;
char *full_name;
/* PCI stuff probably doesn't belong here */
int busno; /* for pci devices */
int bussubno; /* for pci devices */
int devfn; /* for pci devices */
int eeh_mode; /* See eeh.h for possible EEH_MODEs */
int eeh_config_addr;
int pci_ext_config_space; /* for pci devices */
struct pci_controller *phb; /* for pci devices */
struct iommu_table *iommu_table; /* for phb's or bridges */
struct property *properties;
struct device_node *parent;
struct device_node *child;
@ -154,6 +136,7 @@ struct device_node {
struct proc_dir_entry *pde; /* this node's proc directory */
struct kref kref;
unsigned long _flags;
void *data;
};
extern struct device_node *of_chosen;

View file

@ -1,6 +0,0 @@
#ifndef __PPC64_SEGMENT_H
#define __PPC64_SEGMENT_H
/* Only here because we have some old header files that expect it.. */
#endif /* __PPC64_SEGMENT_H */

View file

@ -1,6 +0,0 @@
#ifndef _PPC_SETUP_H
#define _PPC_SETUP_H
#define COMMAND_LINE_SIZE 512
#endif /* _PPC_SETUP_H */

View file

@ -1,26 +0,0 @@
/*
* linux/include/asm-ppc/timex.h
*
* PPC64 architecture timex specifications
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*/
#ifndef _ASMPPC64_TIMEX_H
#define _ASMPPC64_TIMEX_H
#define CLOCK_TICK_RATE 1193180 /* Underlying HZ */
typedef unsigned long cycles_t;
static inline cycles_t get_cycles(void)
{
cycles_t ret;
__asm__ __volatile__("mftb %0" : "=r" (ret) : );
return ret;
}
#endif

View file

@ -1,58 +0,0 @@
#ifndef _PPC_USER_H
#define _PPC_USER_H
/* Adapted from <asm-alpha/user.h>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version
* 2 of the License, or (at your option) any later version.
*/
#include <asm/ptrace.h>
#include <asm/page.h>
/*
* Core file format: The core file is written in such a way that gdb
* can understand it and provide useful information to the user (under
* linux we use the `trad-core' bfd, NOT the osf-core). The file contents
* are as follows:
*
* upage: 1 page consisting of a user struct that tells gdb
* what is present in the file. Directly after this is a
* copy of the task_struct, which is currently not used by gdb,
* but it may come in handy at some point. All of the registers
* are stored as part of the upage. The upage should always be
* only one page long.
* data: The data segment follows next. We use current->end_text to
* current->brk to pick up all of the user variables, plus any memory
* that may have been sbrk'ed. No attempt is made to determine if a
* page is demand-zero or if a page is totally unused, we just cover
* the entire range. All of the addresses are rounded in such a way
* that an integral number of pages is written.
* stack: We need the stack information in order to get a meaningful
* backtrace. We need to write the data from usp to
* current->start_stack, so we round each of these in order to be able
* to write an integer number of pages.
*/
struct user {
struct pt_regs regs; /* entire machine state */
size_t u_tsize; /* text size (pages) */
size_t u_dsize; /* data size (pages) */
size_t u_ssize; /* stack size (pages) */
unsigned long start_code; /* text starting address */
unsigned long start_data; /* data starting address */
unsigned long start_stack; /* stack starting address */
long int signal; /* signal causing core dump */
struct regs * u_ar0; /* help gdb find registers */
unsigned long magic; /* identifies a core file */
char u_comm[32]; /* user command name */
};
#define NBPG PAGE_SIZE
#define UPAGES 1
#define HOST_TEXT_START_ADDR (u.start_code)
#define HOST_DATA_START_ADDR (u.start_data)
#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
#endif /* _PPC_USER_H */