aboutsummaryrefslogtreecommitdiffstats
path: root/include/asm-ia64
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-ia64')
-rw-r--r--include/asm-ia64/compat.h2
-rw-r--r--include/asm-ia64/fb.h23
-rw-r--r--include/asm-ia64/ioctls.h4
-rw-r--r--include/asm-ia64/mca.h1
-rw-r--r--include/asm-ia64/page.h13
-rw-r--r--include/asm-ia64/pci.h22
-rw-r--r--include/asm-ia64/pgtable.h26
-rw-r--r--include/asm-ia64/sn/sn_sal.h24
-rw-r--r--include/asm-ia64/termbits.h16
-rw-r--r--include/asm-ia64/termios.h6
10 files changed, 88 insertions, 49 deletions
diff --git a/include/asm-ia64/compat.h b/include/asm-ia64/compat.h
index 40d01d80610d..0f6e5264ab8f 100644
--- a/include/asm-ia64/compat.h
+++ b/include/asm-ia64/compat.h
@@ -31,8 +31,10 @@ typedef s32 compat_timer_t;
31 31
32typedef s32 compat_int_t; 32typedef s32 compat_int_t;
33typedef s32 compat_long_t; 33typedef s32 compat_long_t;
34typedef s64 __attribute__((aligned(4))) compat_s64;
34typedef u32 compat_uint_t; 35typedef u32 compat_uint_t;
35typedef u32 compat_ulong_t; 36typedef u32 compat_ulong_t;
37typedef u64 __attribute__((aligned(4))) compat_u64;
36 38
37struct compat_timespec { 39struct compat_timespec {
38 compat_time_t tv_sec; 40 compat_time_t tv_sec;
diff --git a/include/asm-ia64/fb.h b/include/asm-ia64/fb.h
new file mode 100644
index 000000000000..89a397cee90a
--- /dev/null
+++ b/include/asm-ia64/fb.h
@@ -0,0 +1,23 @@
1#ifndef _ASM_FB_H_
2#define _ASM_FB_H_
3
4#include <linux/fb.h>
5#include <linux/fs.h>
6#include <linux/efi.h>
7#include <asm/page.h>
8
9static inline void fb_pgprotect(struct file *file, struct vm_area_struct *vma,
10 unsigned long off)
11{
12 if (efi_range_is_wc(vma->vm_start, vma->vm_end - vma->vm_start))
13 vma->vm_page_prot = pgprot_writecombine(vma->vm_page_prot);
14 else
15 vma->vm_page_prot = pgprot_noncached(vma->vm_page_prot);
16}
17
18static inline int fb_is_primary_device(struct fb_info *info)
19{
20 return 0;
21}
22
23#endif /* _ASM_FB_H_ */
diff --git a/include/asm-ia64/ioctls.h b/include/asm-ia64/ioctls.h
index 31ee521aeb7a..f41b636a0bf6 100644
--- a/include/asm-ia64/ioctls.h
+++ b/include/asm-ia64/ioctls.h
@@ -53,6 +53,10 @@
53#define TIOCSBRK 0x5427 /* BSD compatibility */ 53#define TIOCSBRK 0x5427 /* BSD compatibility */
54#define TIOCCBRK 0x5428 /* BSD compatibility */ 54#define TIOCCBRK 0x5428 /* BSD compatibility */
55#define TIOCGSID 0x5429 /* Return the session ID of FD */ 55#define TIOCGSID 0x5429 /* Return the session ID of FD */
56#define TCGETS2 _IOR('T',0x2A, struct termios2)
57#define TCSETS2 _IOW('T',0x2B, struct termios2)
58#define TCSETSW2 _IOW('T',0x2C, struct termios2)
59#define TCSETSF2 _IOW('T',0x2D, struct termios2)
56#define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */ 60#define TIOCGPTN _IOR('T',0x30, unsigned int) /* Get Pty Number (of pty-mux device) */
57#define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */ 61#define TIOCSPTLCK _IOW('T',0x31, int) /* Lock/unlock Pty */
58 62
diff --git a/include/asm-ia64/mca.h b/include/asm-ia64/mca.h
index 41098f459684..edd5d01028df 100644
--- a/include/asm-ia64/mca.h
+++ b/include/asm-ia64/mca.h
@@ -48,6 +48,7 @@ enum {
48 IA64_MCA_RENDEZ_CHECKIN_NOTDONE = 0x0, 48 IA64_MCA_RENDEZ_CHECKIN_NOTDONE = 0x0,
49 IA64_MCA_RENDEZ_CHECKIN_DONE = 0x1, 49 IA64_MCA_RENDEZ_CHECKIN_DONE = 0x1,
50 IA64_MCA_RENDEZ_CHECKIN_INIT = 0x2, 50 IA64_MCA_RENDEZ_CHECKIN_INIT = 0x2,
51 IA64_MCA_RENDEZ_CHECKIN_CONCURRENT_MCA = 0x3,
51}; 52};
52 53
53/* Information maintained by the MC infrastructure */ 54/* Information maintained by the MC infrastructure */
diff --git a/include/asm-ia64/page.h b/include/asm-ia64/page.h
index 485759ba9e36..d6345464a2b3 100644
--- a/include/asm-ia64/page.h
+++ b/include/asm-ia64/page.h
@@ -87,12 +87,13 @@ do { \
87} while (0) 87} while (0)
88 88
89 89
90#define alloc_zeroed_user_highpage(vma, vaddr) \ 90#define __alloc_zeroed_user_highpage(movableflags, vma, vaddr) \
91({ \ 91({ \
92 struct page *page = alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO, vma, vaddr); \ 92 struct page *page = alloc_page_vma( \
93 if (page) \ 93 GFP_HIGHUSER | __GFP_ZERO | movableflags, vma, vaddr); \
94 flush_dcache_page(page); \ 94 if (page) \
95 page; \ 95 flush_dcache_page(page); \
96 page; \
96}) 97})
97 98
98#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE 99#define __HAVE_ARCH_ALLOC_ZEROED_USER_HIGHPAGE
diff --git a/include/asm-ia64/pci.h b/include/asm-ia64/pci.h
index 5a5d1c2ce39d..0149097b736d 100644
--- a/include/asm-ia64/pci.h
+++ b/include/asm-ia64/pci.h
@@ -71,14 +71,6 @@ pcibios_penalize_isa_irq (int irq, int active)
71#define pci_unmap_len_set(PTR, LEN_NAME, VAL) \ 71#define pci_unmap_len_set(PTR, LEN_NAME, VAL) \
72 (((PTR)->LEN_NAME) = (VAL)) 72 (((PTR)->LEN_NAME) = (VAL))
73 73
74/* The ia64 platform always supports 64-bit addressing. */
75#define pci_dac_dma_supported(pci_dev, mask) (1)
76#define pci_dac_page_to_dma(dev,pg,off,dir) ((dma_addr_t) page_to_bus(pg) + (off))
77#define pci_dac_dma_to_page(dev,dma_addr) (virt_to_page(bus_to_virt(dma_addr)))
78#define pci_dac_dma_to_offset(dev,dma_addr) offset_in_page(dma_addr)
79#define pci_dac_dma_sync_single_for_cpu(dev,dma_addr,len,dir) do { } while (0)
80#define pci_dac_dma_sync_single_for_device(dev,dma_addr,len,dir) do { mb(); } while (0)
81
82#ifdef CONFIG_PCI 74#ifdef CONFIG_PCI
83static inline void pci_dma_burst_advice(struct pci_dev *pdev, 75static inline void pci_dma_burst_advice(struct pci_dev *pdev,
84 enum pci_dma_burst_strategy *strat, 76 enum pci_dma_burst_strategy *strat,
@@ -104,10 +96,12 @@ extern int pci_mmap_page_range (struct pci_dev *dev, struct vm_area_struct *vma,
104#define HAVE_PCI_LEGACY 96#define HAVE_PCI_LEGACY
105extern int pci_mmap_legacy_page_range(struct pci_bus *bus, 97extern int pci_mmap_legacy_page_range(struct pci_bus *bus,
106 struct vm_area_struct *vma); 98 struct vm_area_struct *vma);
107extern ssize_t pci_read_legacy_io(struct kobject *kobj, char *buf, loff_t off, 99extern ssize_t pci_read_legacy_io(struct kobject *kobj,
108 size_t count); 100 struct bin_attribute *bin_attr,
109extern ssize_t pci_write_legacy_io(struct kobject *kobj, char *buf, loff_t off, 101 char *buf, loff_t off, size_t count);
110 size_t count); 102extern ssize_t pci_write_legacy_io(struct kobject *kobj,
103 struct bin_attribute *bin_attr,
104 char *buf, loff_t off, size_t count);
111extern int pci_mmap_legacy_mem(struct kobject *kobj, 105extern int pci_mmap_legacy_mem(struct kobject *kobj,
112 struct bin_attribute *attr, 106 struct bin_attribute *attr,
113 struct vm_area_struct *vma); 107 struct vm_area_struct *vma);
@@ -143,10 +137,6 @@ static inline int pci_proc_domain(struct pci_bus *bus)
143 return (pci_domain_nr(bus) != 0); 137 return (pci_domain_nr(bus) != 0);
144} 138}
145 139
146static inline void pcibios_add_platform_entries(struct pci_dev *dev)
147{
148}
149
150extern void pcibios_resource_to_bus(struct pci_dev *dev, 140extern void pcibios_resource_to_bus(struct pci_dev *dev,
151 struct pci_bus_region *region, struct resource *res); 141 struct pci_bus_region *region, struct resource *res);
152 142
diff --git a/include/asm-ia64/pgtable.h b/include/asm-ia64/pgtable.h
index 6580f31b3135..de6d01e24dd0 100644
--- a/include/asm-ia64/pgtable.h
+++ b/include/asm-ia64/pgtable.h
@@ -297,8 +297,6 @@ ia64_phys_addr_valid (unsigned long addr)
297/* 297/*
298 * The following have defined behavior only work if pte_present() is true. 298 * The following have defined behavior only work if pte_present() is true.
299 */ 299 */
300#define pte_user(pte) ((pte_val(pte) & _PAGE_PL_MASK) == _PAGE_PL_3)
301#define pte_read(pte) (((pte_val(pte) & _PAGE_AR_MASK) >> _PAGE_AR_SHIFT) < 6)
302#define pte_write(pte) ((unsigned) (((pte_val(pte) & _PAGE_AR_MASK) >> _PAGE_AR_SHIFT) - 2) <= 4) 300#define pte_write(pte) ((unsigned) (((pte_val(pte) & _PAGE_AR_MASK) >> _PAGE_AR_SHIFT) - 2) <= 4)
303#define pte_exec(pte) ((pte_val(pte) & _PAGE_AR_RX) != 0) 301#define pte_exec(pte) ((pte_val(pte) & _PAGE_AR_RX) != 0)
304#define pte_dirty(pte) ((pte_val(pte) & _PAGE_D) != 0) 302#define pte_dirty(pte) ((pte_val(pte) & _PAGE_D) != 0)
@@ -310,7 +308,6 @@ ia64_phys_addr_valid (unsigned long addr)
310 */ 308 */
311#define pte_wrprotect(pte) (__pte(pte_val(pte) & ~_PAGE_AR_RW)) 309#define pte_wrprotect(pte) (__pte(pte_val(pte) & ~_PAGE_AR_RW))
312#define pte_mkwrite(pte) (__pte(pte_val(pte) | _PAGE_AR_RW)) 310#define pte_mkwrite(pte) (__pte(pte_val(pte) | _PAGE_AR_RW))
313#define pte_mkexec(pte) (__pte(pte_val(pte) | _PAGE_AR_RX))
314#define pte_mkold(pte) (__pte(pte_val(pte) & ~_PAGE_A)) 311#define pte_mkold(pte) (__pte(pte_val(pte) & ~_PAGE_A))
315#define pte_mkyoung(pte) (__pte(pte_val(pte) | _PAGE_A)) 312#define pte_mkyoung(pte) (__pte(pte_val(pte) | _PAGE_A))
316#define pte_mkclean(pte) (__pte(pte_val(pte) & ~_PAGE_D)) 313#define pte_mkclean(pte) (__pte(pte_val(pte) & ~_PAGE_D))
@@ -398,22 +395,6 @@ ptep_test_and_clear_young (struct vm_area_struct *vma, unsigned long addr, pte_t
398#endif 395#endif
399} 396}
400 397
401static inline int
402ptep_test_and_clear_dirty (struct vm_area_struct *vma, unsigned long addr, pte_t *ptep)
403{
404#ifdef CONFIG_SMP
405 if (!pte_dirty(*ptep))
406 return 0;
407 return test_and_clear_bit(_PAGE_D_BIT, ptep);
408#else
409 pte_t pte = *ptep;
410 if (!pte_dirty(pte))
411 return 0;
412 set_pte_at(vma->vm_mm, addr, ptep, pte_mkclean(pte));
413 return 1;
414#endif
415}
416
417static inline pte_t 398static inline pte_t
418ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep) 399ptep_get_and_clear(struct mm_struct *mm, unsigned long addr, pte_t *ptep)
419{ 400{
@@ -546,8 +527,10 @@ extern void lazy_mmu_prot_update (pte_t pte);
546# define ptep_set_access_flags(__vma, __addr, __ptep, __entry, __safely_writable) \ 527# define ptep_set_access_flags(__vma, __addr, __ptep, __entry, __safely_writable) \
547({ \ 528({ \
548 int __changed = !pte_same(*(__ptep), __entry); \ 529 int __changed = !pte_same(*(__ptep), __entry); \
549 if (__changed) \ 530 if (__changed) { \
550 ptep_establish(__vma, __addr, __ptep, __entry); \ 531 set_pte_at((__vma)->vm_mm, (__addr), __ptep, __entry); \
532 flush_tlb_page(__vma, __addr); \
533 } \
551 __changed; \ 534 __changed; \
552}) 535})
553#endif 536#endif
@@ -591,7 +574,6 @@ extern void lazy_mmu_prot_update (pte_t pte);
591#endif 574#endif
592 575
593#define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG 576#define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_YOUNG
594#define __HAVE_ARCH_PTEP_TEST_AND_CLEAR_DIRTY
595#define __HAVE_ARCH_PTEP_GET_AND_CLEAR 577#define __HAVE_ARCH_PTEP_GET_AND_CLEAR
596#define __HAVE_ARCH_PTEP_SET_WRPROTECT 578#define __HAVE_ARCH_PTEP_SET_WRPROTECT
597#define __HAVE_ARCH_PTE_SAME 579#define __HAVE_ARCH_PTE_SAME
diff --git a/include/asm-ia64/sn/sn_sal.h b/include/asm-ia64/sn/sn_sal.h
index 291e8ceed6e6..676b31a08c61 100644
--- a/include/asm-ia64/sn/sn_sal.h
+++ b/include/asm-ia64/sn/sn_sal.h
@@ -32,6 +32,7 @@
32#define SN_SAL_NO_FAULT_ZONE_VIRTUAL 0x02000010 32#define SN_SAL_NO_FAULT_ZONE_VIRTUAL 0x02000010
33#define SN_SAL_NO_FAULT_ZONE_PHYSICAL 0x02000011 33#define SN_SAL_NO_FAULT_ZONE_PHYSICAL 0x02000011
34#define SN_SAL_PRINT_ERROR 0x02000012 34#define SN_SAL_PRINT_ERROR 0x02000012
35#define SN_SAL_REGISTER_PMI_HANDLER 0x02000014
35#define SN_SAL_SET_ERROR_HANDLING_FEATURES 0x0200001a // reentrant 36#define SN_SAL_SET_ERROR_HANDLING_FEATURES 0x0200001a // reentrant
36#define SN_SAL_GET_FIT_COMPT 0x0200001b // reentrant 37#define SN_SAL_GET_FIT_COMPT 0x0200001b // reentrant
37#define SN_SAL_GET_SAPIC_INFO 0x0200001d 38#define SN_SAL_GET_SAPIC_INFO 0x0200001d
@@ -680,6 +681,25 @@ sn_register_nofault_code(u64 start_addr, u64 end_addr, u64 return_addr,
680} 681}
681 682
682/* 683/*
684 * Register or unregister a function to handle a PMI received by a CPU.
685 * Before calling the registered handler, SAL sets r1 to the value that
686 * was passed in as the global_pointer.
687 *
688 * If the handler pointer is NULL, then the currently registered handler
689 * will be unregistered.
690 *
691 * Returns 0 on success, or a negative value if an error occurred.
692 */
693static inline int
694sn_register_pmi_handler(u64 handler, u64 global_pointer)
695{
696 struct ia64_sal_retval ret_stuff;
697 ia64_sal_oemcall(&ret_stuff, SN_SAL_REGISTER_PMI_HANDLER, handler,
698 global_pointer, 0, 0, 0, 0, 0);
699 return ret_stuff.status;
700}
701
702/*
683 * Change or query the coherence domain for this partition. Each cpu-based 703 * Change or query the coherence domain for this partition. Each cpu-based
684 * nasid is represented by a bit in an array of 64-bit words: 704 * nasid is represented by a bit in an array of 64-bit words:
685 * 0 = not in this partition's coherency domain 705 * 0 = not in this partition's coherency domain
@@ -696,8 +716,8 @@ static inline int
696sn_change_coherence(u64 *new_domain, u64 *old_domain) 716sn_change_coherence(u64 *new_domain, u64 *old_domain)
697{ 717{
698 struct ia64_sal_retval ret_stuff; 718 struct ia64_sal_retval ret_stuff;
699 ia64_sal_oemcall(&ret_stuff, SN_SAL_COHERENCE, (u64)new_domain, 719 ia64_sal_oemcall_nolock(&ret_stuff, SN_SAL_COHERENCE, (u64)new_domain,
700 (u64)old_domain, 0, 0, 0, 0, 0); 720 (u64)old_domain, 0, 0, 0, 0, 0);
701 return ret_stuff.status; 721 return ret_stuff.status;
702} 722}
703 723
diff --git a/include/asm-ia64/termbits.h b/include/asm-ia64/termbits.h
index 4531a511bde5..9f162e0089ad 100644
--- a/include/asm-ia64/termbits.h
+++ b/include/asm-ia64/termbits.h
@@ -26,6 +26,17 @@ struct termios {
26 cc_t c_cc[NCCS]; /* control characters */ 26 cc_t c_cc[NCCS]; /* control characters */
27}; 27};
28 28
29struct termios2 {
30 tcflag_t c_iflag; /* input mode flags */
31 tcflag_t c_oflag; /* output mode flags */
32 tcflag_t c_cflag; /* control mode flags */
33 tcflag_t c_lflag; /* local mode flags */
34 cc_t c_line; /* line discipline */
35 cc_t c_cc[NCCS]; /* control characters */
36 speed_t c_ispeed; /* input speed */
37 speed_t c_ospeed; /* output speed */
38};
39
29struct ktermios { 40struct ktermios {
30 tcflag_t c_iflag; /* input mode flags */ 41 tcflag_t c_iflag; /* input mode flags */
31 tcflag_t c_oflag; /* output mode flags */ 42 tcflag_t c_oflag; /* output mode flags */
@@ -138,6 +149,7 @@ struct ktermios {
138#define HUPCL 0002000 149#define HUPCL 0002000
139#define CLOCAL 0004000 150#define CLOCAL 0004000
140#define CBAUDEX 0010000 151#define CBAUDEX 0010000
152#define BOTHER 0010000
141#define B57600 0010001 153#define B57600 0010001
142#define B115200 0010002 154#define B115200 0010002
143#define B230400 0010003 155#define B230400 0010003
@@ -153,10 +165,12 @@ struct ktermios {
153#define B3000000 0010015 165#define B3000000 0010015
154#define B3500000 0010016 166#define B3500000 0010016
155#define B4000000 0010017 167#define B4000000 0010017
156#define CIBAUD 002003600000 /* input baud rate (not used) */ 168#define CIBAUD 002003600000 /* input baud rate */
157#define CMSPAR 010000000000 /* mark or space (stick) parity */ 169#define CMSPAR 010000000000 /* mark or space (stick) parity */
158#define CRTSCTS 020000000000 /* flow control */ 170#define CRTSCTS 020000000000 /* flow control */
159 171
172#define IBSHIFT 16 /* Shift from CBAUD to CIBAUD */
173
160/* c_lflag bits */ 174/* c_lflag bits */
161#define ISIG 0000001 175#define ISIG 0000001
162#define ICANON 0000002 176#define ICANON 0000002
diff --git a/include/asm-ia64/termios.h b/include/asm-ia64/termios.h
index 08750c2d3607..689d218c0c28 100644
--- a/include/asm-ia64/termios.h
+++ b/include/asm-ia64/termios.h
@@ -87,8 +87,10 @@ struct termio {
87 copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \ 87 copy_to_user((termio)->c_cc, (termios)->c_cc, NCC); \
88}) 88})
89 89
90#define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios)) 90#define user_termios_to_kernel_termios(k, u) copy_from_user(k, u, sizeof(struct termios2))
91#define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios)) 91#define kernel_termios_to_user_termios(u, k) copy_to_user(u, k, sizeof(struct termios2))
92#define user_termios_to_kernel_termios_1(k, u) copy_from_user(k, u, sizeof(struct termios))
93#define kernel_termios_to_user_termios_1(u, k) copy_to_user(u, k, sizeof(struct termios))
92 94
93# endif /* __KERNEL__ */ 95# endif /* __KERNEL__ */
94 96