diff options
author | Len Brown <len.brown@intel.com> | 2005-09-08 01:45:47 -0400 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2005-09-08 01:45:47 -0400 |
commit | 64e47488c913ac704d465a6af86a26786d1412a5 (patch) | |
tree | d3b0148592963dcde26e4bb35ddfec8b1eaf8e23 /include/asm-sparc64 | |
parent | 4a35a46bf1cda4737c428380d1db5d15e2590d18 (diff) | |
parent | caf39e87cc1182f7dae84eefc43ca14d54c78ef9 (diff) |
Merge linux-2.6 with linux-acpi-2.6
Diffstat (limited to 'include/asm-sparc64')
-rw-r--r-- | include/asm-sparc64/auxvec.h | 4 | ||||
-rw-r--r-- | include/asm-sparc64/compat.h | 18 | ||||
-rw-r--r-- | include/asm-sparc64/cpudata.h | 4 | ||||
-rw-r--r-- | include/asm-sparc64/fcntl.h | 46 | ||||
-rw-r--r-- | include/asm-sparc64/futex.h | 53 | ||||
-rw-r--r-- | include/asm-sparc64/hardirq.h | 16 | ||||
-rw-r--r-- | include/asm-sparc64/hdreg.h | 1 | ||||
-rw-r--r-- | include/asm-sparc64/io.h | 47 | ||||
-rw-r--r-- | include/asm-sparc64/page.h | 16 | ||||
-rw-r--r-- | include/asm-sparc64/pgtable.h | 3 | ||||
-rw-r--r-- | include/asm-sparc64/types.h | 2 | ||||
-rw-r--r-- | include/asm-sparc64/uaccess.h | 6 |
12 files changed, 113 insertions, 103 deletions
diff --git a/include/asm-sparc64/auxvec.h b/include/asm-sparc64/auxvec.h new file mode 100644 index 000000000000..436a29129828 --- /dev/null +++ b/include/asm-sparc64/auxvec.h | |||
@@ -0,0 +1,4 @@ | |||
1 | #ifndef __ASM_SPARC64_AUXVEC_H | ||
2 | #define __ASM_SPARC64_AUXVEC_H | ||
3 | |||
4 | #endif /* !(__ASM_SPARC64_AUXVEC_H) */ | ||
diff --git a/include/asm-sparc64/compat.h b/include/asm-sparc64/compat.h index b59122dd176d..c73935dc7ba1 100644 --- a/include/asm-sparc64/compat.h +++ b/include/asm-sparc64/compat.h | |||
@@ -12,8 +12,10 @@ typedef s32 compat_ssize_t; | |||
12 | typedef s32 compat_time_t; | 12 | typedef s32 compat_time_t; |
13 | typedef s32 compat_clock_t; | 13 | typedef s32 compat_clock_t; |
14 | typedef s32 compat_pid_t; | 14 | typedef s32 compat_pid_t; |
15 | typedef u16 compat_uid_t; | 15 | typedef u16 __compat_uid_t; |
16 | typedef u16 compat_gid_t; | 16 | typedef u16 __compat_gid_t; |
17 | typedef u32 __compat_uid32_t; | ||
18 | typedef u32 __compat_gid32_t; | ||
17 | typedef u16 compat_mode_t; | 19 | typedef u16 compat_mode_t; |
18 | typedef u32 compat_ino_t; | 20 | typedef u32 compat_ino_t; |
19 | typedef u16 compat_dev_t; | 21 | typedef u16 compat_dev_t; |
@@ -47,8 +49,8 @@ struct compat_stat { | |||
47 | compat_ino_t st_ino; | 49 | compat_ino_t st_ino; |
48 | compat_mode_t st_mode; | 50 | compat_mode_t st_mode; |
49 | compat_nlink_t st_nlink; | 51 | compat_nlink_t st_nlink; |
50 | compat_uid_t st_uid; | 52 | __compat_uid_t st_uid; |
51 | compat_gid_t st_gid; | 53 | __compat_gid_t st_gid; |
52 | compat_dev_t st_rdev; | 54 | compat_dev_t st_rdev; |
53 | compat_off_t st_size; | 55 | compat_off_t st_size; |
54 | compat_time_t st_atime; | 56 | compat_time_t st_atime; |
@@ -177,10 +179,10 @@ static __inline__ void __user *compat_alloc_user_space(long len) | |||
177 | 179 | ||
178 | struct compat_ipc64_perm { | 180 | struct compat_ipc64_perm { |
179 | compat_key_t key; | 181 | compat_key_t key; |
180 | __kernel_uid_t uid; | 182 | __compat_uid32_t uid; |
181 | __kernel_gid_t gid; | 183 | __compat_gid32_t gid; |
182 | __kernel_uid_t cuid; | 184 | __compat_uid32_t cuid; |
183 | __kernel_gid_t cgid; | 185 | __compat_gid32_t cgid; |
184 | unsigned short __pad1; | 186 | unsigned short __pad1; |
185 | compat_mode_t mode; | 187 | compat_mode_t mode; |
186 | unsigned short __pad2; | 188 | unsigned short __pad2; |
diff --git a/include/asm-sparc64/cpudata.h b/include/asm-sparc64/cpudata.h index cc7198aaac50..9a3a81f1cc58 100644 --- a/include/asm-sparc64/cpudata.h +++ b/include/asm-sparc64/cpudata.h | |||
@@ -1,6 +1,6 @@ | |||
1 | /* cpudata.h: Per-cpu parameters. | 1 | /* cpudata.h: Per-cpu parameters. |
2 | * | 2 | * |
3 | * Copyright (C) 2003 David S. Miller (davem@redhat.com) | 3 | * Copyright (C) 2003, 2005 David S. Miller (davem@redhat.com) |
4 | */ | 4 | */ |
5 | 5 | ||
6 | #ifndef _SPARC64_CPUDATA_H | 6 | #ifndef _SPARC64_CPUDATA_H |
@@ -10,7 +10,7 @@ | |||
10 | 10 | ||
11 | typedef struct { | 11 | typedef struct { |
12 | /* Dcache line 1 */ | 12 | /* Dcache line 1 */ |
13 | unsigned int __pad0; /* bh_count moved to irq_stat for consistency. KAO */ | 13 | unsigned int __softirq_pending; /* must be 1st, see rtrap.S */ |
14 | unsigned int multiplier; | 14 | unsigned int multiplier; |
15 | unsigned int counter; | 15 | unsigned int counter; |
16 | unsigned int idle_volume; | 16 | unsigned int idle_volume; |
diff --git a/include/asm-sparc64/fcntl.h b/include/asm-sparc64/fcntl.h index e36def0d0d80..b2aecf0054bd 100644 --- a/include/asm-sparc64/fcntl.h +++ b/include/asm-sparc64/fcntl.h | |||
@@ -4,10 +4,6 @@ | |||
4 | 4 | ||
5 | /* open/fcntl - O_SYNC is only implemented on blocks devices and on files | 5 | /* open/fcntl - O_SYNC is only implemented on blocks devices and on files |
6 | located on an ext2 file system */ | 6 | located on an ext2 file system */ |
7 | #define O_RDONLY 0x0000 | ||
8 | #define O_WRONLY 0x0001 | ||
9 | #define O_RDWR 0x0002 | ||
10 | #define O_ACCMODE 0x0003 | ||
11 | #define O_NDELAY 0x0004 | 7 | #define O_NDELAY 0x0004 |
12 | #define O_APPEND 0x0008 | 8 | #define O_APPEND 0x0008 |
13 | #define FASYNC 0x0040 /* fcntl, for BSD compatibility */ | 9 | #define FASYNC 0x0040 /* fcntl, for BSD compatibility */ |
@@ -17,62 +13,24 @@ | |||
17 | #define O_SYNC 0x2000 | 13 | #define O_SYNC 0x2000 |
18 | #define O_NONBLOCK 0x4000 | 14 | #define O_NONBLOCK 0x4000 |
19 | #define O_NOCTTY 0x8000 /* not fcntl */ | 15 | #define O_NOCTTY 0x8000 /* not fcntl */ |
20 | #define O_DIRECTORY 0x10000 /* must be a directory */ | ||
21 | #define O_NOFOLLOW 0x20000 /* don't follow links */ | ||
22 | #define O_LARGEFILE 0x40000 | 16 | #define O_LARGEFILE 0x40000 |
23 | #define O_DIRECT 0x100000 /* direct disk access hint */ | 17 | #define O_DIRECT 0x100000 /* direct disk access hint */ |
24 | #define O_NOATIME 0x200000 | 18 | #define O_NOATIME 0x200000 |
25 | 19 | ||
26 | 20 | ||
27 | #define F_DUPFD 0 /* dup */ | ||
28 | #define F_GETFD 1 /* get close_on_exec */ | ||
29 | #define F_SETFD 2 /* set/clear close_on_exec */ | ||
30 | #define F_GETFL 3 /* get file->f_flags */ | ||
31 | #define F_SETFL 4 /* set file->f_flags */ | ||
32 | #define F_GETOWN 5 /* for sockets. */ | 21 | #define F_GETOWN 5 /* for sockets. */ |
33 | #define F_SETOWN 6 /* for sockets. */ | 22 | #define F_SETOWN 6 /* for sockets. */ |
34 | #define F_GETLK 7 | 23 | #define F_GETLK 7 |
35 | #define F_SETLK 8 | 24 | #define F_SETLK 8 |
36 | #define F_SETLKW 9 | 25 | #define F_SETLKW 9 |
37 | #define F_SETSIG 10 /* for sockets. */ | ||
38 | #define F_GETSIG 11 /* for sockets. */ | ||
39 | |||
40 | /* for F_[GET|SET]FL */ | ||
41 | #define FD_CLOEXEC 1 /* actually anything with low bit set goes */ | ||
42 | 26 | ||
43 | /* for posix fcntl() and lockf() */ | 27 | /* for posix fcntl() and lockf() */ |
44 | #define F_RDLCK 1 | 28 | #define F_RDLCK 1 |
45 | #define F_WRLCK 2 | 29 | #define F_WRLCK 2 |
46 | #define F_UNLCK 3 | 30 | #define F_UNLCK 3 |
47 | 31 | ||
48 | /* for old implementation of bsd flock () */ | 32 | #define __ARCH_FLOCK_PAD short __unused; |
49 | #define F_EXLCK 4 /* or 3 */ | ||
50 | #define F_SHLCK 8 /* or 4 */ | ||
51 | |||
52 | /* for leases */ | ||
53 | #define F_INPROGRESS 16 | ||
54 | |||
55 | /* operations for bsd flock(), also used by the kernel implementation */ | ||
56 | #define LOCK_SH 1 /* shared lock */ | ||
57 | #define LOCK_EX 2 /* exclusive lock */ | ||
58 | #define LOCK_NB 4 /* or'd with one of the above to prevent | ||
59 | blocking */ | ||
60 | #define LOCK_UN 8 /* remove lock */ | ||
61 | |||
62 | #define LOCK_MAND 32 /* This is a mandatory flock */ | ||
63 | #define LOCK_READ 64 /* ... Which allows concurrent read operations */ | ||
64 | #define LOCK_WRITE 128 /* ... Which allows concurrent write operations */ | ||
65 | #define LOCK_RW 192 /* ... Which allows concurrent read & write ops */ | ||
66 | |||
67 | struct flock { | ||
68 | short l_type; | ||
69 | short l_whence; | ||
70 | off_t l_start; | ||
71 | off_t l_len; | ||
72 | pid_t l_pid; | ||
73 | short __unused; | ||
74 | }; | ||
75 | 33 | ||
76 | #define F_LINUX_SPECIFIC_BASE 1024 | 34 | #include <asm-generic/fcntl.h> |
77 | 35 | ||
78 | #endif /* !(_SPARC64_FCNTL_H) */ | 36 | #endif /* !(_SPARC64_FCNTL_H) */ |
diff --git a/include/asm-sparc64/futex.h b/include/asm-sparc64/futex.h new file mode 100644 index 000000000000..2cac5ecd9d00 --- /dev/null +++ b/include/asm-sparc64/futex.h | |||
@@ -0,0 +1,53 @@ | |||
1 | #ifndef _ASM_FUTEX_H | ||
2 | #define _ASM_FUTEX_H | ||
3 | |||
4 | #ifdef __KERNEL__ | ||
5 | |||
6 | #include <linux/futex.h> | ||
7 | #include <asm/errno.h> | ||
8 | #include <asm/uaccess.h> | ||
9 | |||
10 | static inline int | ||
11 | futex_atomic_op_inuser (int encoded_op, int __user *uaddr) | ||
12 | { | ||
13 | int op = (encoded_op >> 28) & 7; | ||
14 | int cmp = (encoded_op >> 24) & 15; | ||
15 | int oparg = (encoded_op << 8) >> 20; | ||
16 | int cmparg = (encoded_op << 20) >> 20; | ||
17 | int oldval = 0, ret, tem; | ||
18 | if (encoded_op & (FUTEX_OP_OPARG_SHIFT << 28)) | ||
19 | oparg = 1 << oparg; | ||
20 | |||
21 | if (! access_ok (VERIFY_WRITE, uaddr, sizeof(int))) | ||
22 | return -EFAULT; | ||
23 | |||
24 | inc_preempt_count(); | ||
25 | |||
26 | switch (op) { | ||
27 | case FUTEX_OP_SET: | ||
28 | case FUTEX_OP_ADD: | ||
29 | case FUTEX_OP_OR: | ||
30 | case FUTEX_OP_ANDN: | ||
31 | case FUTEX_OP_XOR: | ||
32 | default: | ||
33 | ret = -ENOSYS; | ||
34 | } | ||
35 | |||
36 | dec_preempt_count(); | ||
37 | |||
38 | if (!ret) { | ||
39 | switch (cmp) { | ||
40 | case FUTEX_OP_CMP_EQ: ret = (oldval == cmparg); break; | ||
41 | case FUTEX_OP_CMP_NE: ret = (oldval != cmparg); break; | ||
42 | case FUTEX_OP_CMP_LT: ret = (oldval < cmparg); break; | ||
43 | case FUTEX_OP_CMP_GE: ret = (oldval >= cmparg); break; | ||
44 | case FUTEX_OP_CMP_LE: ret = (oldval <= cmparg); break; | ||
45 | case FUTEX_OP_CMP_GT: ret = (oldval > cmparg); break; | ||
46 | default: ret = -ENOSYS; | ||
47 | } | ||
48 | } | ||
49 | return ret; | ||
50 | } | ||
51 | |||
52 | #endif | ||
53 | #endif | ||
diff --git a/include/asm-sparc64/hardirq.h b/include/asm-sparc64/hardirq.h index d6db1aed7645..f0cf71376ec5 100644 --- a/include/asm-sparc64/hardirq.h +++ b/include/asm-sparc64/hardirq.h | |||
@@ -1,22 +1,16 @@ | |||
1 | /* hardirq.h: 64-bit Sparc hard IRQ support. | 1 | /* hardirq.h: 64-bit Sparc hard IRQ support. |
2 | * | 2 | * |
3 | * Copyright (C) 1997, 1998 David S. Miller (davem@caip.rutgers.edu) | 3 | * Copyright (C) 1997, 1998, 2005 David S. Miller (davem@davemloft.net) |
4 | */ | 4 | */ |
5 | 5 | ||
6 | #ifndef __SPARC64_HARDIRQ_H | 6 | #ifndef __SPARC64_HARDIRQ_H |
7 | #define __SPARC64_HARDIRQ_H | 7 | #define __SPARC64_HARDIRQ_H |
8 | 8 | ||
9 | #include <linux/config.h> | 9 | #include <asm/cpudata.h> |
10 | #include <linux/threads.h> | ||
11 | #include <linux/spinlock.h> | ||
12 | #include <linux/cache.h> | ||
13 | 10 | ||
14 | /* rtrap.S is sensitive to the offsets of these fields */ | 11 | #define __ARCH_IRQ_STAT |
15 | typedef struct { | 12 | #define local_softirq_pending() \ |
16 | unsigned int __softirq_pending; | 13 | (local_cpu_data().__softirq_pending) |
17 | } ____cacheline_aligned irq_cpustat_t; | ||
18 | |||
19 | #include <linux/irq_cpustat.h> /* Standard mappings for irq_cpustat_t above */ | ||
20 | 14 | ||
21 | #define HARDIRQ_BITS 8 | 15 | #define HARDIRQ_BITS 8 |
22 | 16 | ||
diff --git a/include/asm-sparc64/hdreg.h b/include/asm-sparc64/hdreg.h deleted file mode 100644 index 7f7fd1af0af3..000000000000 --- a/include/asm-sparc64/hdreg.h +++ /dev/null | |||
@@ -1 +0,0 @@ | |||
1 | #include <asm-generic/hdreg.h> | ||
diff --git a/include/asm-sparc64/io.h b/include/asm-sparc64/io.h index afdcea90707a..0056770e83ad 100644 --- a/include/asm-sparc64/io.h +++ b/include/asm-sparc64/io.h | |||
@@ -100,18 +100,41 @@ static __inline__ void _outl(u32 l, unsigned long addr) | |||
100 | #define inl_p(__addr) inl(__addr) | 100 | #define inl_p(__addr) inl(__addr) |
101 | #define outl_p(__l, __addr) outl(__l, __addr) | 101 | #define outl_p(__l, __addr) outl(__l, __addr) |
102 | 102 | ||
103 | extern void outsb(void __iomem *addr, const void *src, unsigned long count); | 103 | extern void outsb(unsigned long, const void *, unsigned long); |
104 | extern void outsw(void __iomem *addr, const void *src, unsigned long count); | 104 | extern void outsw(unsigned long, const void *, unsigned long); |
105 | extern void outsl(void __iomem *addr, const void *src, unsigned long count); | 105 | extern void outsl(unsigned long, const void *, unsigned long); |
106 | extern void insb(void __iomem *addr, void *dst, unsigned long count); | 106 | extern void insb(unsigned long, void *, unsigned long); |
107 | extern void insw(void __iomem *addr, void *dst, unsigned long count); | 107 | extern void insw(unsigned long, void *, unsigned long); |
108 | extern void insl(void __iomem *addr, void *dst, unsigned long count); | 108 | extern void insl(unsigned long, void *, unsigned long); |
109 | #define ioread8_rep(a,d,c) insb(a,d,c) | 109 | |
110 | #define ioread16_rep(a,d,c) insw(a,d,c) | 110 | static inline void ioread8_rep(void __iomem *port, void *buf, unsigned long count) |
111 | #define ioread32_rep(a,d,c) insl(a,d,c) | 111 | { |
112 | #define iowrite8_rep(a,s,c) outsb(a,s,c) | 112 | insb((unsigned long __force)port, buf, count); |
113 | #define iowrite16_rep(a,s,c) outsw(a,s,c) | 113 | } |
114 | #define iowrite32_rep(a,s,c) outsl(a,s,c) | 114 | static inline void ioread16_rep(void __iomem *port, void *buf, unsigned long count) |
115 | { | ||
116 | insw((unsigned long __force)port, buf, count); | ||
117 | } | ||
118 | |||
119 | static inline void ioread32_rep(void __iomem *port, void *buf, unsigned long count) | ||
120 | { | ||
121 | insl((unsigned long __force)port, buf, count); | ||
122 | } | ||
123 | |||
124 | static inline void iowrite8_rep(void __iomem *port, const void *buf, unsigned long count) | ||
125 | { | ||
126 | outsb((unsigned long __force)port, buf, count); | ||
127 | } | ||
128 | |||
129 | static inline void iowrite16_rep(void __iomem *port, const void *buf, unsigned long count) | ||
130 | { | ||
131 | outsw((unsigned long __force)port, buf, count); | ||
132 | } | ||
133 | |||
134 | static inline void iowrite32_rep(void __iomem *port, const void *buf, unsigned long count) | ||
135 | { | ||
136 | outsl((unsigned long __force)port, buf, count); | ||
137 | } | ||
115 | 138 | ||
116 | /* Memory functions, same as I/O accesses on Ultra. */ | 139 | /* Memory functions, same as I/O accesses on Ultra. */ |
117 | static inline u8 _readb(const volatile void __iomem *addr) | 140 | static inline u8 _readb(const volatile void __iomem *addr) |
diff --git a/include/asm-sparc64/page.h b/include/asm-sparc64/page.h index b87dbbd64bc9..c9f8ef208ea5 100644 --- a/include/asm-sparc64/page.h +++ b/include/asm-sparc64/page.h | |||
@@ -150,20 +150,6 @@ struct sparc_phys_banks { | |||
150 | 150 | ||
151 | extern struct sparc_phys_banks sp_banks[SPARC_PHYS_BANKS]; | 151 | extern struct sparc_phys_banks sp_banks[SPARC_PHYS_BANKS]; |
152 | 152 | ||
153 | /* Pure 2^n version of get_order */ | ||
154 | static __inline__ int get_order(unsigned long size) | ||
155 | { | ||
156 | int order; | ||
157 | |||
158 | size = (size-1) >> (PAGE_SHIFT-1); | ||
159 | order = -1; | ||
160 | do { | ||
161 | size >>= 1; | ||
162 | order++; | ||
163 | } while (size); | ||
164 | return order; | ||
165 | } | ||
166 | |||
167 | #endif /* !(__ASSEMBLY__) */ | 153 | #endif /* !(__ASSEMBLY__) */ |
168 | 154 | ||
169 | #define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ | 155 | #define VM_DATA_DEFAULT_FLAGS (VM_READ | VM_WRITE | VM_EXEC | \ |
@@ -171,4 +157,6 @@ static __inline__ int get_order(unsigned long size) | |||
171 | 157 | ||
172 | #endif /* !(__KERNEL__) */ | 158 | #endif /* !(__KERNEL__) */ |
173 | 159 | ||
160 | #include <asm-generic/page.h> | ||
161 | |||
174 | #endif /* !(_SPARC64_PAGE_H) */ | 162 | #endif /* !(_SPARC64_PAGE_H) */ |
diff --git a/include/asm-sparc64/pgtable.h b/include/asm-sparc64/pgtable.h index 1ae00c5087f1..a2b4f5ed4625 100644 --- a/include/asm-sparc64/pgtable.h +++ b/include/asm-sparc64/pgtable.h | |||
@@ -410,9 +410,6 @@ extern unsigned long *sparc64_valid_addr_bitmap; | |||
410 | #define kern_addr_valid(addr) \ | 410 | #define kern_addr_valid(addr) \ |
411 | (test_bit(__pa((unsigned long)(addr))>>22, sparc64_valid_addr_bitmap)) | 411 | (test_bit(__pa((unsigned long)(addr))>>22, sparc64_valid_addr_bitmap)) |
412 | 412 | ||
413 | extern int io_remap_page_range(struct vm_area_struct *vma, unsigned long from, | ||
414 | unsigned long offset, | ||
415 | unsigned long size, pgprot_t prot, int space); | ||
416 | extern int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long from, | 413 | extern int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long from, |
417 | unsigned long pfn, | 414 | unsigned long pfn, |
418 | unsigned long size, pgprot_t prot); | 415 | unsigned long size, pgprot_t prot); |
diff --git a/include/asm-sparc64/types.h b/include/asm-sparc64/types.h index 6248ed1a9a7a..d0ee7f105838 100644 --- a/include/asm-sparc64/types.h +++ b/include/asm-sparc64/types.h | |||
@@ -56,8 +56,6 @@ typedef unsigned long u64; | |||
56 | typedef u32 dma_addr_t; | 56 | typedef u32 dma_addr_t; |
57 | typedef u64 dma64_addr_t; | 57 | typedef u64 dma64_addr_t; |
58 | 58 | ||
59 | typedef unsigned short kmem_bufctl_t; | ||
60 | |||
61 | #endif /* __ASSEMBLY__ */ | 59 | #endif /* __ASSEMBLY__ */ |
62 | 60 | ||
63 | #endif /* __KERNEL__ */ | 61 | #endif /* __KERNEL__ */ |
diff --git a/include/asm-sparc64/uaccess.h b/include/asm-sparc64/uaccess.h index 5690142f82de..80a65d7e3dbf 100644 --- a/include/asm-sparc64/uaccess.h +++ b/include/asm-sparc64/uaccess.h | |||
@@ -59,12 +59,6 @@ static inline int access_ok(int type, const void __user * addr, unsigned long si | |||
59 | return 1; | 59 | return 1; |
60 | } | 60 | } |
61 | 61 | ||
62 | /* this function will go away soon - use access_ok() instead */ | ||
63 | static inline int __deprecated verify_area(int type, const void __user * addr, unsigned long size) | ||
64 | { | ||
65 | return 0; | ||
66 | } | ||
67 | |||
68 | /* | 62 | /* |
69 | * The exception table consists of pairs of addresses: the first is the | 63 | * The exception table consists of pairs of addresses: the first is the |
70 | * address of an instruction that is allowed to fault, and the second is | 64 | * address of an instruction that is allowed to fault, and the second is |