diff options
Diffstat (limited to 'include/asm-sparc')
28 files changed, 511 insertions, 338 deletions
diff --git a/include/asm-sparc/ap1000/apreg.h b/include/asm-sparc/ap1000/apreg.h index 11a7a8666..bf1ea66d3 100644 --- a/include/asm-sparc/ap1000/apreg.h +++ b/include/asm-sparc/ap1000/apreg.h @@ -12,7 +12,7 @@ #include <asm/page.h> #include <asm/ap1000/apservice.h> #include <asm/ap1000/apbif.h> -#include <linux/tasks.h> +#include <linux/threads.h> /* * Macros for accessing I/O registers. diff --git a/include/asm-sparc/asm_offsets.h b/include/asm-sparc/asm_offsets.h index dc35d5481..306e89d06 100644 --- a/include/asm-sparc/asm_offsets.h +++ b/include/asm-sparc/asm_offsets.h @@ -36,10 +36,8 @@ #define ASIZ_task_next_task 0x00000004 #define AOFF_task_prev_task 0x00000038 #define ASIZ_task_prev_task 0x00000004 -#define AOFF_task_next_run 0x0000003c -#define ASIZ_task_next_run 0x00000004 -#define AOFF_task_prev_run 0x00000040 -#define ASIZ_task_prev_run 0x00000004 +#define AOFF_task_run_list 0x0000003c +#define ASIZ_task_run_list 0x00000008 #define AOFF_task_binfmt 0x00000044 #define ASIZ_task_binfmt 0x00000004 #define AOFF_task_exit_code 0x00000048 @@ -74,113 +72,113 @@ #define ASIZ_task_pidhash_next 0x00000004 #define AOFF_task_pidhash_pprev 0x00000088 #define ASIZ_task_pidhash_pprev 0x00000004 -#define AOFF_task_tarray_ptr 0x0000008c -#define ASIZ_task_tarray_ptr 0x00000004 -#define AOFF_task_wait_chldexit 0x00000090 +#define AOFF_task_wait_chldexit 0x0000008c #define ASIZ_task_wait_chldexit 0x00000014 -#define AOFF_task_vfork_sem 0x000000a4 +#define AOFF_task_vfork_sem 0x000000a0 #define ASIZ_task_vfork_sem 0x00000004 -#define AOFF_task_policy 0x000000a8 +#define AOFF_task_policy 0x000000a4 #define ASIZ_task_policy 0x00000004 -#define AOFF_task_rt_priority 0x000000ac +#define AOFF_task_rt_priority 0x000000a8 #define ASIZ_task_rt_priority 0x00000004 -#define AOFF_task_it_real_value 0x000000b0 +#define AOFF_task_it_real_value 0x000000ac #define ASIZ_task_it_real_value 0x00000004 -#define AOFF_task_it_prof_value 0x000000b4 +#define AOFF_task_it_prof_value 0x000000b0 #define ASIZ_task_it_prof_value 0x00000004 -#define AOFF_task_it_virt_value 0x000000b8 +#define AOFF_task_it_virt_value 0x000000b4 #define ASIZ_task_it_virt_value 0x00000004 -#define AOFF_task_it_real_incr 0x000000bc +#define AOFF_task_it_real_incr 0x000000b8 #define ASIZ_task_it_real_incr 0x00000004 -#define AOFF_task_it_prof_incr 0x000000c0 +#define AOFF_task_it_prof_incr 0x000000bc #define ASIZ_task_it_prof_incr 0x00000004 -#define AOFF_task_it_virt_incr 0x000000c4 +#define AOFF_task_it_virt_incr 0x000000c0 #define ASIZ_task_it_virt_incr 0x00000004 -#define AOFF_task_real_timer 0x000000c8 +#define AOFF_task_real_timer 0x000000c4 #define ASIZ_task_real_timer 0x00000014 -#define AOFF_task_times 0x000000dc +#define AOFF_task_times 0x000000d8 #define ASIZ_task_times 0x00000010 -#define AOFF_task_start_time 0x000000ec +#define AOFF_task_start_time 0x000000e8 #define ASIZ_task_start_time 0x00000004 -#define AOFF_task_per_cpu_utime 0x000000f0 +#define AOFF_task_per_cpu_utime 0x000000ec #define ASIZ_task_per_cpu_utime 0x00000004 -#define AOFF_task_min_flt 0x000000f8 +#define AOFF_task_min_flt 0x000000f4 #define ASIZ_task_min_flt 0x00000004 -#define AOFF_task_maj_flt 0x000000fc +#define AOFF_task_maj_flt 0x000000f8 #define ASIZ_task_maj_flt 0x00000004 -#define AOFF_task_nswap 0x00000100 +#define AOFF_task_nswap 0x000000fc #define ASIZ_task_nswap 0x00000004 -#define AOFF_task_cmin_flt 0x00000104 +#define AOFF_task_cmin_flt 0x00000100 #define ASIZ_task_cmin_flt 0x00000004 -#define AOFF_task_cmaj_flt 0x00000108 +#define AOFF_task_cmaj_flt 0x00000104 #define ASIZ_task_cmaj_flt 0x00000004 -#define AOFF_task_cnswap 0x0000010c +#define AOFF_task_cnswap 0x00000108 #define ASIZ_task_cnswap 0x00000004 -#define AOFF_task_uid 0x00000112 +#define AOFF_task_uid 0x0000010e #define ASIZ_task_uid 0x00000002 -#define AOFF_task_euid 0x00000114 +#define AOFF_task_euid 0x00000110 #define ASIZ_task_euid 0x00000002 -#define AOFF_task_suid 0x00000116 +#define AOFF_task_suid 0x00000112 #define ASIZ_task_suid 0x00000002 -#define AOFF_task_fsuid 0x00000118 +#define AOFF_task_fsuid 0x00000114 #define ASIZ_task_fsuid 0x00000002 -#define AOFF_task_gid 0x0000011a +#define AOFF_task_gid 0x00000116 #define ASIZ_task_gid 0x00000002 -#define AOFF_task_egid 0x0000011c +#define AOFF_task_egid 0x00000118 #define ASIZ_task_egid 0x00000002 -#define AOFF_task_sgid 0x0000011e +#define AOFF_task_sgid 0x0000011a #define ASIZ_task_sgid 0x00000002 -#define AOFF_task_fsgid 0x00000120 +#define AOFF_task_fsgid 0x0000011c #define ASIZ_task_fsgid 0x00000002 -#define AOFF_task_ngroups 0x00000124 +#define AOFF_task_ngroups 0x00000120 #define ASIZ_task_ngroups 0x00000004 -#define AOFF_task_groups 0x00000128 +#define AOFF_task_groups 0x00000124 #define ASIZ_task_groups 0x00000040 -#define AOFF_task_cap_effective 0x00000168 +#define AOFF_task_cap_effective 0x00000164 #define ASIZ_task_cap_effective 0x00000004 -#define AOFF_task_cap_inheritable 0x0000016c +#define AOFF_task_cap_inheritable 0x00000168 #define ASIZ_task_cap_inheritable 0x00000004 -#define AOFF_task_cap_permitted 0x00000170 +#define AOFF_task_cap_permitted 0x0000016c #define ASIZ_task_cap_permitted 0x00000004 -#define AOFF_task_user 0x00000174 +#define AOFF_task_user 0x00000170 #define ASIZ_task_user 0x00000004 -#define AOFF_task_rlim 0x00000178 +#define AOFF_task_rlim 0x00000174 #define ASIZ_task_rlim 0x00000050 -#define AOFF_task_used_math 0x000001c8 +#define AOFF_task_used_math 0x000001c4 #define ASIZ_task_used_math 0x00000002 -#define AOFF_task_comm 0x000001ca +#define AOFF_task_comm 0x000001c6 #define ASIZ_task_comm 0x00000010 -#define AOFF_task_link_count 0x000001dc +#define AOFF_task_link_count 0x000001d8 #define ASIZ_task_link_count 0x00000004 -#define AOFF_task_tty 0x000001e0 +#define AOFF_task_tty 0x000001dc #define ASIZ_task_tty 0x00000004 -#define AOFF_task_semundo 0x000001e4 +#define AOFF_task_semundo 0x000001e0 #define ASIZ_task_semundo 0x00000004 -#define AOFF_task_semsleeping 0x000001e8 +#define AOFF_task_semsleeping 0x000001e4 #define ASIZ_task_semsleeping 0x00000004 -#define AOFF_task_tss 0x000001f0 -#define ASIZ_task_tss 0x00000388 -#define AOFF_task_fs 0x00000578 +#define AOFF_task_thread 0x000001e8 +#define ASIZ_task_thread 0x00000388 +#define AOFF_task_fs 0x00000570 #define ASIZ_task_fs 0x00000004 -#define AOFF_task_files 0x0000057c +#define AOFF_task_files 0x00000574 #define ASIZ_task_files 0x00000004 -#define AOFF_task_mm 0x00000580 +#define AOFF_task_mm 0x00000578 #define ASIZ_task_mm 0x00000004 -#define AOFF_task_sigmask_lock 0x00000584 +#define AOFF_task_active_mm 0x0000057c +#define ASIZ_task_active_mm 0x00000004 +#define AOFF_task_sigmask_lock 0x00000580 #define ASIZ_task_sigmask_lock 0x00000001 -#define AOFF_task_sig 0x00000588 +#define AOFF_task_sig 0x00000584 #define ASIZ_task_sig 0x00000004 -#define AOFF_task_signal 0x0000058c +#define AOFF_task_signal 0x00000588 #define ASIZ_task_signal 0x00000008 -#define AOFF_task_blocked 0x00000594 +#define AOFF_task_blocked 0x00000590 #define ASIZ_task_blocked 0x00000008 -#define AOFF_task_sigqueue 0x0000059c +#define AOFF_task_sigqueue 0x00000598 #define ASIZ_task_sigqueue 0x00000004 -#define AOFF_task_sigqueue_tail 0x000005a0 +#define AOFF_task_sigqueue_tail 0x0000059c #define ASIZ_task_sigqueue_tail 0x00000004 -#define AOFF_task_sas_ss_sp 0x000005a4 +#define AOFF_task_sas_ss_sp 0x000005a0 #define ASIZ_task_sas_ss_sp 0x00000004 -#define AOFF_task_sas_ss_size 0x000005a8 +#define AOFF_task_sas_ss_size 0x000005a4 #define ASIZ_task_sas_ss_size 0x00000004 #define AOFF_mm_mmap 0x00000000 #define ASIZ_mm_mmap 0x00000004 @@ -190,53 +188,55 @@ #define ASIZ_mm_mmap_cache 0x00000004 #define AOFF_mm_pgd 0x0000000c #define ASIZ_mm_pgd 0x00000004 -#define AOFF_mm_count 0x00000010 -#define ASIZ_mm_count 0x00000004 -#define AOFF_mm_map_count 0x00000014 +#define AOFF_mm_mm_users 0x00000010 +#define ASIZ_mm_mm_users 0x00000004 +#define AOFF_mm_mm_count 0x00000014 +#define ASIZ_mm_mm_count 0x00000004 +#define AOFF_mm_map_count 0x00000018 #define ASIZ_mm_map_count 0x00000004 -#define AOFF_mm_mmap_sem 0x00000018 +#define AOFF_mm_mmap_sem 0x0000001c #define ASIZ_mm_mmap_sem 0x00000020 -#define AOFF_mm_page_table_lock 0x00000038 +#define AOFF_mm_page_table_lock 0x0000003c #define ASIZ_mm_page_table_lock 0x00000001 -#define AOFF_mm_context 0x0000003c +#define AOFF_mm_context 0x00000040 #define ASIZ_mm_context 0x00000004 -#define AOFF_mm_start_code 0x00000040 +#define AOFF_mm_start_code 0x00000044 #define ASIZ_mm_start_code 0x00000004 -#define AOFF_mm_end_code 0x00000044 +#define AOFF_mm_end_code 0x00000048 #define ASIZ_mm_end_code 0x00000004 -#define AOFF_mm_start_data 0x00000048 +#define AOFF_mm_start_data 0x0000004c #define ASIZ_mm_start_data 0x00000004 -#define AOFF_mm_end_data 0x0000004c +#define AOFF_mm_end_data 0x00000050 #define ASIZ_mm_end_data 0x00000004 -#define AOFF_mm_start_brk 0x00000050 +#define AOFF_mm_start_brk 0x00000054 #define ASIZ_mm_start_brk 0x00000004 -#define AOFF_mm_brk 0x00000054 +#define AOFF_mm_brk 0x00000058 #define ASIZ_mm_brk 0x00000004 -#define AOFF_mm_start_stack 0x00000058 +#define AOFF_mm_start_stack 0x0000005c #define ASIZ_mm_start_stack 0x00000004 -#define AOFF_mm_arg_start 0x0000005c +#define AOFF_mm_arg_start 0x00000060 #define ASIZ_mm_arg_start 0x00000004 -#define AOFF_mm_arg_end 0x00000060 +#define AOFF_mm_arg_end 0x00000064 #define ASIZ_mm_arg_end 0x00000004 -#define AOFF_mm_env_start 0x00000064 +#define AOFF_mm_env_start 0x00000068 #define ASIZ_mm_env_start 0x00000004 -#define AOFF_mm_env_end 0x00000068 +#define AOFF_mm_env_end 0x0000006c #define ASIZ_mm_env_end 0x00000004 -#define AOFF_mm_rss 0x0000006c +#define AOFF_mm_rss 0x00000070 #define ASIZ_mm_rss 0x00000004 -#define AOFF_mm_total_vm 0x00000070 +#define AOFF_mm_total_vm 0x00000074 #define ASIZ_mm_total_vm 0x00000004 -#define AOFF_mm_locked_vm 0x00000074 +#define AOFF_mm_locked_vm 0x00000078 #define ASIZ_mm_locked_vm 0x00000004 -#define AOFF_mm_def_flags 0x00000078 +#define AOFF_mm_def_flags 0x0000007c #define ASIZ_mm_def_flags 0x00000004 -#define AOFF_mm_cpu_vm_mask 0x0000007c +#define AOFF_mm_cpu_vm_mask 0x00000080 #define ASIZ_mm_cpu_vm_mask 0x00000004 -#define AOFF_mm_swap_cnt 0x00000080 +#define AOFF_mm_swap_cnt 0x00000084 #define ASIZ_mm_swap_cnt 0x00000004 -#define AOFF_mm_swap_address 0x00000084 +#define AOFF_mm_swap_address 0x00000088 #define ASIZ_mm_swap_address 0x00000004 -#define AOFF_mm_segments 0x00000088 +#define AOFF_mm_segments 0x0000008c #define ASIZ_mm_segments 0x00000004 #define AOFF_thread_uwinmask 0x00000000 #define ASIZ_thread_uwinmask 0x00000004 @@ -313,10 +313,8 @@ #define ASIZ_task_next_task 0x00000004 #define AOFF_task_prev_task 0x00000038 #define ASIZ_task_prev_task 0x00000004 -#define AOFF_task_next_run 0x0000003c -#define ASIZ_task_next_run 0x00000004 -#define AOFF_task_prev_run 0x00000040 -#define ASIZ_task_prev_run 0x00000004 +#define AOFF_task_run_list 0x0000003c +#define ASIZ_task_run_list 0x00000008 #define AOFF_task_binfmt 0x00000044 #define ASIZ_task_binfmt 0x00000004 #define AOFF_task_exit_code 0x00000048 @@ -351,113 +349,113 @@ #define ASIZ_task_pidhash_next 0x00000004 #define AOFF_task_pidhash_pprev 0x00000088 #define ASIZ_task_pidhash_pprev 0x00000004 -#define AOFF_task_tarray_ptr 0x0000008c -#define ASIZ_task_tarray_ptr 0x00000004 -#define AOFF_task_wait_chldexit 0x00000090 +#define AOFF_task_wait_chldexit 0x0000008c #define ASIZ_task_wait_chldexit 0x00000018 -#define AOFF_task_vfork_sem 0x000000a8 +#define AOFF_task_vfork_sem 0x000000a4 #define ASIZ_task_vfork_sem 0x00000004 -#define AOFF_task_policy 0x000000ac +#define AOFF_task_policy 0x000000a8 #define ASIZ_task_policy 0x00000004 -#define AOFF_task_rt_priority 0x000000b0 +#define AOFF_task_rt_priority 0x000000ac #define ASIZ_task_rt_priority 0x00000004 -#define AOFF_task_it_real_value 0x000000b4 +#define AOFF_task_it_real_value 0x000000b0 #define ASIZ_task_it_real_value 0x00000004 -#define AOFF_task_it_prof_value 0x000000b8 +#define AOFF_task_it_prof_value 0x000000b4 #define ASIZ_task_it_prof_value 0x00000004 -#define AOFF_task_it_virt_value 0x000000bc +#define AOFF_task_it_virt_value 0x000000b8 #define ASIZ_task_it_virt_value 0x00000004 -#define AOFF_task_it_real_incr 0x000000c0 +#define AOFF_task_it_real_incr 0x000000bc #define ASIZ_task_it_real_incr 0x00000004 -#define AOFF_task_it_prof_incr 0x000000c4 +#define AOFF_task_it_prof_incr 0x000000c0 #define ASIZ_task_it_prof_incr 0x00000004 -#define AOFF_task_it_virt_incr 0x000000c8 +#define AOFF_task_it_virt_incr 0x000000c4 #define ASIZ_task_it_virt_incr 0x00000004 -#define AOFF_task_real_timer 0x000000cc +#define AOFF_task_real_timer 0x000000c8 #define ASIZ_task_real_timer 0x00000014 -#define AOFF_task_times 0x000000e0 +#define AOFF_task_times 0x000000dc #define ASIZ_task_times 0x00000010 -#define AOFF_task_start_time 0x000000f0 +#define AOFF_task_start_time 0x000000ec #define ASIZ_task_start_time 0x00000004 -#define AOFF_task_per_cpu_utime 0x000000f4 +#define AOFF_task_per_cpu_utime 0x000000f0 #define ASIZ_task_per_cpu_utime 0x00000080 -#define AOFF_task_min_flt 0x000001f4 +#define AOFF_task_min_flt 0x000001f0 #define ASIZ_task_min_flt 0x00000004 -#define AOFF_task_maj_flt 0x000001f8 +#define AOFF_task_maj_flt 0x000001f4 #define ASIZ_task_maj_flt 0x00000004 -#define AOFF_task_nswap 0x000001fc +#define AOFF_task_nswap 0x000001f8 #define ASIZ_task_nswap 0x00000004 -#define AOFF_task_cmin_flt 0x00000200 +#define AOFF_task_cmin_flt 0x000001fc #define ASIZ_task_cmin_flt 0x00000004 -#define AOFF_task_cmaj_flt 0x00000204 +#define AOFF_task_cmaj_flt 0x00000200 #define ASIZ_task_cmaj_flt 0x00000004 -#define AOFF_task_cnswap 0x00000208 +#define AOFF_task_cnswap 0x00000204 #define ASIZ_task_cnswap 0x00000004 -#define AOFF_task_uid 0x0000020e +#define AOFF_task_uid 0x0000020a #define ASIZ_task_uid 0x00000002 -#define AOFF_task_euid 0x00000210 +#define AOFF_task_euid 0x0000020c #define ASIZ_task_euid 0x00000002 -#define AOFF_task_suid 0x00000212 +#define AOFF_task_suid 0x0000020e #define ASIZ_task_suid 0x00000002 -#define AOFF_task_fsuid 0x00000214 +#define AOFF_task_fsuid 0x00000210 #define ASIZ_task_fsuid 0x00000002 -#define AOFF_task_gid 0x00000216 +#define AOFF_task_gid 0x00000212 #define ASIZ_task_gid 0x00000002 -#define AOFF_task_egid 0x00000218 +#define AOFF_task_egid 0x00000214 #define ASIZ_task_egid 0x00000002 -#define AOFF_task_sgid 0x0000021a +#define AOFF_task_sgid 0x00000216 #define ASIZ_task_sgid 0x00000002 -#define AOFF_task_fsgid 0x0000021c +#define AOFF_task_fsgid 0x00000218 #define ASIZ_task_fsgid 0x00000002 -#define AOFF_task_ngroups 0x00000220 +#define AOFF_task_ngroups 0x0000021c #define ASIZ_task_ngroups 0x00000004 -#define AOFF_task_groups 0x00000224 +#define AOFF_task_groups 0x00000220 #define ASIZ_task_groups 0x00000040 -#define AOFF_task_cap_effective 0x00000264 +#define AOFF_task_cap_effective 0x00000260 #define ASIZ_task_cap_effective 0x00000004 -#define AOFF_task_cap_inheritable 0x00000268 +#define AOFF_task_cap_inheritable 0x00000264 #define ASIZ_task_cap_inheritable 0x00000004 -#define AOFF_task_cap_permitted 0x0000026c +#define AOFF_task_cap_permitted 0x00000268 #define ASIZ_task_cap_permitted 0x00000004 -#define AOFF_task_user 0x00000270 +#define AOFF_task_user 0x0000026c #define ASIZ_task_user 0x00000004 -#define AOFF_task_rlim 0x00000274 +#define AOFF_task_rlim 0x00000270 #define ASIZ_task_rlim 0x00000050 -#define AOFF_task_used_math 0x000002c4 +#define AOFF_task_used_math 0x000002c0 #define ASIZ_task_used_math 0x00000002 -#define AOFF_task_comm 0x000002c6 +#define AOFF_task_comm 0x000002c2 #define ASIZ_task_comm 0x00000010 -#define AOFF_task_link_count 0x000002d8 +#define AOFF_task_link_count 0x000002d4 #define ASIZ_task_link_count 0x00000004 -#define AOFF_task_tty 0x000002dc +#define AOFF_task_tty 0x000002d8 #define ASIZ_task_tty 0x00000004 -#define AOFF_task_semundo 0x000002e0 +#define AOFF_task_semundo 0x000002dc #define ASIZ_task_semundo 0x00000004 -#define AOFF_task_semsleeping 0x000002e4 +#define AOFF_task_semsleeping 0x000002e0 #define ASIZ_task_semsleeping 0x00000004 -#define AOFF_task_tss 0x000002e8 -#define ASIZ_task_tss 0x00000388 +#define AOFF_task_thread 0x000002e8 +#define ASIZ_task_thread 0x00000388 #define AOFF_task_fs 0x00000670 #define ASIZ_task_fs 0x00000004 #define AOFF_task_files 0x00000674 #define ASIZ_task_files 0x00000004 #define AOFF_task_mm 0x00000678 #define ASIZ_task_mm 0x00000004 -#define AOFF_task_sigmask_lock 0x0000067c +#define AOFF_task_active_mm 0x0000067c +#define ASIZ_task_active_mm 0x00000004 +#define AOFF_task_sigmask_lock 0x00000680 #define ASIZ_task_sigmask_lock 0x00000008 -#define AOFF_task_sig 0x00000684 +#define AOFF_task_sig 0x00000688 #define ASIZ_task_sig 0x00000004 -#define AOFF_task_signal 0x00000688 +#define AOFF_task_signal 0x0000068c #define ASIZ_task_signal 0x00000008 -#define AOFF_task_blocked 0x00000690 +#define AOFF_task_blocked 0x00000694 #define ASIZ_task_blocked 0x00000008 -#define AOFF_task_sigqueue 0x00000698 +#define AOFF_task_sigqueue 0x0000069c #define ASIZ_task_sigqueue 0x00000004 -#define AOFF_task_sigqueue_tail 0x0000069c +#define AOFF_task_sigqueue_tail 0x000006a0 #define ASIZ_task_sigqueue_tail 0x00000004 -#define AOFF_task_sas_ss_sp 0x000006a0 +#define AOFF_task_sas_ss_sp 0x000006a4 #define ASIZ_task_sas_ss_sp 0x00000004 -#define AOFF_task_sas_ss_size 0x000006a4 +#define AOFF_task_sas_ss_size 0x000006a8 #define ASIZ_task_sas_ss_size 0x00000004 #define AOFF_mm_mmap 0x00000000 #define ASIZ_mm_mmap 0x00000004 @@ -467,53 +465,55 @@ #define ASIZ_mm_mmap_cache 0x00000004 #define AOFF_mm_pgd 0x0000000c #define ASIZ_mm_pgd 0x00000004 -#define AOFF_mm_count 0x00000010 -#define ASIZ_mm_count 0x00000004 -#define AOFF_mm_map_count 0x00000014 +#define AOFF_mm_mm_users 0x00000010 +#define ASIZ_mm_mm_users 0x00000004 +#define AOFF_mm_mm_count 0x00000014 +#define ASIZ_mm_mm_count 0x00000004 +#define AOFF_mm_map_count 0x00000018 #define ASIZ_mm_map_count 0x00000004 -#define AOFF_mm_mmap_sem 0x00000018 +#define AOFF_mm_mmap_sem 0x0000001c #define ASIZ_mm_mmap_sem 0x00000024 -#define AOFF_mm_page_table_lock 0x0000003c +#define AOFF_mm_page_table_lock 0x00000040 #define ASIZ_mm_page_table_lock 0x00000008 -#define AOFF_mm_context 0x00000044 +#define AOFF_mm_context 0x00000048 #define ASIZ_mm_context 0x00000004 -#define AOFF_mm_start_code 0x00000048 +#define AOFF_mm_start_code 0x0000004c #define ASIZ_mm_start_code 0x00000004 -#define AOFF_mm_end_code 0x0000004c +#define AOFF_mm_end_code 0x00000050 #define ASIZ_mm_end_code 0x00000004 -#define AOFF_mm_start_data 0x00000050 +#define AOFF_mm_start_data 0x00000054 #define ASIZ_mm_start_data 0x00000004 -#define AOFF_mm_end_data 0x00000054 +#define AOFF_mm_end_data 0x00000058 #define ASIZ_mm_end_data 0x00000004 -#define AOFF_mm_start_brk 0x00000058 +#define AOFF_mm_start_brk 0x0000005c #define ASIZ_mm_start_brk 0x00000004 -#define AOFF_mm_brk 0x0000005c +#define AOFF_mm_brk 0x00000060 #define ASIZ_mm_brk 0x00000004 -#define AOFF_mm_start_stack 0x00000060 +#define AOFF_mm_start_stack 0x00000064 #define ASIZ_mm_start_stack 0x00000004 -#define AOFF_mm_arg_start 0x00000064 +#define AOFF_mm_arg_start 0x00000068 #define ASIZ_mm_arg_start 0x00000004 -#define AOFF_mm_arg_end 0x00000068 +#define AOFF_mm_arg_end 0x0000006c #define ASIZ_mm_arg_end 0x00000004 -#define AOFF_mm_env_start 0x0000006c +#define AOFF_mm_env_start 0x00000070 #define ASIZ_mm_env_start 0x00000004 -#define AOFF_mm_env_end 0x00000070 +#define AOFF_mm_env_end 0x00000074 #define ASIZ_mm_env_end 0x00000004 -#define AOFF_mm_rss 0x00000074 +#define AOFF_mm_rss 0x00000078 #define ASIZ_mm_rss 0x00000004 -#define AOFF_mm_total_vm 0x00000078 +#define AOFF_mm_total_vm 0x0000007c #define ASIZ_mm_total_vm 0x00000004 -#define AOFF_mm_locked_vm 0x0000007c +#define AOFF_mm_locked_vm 0x00000080 #define ASIZ_mm_locked_vm 0x00000004 -#define AOFF_mm_def_flags 0x00000080 +#define AOFF_mm_def_flags 0x00000084 #define ASIZ_mm_def_flags 0x00000004 -#define AOFF_mm_cpu_vm_mask 0x00000084 +#define AOFF_mm_cpu_vm_mask 0x00000088 #define ASIZ_mm_cpu_vm_mask 0x00000004 -#define AOFF_mm_swap_cnt 0x00000088 +#define AOFF_mm_swap_cnt 0x0000008c #define ASIZ_mm_swap_cnt 0x00000004 -#define AOFF_mm_swap_address 0x0000008c +#define AOFF_mm_swap_address 0x00000090 #define ASIZ_mm_swap_address 0x00000004 -#define AOFF_mm_segments 0x00000090 +#define AOFF_mm_segments 0x00000094 #define ASIZ_mm_segments 0x00000004 #define AOFF_thread_uwinmask 0x00000000 #define ASIZ_thread_uwinmask 0x00000004 diff --git a/include/asm-sparc/audioio.h b/include/asm-sparc/audioio.h index 01bebaf73..cb9a213a3 100644 --- a/include/asm-sparc/audioio.h +++ b/include/asm-sparc/audioio.h @@ -299,6 +299,8 @@ struct sparcaudio_driver /* Hack to make it look like we support variable size buffers. */ int buffer_size; + + int mixer_modify_counter; }; struct sparcaudio_operations @@ -432,23 +434,6 @@ extern int cs4231_init(void); #endif -/* Mixer helper ioctls */ -#define right(a) (((a >> 8) & 0xff) % 101) -#define left(a) ((a & 0xff) % 101) - -/* Macros to convert between mixer stereo volumes and gain (mono) */ -#define s_to_m(a) ((((left(a) + right(a)) * 255) / 200) % 256) -#define m_to_s(a) ((a * 100 / 255) + ((a * 100 / 255) << 8)) - -/* convert mixer stereo volume to balance */ -#define s_to_b(a) (s_to_g(a) == 0) ? 32 : ((left(a) * AUDIO_RIGHT_BALANCE / (left(a) + right(a)))) - -/* convert mixer stereo volume to audio gain */ -#define s_to_g(a) ((((right(a) + left(a)) * 255) / 200) % 256) - -/* convert gain a and balance b to mixer volume */ -#define b_to_s(a,b) (((((b * a * 200) / (AUDIO_RIGHT_BALANCE * 255)) % 100) << 8) + ((((AUDIO_RIGHT_BALANCE - b) * a * 200) / (AUDIO_RIGHT_BALANCE * 255)) % 100)) - /* Device minor numbers */ #define SPARCAUDIO_MIXER_MINOR 0 @@ -514,4 +499,147 @@ struct stdata #define I_GETSIG _IOR('S',012,int) #define I_GETSIG_SOLARIS (('S'<<8)|12) -#endif + +/* Conversion between Sun and OSS volume settings */ +static __inline__ +int OSS_LEFT(int value) +{ + return ((value & 0xff) % 101); +} + +static __inline__ +int OSS_RIGHT(int value) +{ + return (((value >> 8) & 0xff) % 101); +} + +static __inline__ +int O_TO_S(int value) +{ + return value * 255 / 100; +} + +static __inline__ +int S_TO_O(int value) +{ + return value * 100 / 255; +} + +static __inline__ +int OSS_TO_GAIN(int value) +{ + int l = O_TO_S(OSS_LEFT(value)); + int r = O_TO_S(OSS_RIGHT(value)); + return ((l > r) ? l : r); +} + +static __inline__ +int OSS_TO_LGAIN(int value) +{ + int l = O_TO_S(OSS_LEFT(value)); + int r = O_TO_S(OSS_RIGHT(value)); + return ((l < r) ? l : r); +} + +static __inline__ +int OSS_TO_BAL(int value) +{ + if (!OSS_TO_GAIN(value)) + return AUDIO_MID_BALANCE; + if (!OSS_TO_LGAIN(value)) { + if (OSS_TO_GAIN(value) == OSS_TO_GAIN(OSS_RIGHT(value))) + return AUDIO_RIGHT_BALANCE; + else + return AUDIO_LEFT_BALANCE; + } + if (OSS_TO_GAIN(value) == OSS_TO_GAIN(OSS_RIGHT(value))) + return ((OSS_TO_GAIN(value) - OSS_TO_LGAIN(value)) >> AUDIO_BALANCE_SHIFT) + + AUDIO_MID_BALANCE; + else + return AUDIO_MID_BALANCE - ((OSS_TO_GAIN(value) - OSS_TO_LGAIN(value)) + >> AUDIO_BALANCE_SHIFT); +} + +static __inline__ +int BAL_TO_OSS(int value, unsigned char balance) +{ + int l, r, adj; + if (balance > 63) balance = 63; + if (balance < AUDIO_MID_BALANCE) { + l = (int)value * 100 / 255 + ((value * 100 % 255) > 0); + adj = ((AUDIO_MID_BALANCE - balance) << AUDIO_BALANCE_SHIFT); + if (adj < value) + r = (int)(value - adj) + * 100 / 255; + else r = 0; + } else if (balance > AUDIO_MID_BALANCE) { + r = (int)value * 100 / 255 + ((value * 100 % 255) > 0); + adj = ((balance - AUDIO_MID_BALANCE) << AUDIO_BALANCE_SHIFT); + if (adj < value) + l = (int)(value - adj) + * 100 / 255; + else l = 0; + } else { + l = r = (int)value * 100 / 255 + ((value * 100 % 255) > 0); + } + + return ((r << 8) + l); +} + +/* OSS mixer ioctl port handling */ +static __inline__ +int OSS_PORT_AUDIO(struct sparcaudio_driver *drv, unsigned int set) +{ + int p; + if (drv->ops->get_output_port) { + p = drv->ops->get_output_port(drv); + if (p & set) + return 0x6464; + } + return 0; +} + +static __inline__ +int OSS_IPORT_AUDIO(struct sparcaudio_driver *drv, unsigned int set) +{ + int p; + if (drv->ops->get_input_port) { + p = drv->ops->get_input_port(drv); + if (p & set) + return 0x6464; + } + return 0; +} + +static __inline__ +void OSS_TWIDDLE_PORT(struct sparcaudio_driver *drv, unsigned int ioctl, + unsigned int port, unsigned int set, unsigned int value) +{ + if (ioctl == port) { + int p; + if (drv->ops->get_output_port && drv->ops->set_output_port) { + p = drv->ops->get_output_port(drv); + if ((value == 0) || ((p & set) && (OSS_LEFT(value) < 100))) + drv->ops->set_output_port(drv, p & ~(set)); + else + drv->ops->set_output_port(drv, p | set); + } + } +} + +static __inline__ +void OSS_TWIDDLE_IPORT(struct sparcaudio_driver *drv, unsigned int ioctl, + unsigned int port, unsigned int set, unsigned int value) +{ + if (ioctl == port) { + int p; + if (drv->ops->get_input_port && drv->ops->set_input_port) { + p = drv->ops->get_input_port(drv); + if ((value == 0) || ((p & set) && (OSS_LEFT(value) < 100))) + drv->ops->set_input_port(drv, p & ~(set)); + else + drv->ops->set_input_port(drv, p | set); + } + } +} +#endif /* _AUDIOIO_H_ */ diff --git a/include/asm-sparc/cache.h b/include/asm-sparc/cache.h index 19885d7e9..6a5b74bb0 100644 --- a/include/asm-sparc/cache.h +++ b/include/asm-sparc/cache.h @@ -1,4 +1,4 @@ -/* $Id: cache.h,v 1.8 1999/03/11 00:14:45 davem Exp $ +/* $Id: cache.h,v 1.9 1999/08/14 03:51:58 anton Exp $ * cache.h: Cache specific code for the Sparc. These include flushing * and direct tag/data line access. * @@ -15,6 +15,14 @@ #define SMP_CACHE_BYTES 32 +#ifdef MODULE +#define __cacheline_aligned __attribute__((__aligned__(SMP_CACHE_BYTES))) +#else +#define __cacheline_aligned \ + __attribute__((__aligned__(SMP_CACHE_BYTES), \ + __section__(".data.cacheline_aligned"))) +#endif + /* Direct access to the instruction cache is provided through and * alternate address space. The IDC bit must be off in the ICCR on * HyperSparcs for these accesses to work. The code below does not do diff --git a/include/asm-sparc/dma.h b/include/asm-sparc/dma.h index 133e497c4..5bd5a4e53 100644 --- a/include/asm-sparc/dma.h +++ b/include/asm-sparc/dma.h @@ -1,4 +1,4 @@ -/* $Id: dma.h,v 1.29 1998/11/29 15:49:44 davem Exp $ +/* $Id: dma.h,v 1.31 1999/09/10 10:44:15 davem Exp $ * include/asm-sparc/dma.h * * Copyright 1995 (C) David S. Miller (davem@caip.rutgers.edu) @@ -16,7 +16,7 @@ #include <asm/delay.h> #include <asm/oplib.h> #include <asm/system.h> -#include <asm/spinlock.h> +#include <linux/spinlock.h> extern spinlock_t dma_spin_lock; @@ -119,6 +119,7 @@ extern void dvma_init(struct linux_sbus *); #define DMA_FIFO_STDRAIN 0x00000040 /* DMA_VERS1 Drain the FIFO */ #define DMA_RST_SCSI 0x00000080 /* Reset the SCSI controller */ #define DMA_RST_ENET DMA_RST_SCSI /* Reset the ENET controller */ +#define DMA_RST_BPP DMA_RST_SCSI /* Reset the BPP controller */ #define DMA_ST_WRITE 0x00000100 /* write from device to memory */ #define DMA_ENABLE 0x00000200 /* Fire up DMA, handle requests */ #define DMA_PEND_READ 0x00000400 /* DMA_VERS1/0/PLUS Pending Read */ @@ -135,8 +136,8 @@ extern void dvma_init(struct linux_sbus *); #define DMA_E_BURST8 0x00040000 /* ENET: SBUS r/w burst size */ #define DMA_BRST_SZ 0x000c0000 /* SCSI: SBUS r/w burst size */ #define DMA_BRST64 0x00080000 /* SCSI: 64byte bursts (HME on UltraSparc only) */ -#define DMA_BRST32 0x00040000 /* SCSI: 32byte bursts */ -#define DMA_BRST16 0x00000000 /* SCSI: 16byte bursts */ +#define DMA_BRST32 0x00040000 /* SCSI/BPP: 32byte bursts */ +#define DMA_BRST16 0x00000000 /* SCSI/BPP: 16byte bursts */ #define DMA_BRST0 0x00080000 /* SCSI: no bursts (non-HME gate arrays) */ #define DMA_ADDR_DISAB 0x00100000 /* No FIFO drains during addr */ #define DMA_2CLKS 0x00200000 /* Each transfer = 2 clock ticks */ @@ -145,6 +146,7 @@ extern void dvma_init(struct linux_sbus *); #define DMA_CNTR_DISAB 0x00800000 /* No IRQ when DMA_TERM_CNTR set */ #define DMA_AUTO_NADDR 0x01000000 /* Use "auto nxt addr" feature */ #define DMA_SCSI_ON 0x02000000 /* Enable SCSI dma */ +#define DMA_BPP_ON DMA_SCSI_ON /* Enable BPP dma */ #define DMA_PARITY_OFF 0x02000000 /* HME: disable parity checking */ #define DMA_LOADED_ADDR 0x04000000 /* Address has been loaded */ #define DMA_LOADED_NADDR 0x08000000 /* Next address has been loaded */ diff --git a/include/asm-sparc/fbio.h b/include/asm-sparc/fbio.h index 41329f311..a4b6afecc 100644 --- a/include/asm-sparc/fbio.h +++ b/include/asm-sparc/fbio.h @@ -36,6 +36,7 @@ /* Does not seem to be listed in the Sun file either */ #define FBTYPE_CREATOR 22 #define FBTYPE_PCI_IGA1682 23 +#define FBTYPE_P9100COLOR 24 /* fbio ioctls */ /* Returned by FBIOGTYPE */ diff --git a/include/asm-sparc/hardirq.h b/include/asm-sparc/hardirq.h index 12452e839..ed47c7760 100644 --- a/include/asm-sparc/hardirq.h +++ b/include/asm-sparc/hardirq.h @@ -7,7 +7,7 @@ #ifndef __SPARC_HARDIRQ_H #define __SPARC_HARDIRQ_H -#include <linux/tasks.h> +#include <linux/threads.h> #ifndef __SMP__ extern unsigned int local_irq_count; @@ -29,7 +29,7 @@ extern unsigned int local_irq_count; #else #include <asm/atomic.h> -#include <asm/spinlock.h> +#include <linux/spinlock.h> #include <asm/system.h> #include <asm/smp.h> diff --git a/include/asm-sparc/init.h b/include/asm-sparc/init.h index b5b1bbc47..17d215574 100644 --- a/include/asm-sparc/init.h +++ b/include/asm-sparc/init.h @@ -1,27 +1 @@ -#ifndef _SPARC_INIT_H -#define _SPARC_INIT_H - -#if (defined (__svr4__) || defined (__ELF__)) -#define __init __attribute__ ((__section__ (".text.init"))) -#define __initdata __attribute__ ((__section__ (".data.init"))) -#define __initfunc(__arginit) \ - __arginit __init; \ - __arginit -#define __cacheline_aligned __attribute__ \ - ((__section__ (".data.cacheline_aligned"))) -/* For assembly routines */ -#define __INIT .section ".text.init",#alloc,#execinstr -#define __FINIT .previous -#define __INITDATA .section ".data.init",#alloc,#write -#else -#define __init -#define __initdata -#define __initfunc(__arginit) __arginit -#define __cacheline_aligned -/* For assembly routines */ -#define __INIT -#define __FINIT -#define __INITDATA -#endif - -#endif +#error "<asm/init.h> should never be used - use <linux/init.h> instead" diff --git a/include/asm-sparc/io-unit.h b/include/asm-sparc/io-unit.h index fa020cd3f..42ff9b6a7 100644 --- a/include/asm-sparc/io-unit.h +++ b/include/asm-sparc/io-unit.h @@ -5,8 +5,8 @@ #ifndef _SPARC_IO_UNIT_H #define _SPARC_IO_UNIT_H +#include <linux/spinlock.h> #include <asm/page.h> -#include <asm/spinlock.h> #include <asm/pgtable.h> /* The io-unit handles all virtual to physical address translations diff --git a/include/asm-sparc/irq.h b/include/asm-sparc/irq.h index 38e861eb6..05c3374fa 100644 --- a/include/asm-sparc/irq.h +++ b/include/asm-sparc/irq.h @@ -1,4 +1,4 @@ -/* $Id: irq.h,v 1.26 1999/04/20 13:22:44 anton Exp $ +/* $Id: irq.h,v 1.27 1999/08/14 03:52:02 anton Exp $ * irq.h: IRQ registers on the Sparc. * * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) @@ -8,7 +8,7 @@ #define _SPARC_IRQ_H #include <linux/linkage.h> -#include <linux/tasks.h> /* For NR_CPUS */ +#include <linux/threads.h> /* For NR_CPUS */ #include <asm/system.h> /* For SUN4M_NCPUS */ #include <asm/btfixup.h> diff --git a/include/asm-sparc/mostek.h b/include/asm-sparc/mostek.h index e83d44d3c..c9a10cd86 100644 --- a/include/asm-sparc/mostek.h +++ b/include/asm-sparc/mostek.h @@ -1,4 +1,4 @@ -/* $Id: mostek.h,v 1.10 1998/08/18 15:03:11 davem Exp $ +/* $Id: mostek.h,v 1.12 1999/08/31 18:51:41 davem Exp $ * mostek.h: Describes the various Mostek time of day clock registers. * * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) @@ -38,6 +38,18 @@ * other than the control register are in binary coded decimal. Some * control bits also live outside the control register. */ +#define mostek_read(_addr) (*((volatile u8 *)(_addr))) +#define mostek_write(_addr,_val) ((*((volatile u8 *)(_addr))) = (_val)) +#define MOSTEK_EEPROM 0x0000UL +#define MOSTEK_IDPROM 0x07d8UL +#define MOSTEK_CREG 0x07f8UL +#define MOSTEK_SEC 0x07f9UL +#define MOSTEK_MIN 0x07faUL +#define MOSTEK_HOUR 0x07fbUL +#define MOSTEK_DOW 0x07fcUL +#define MOSTEK_DOM 0x07fdUL +#define MOSTEK_MONTH 0x07feUL +#define MOSTEK_YEAR 0x07ffUL struct mostek48t02 { volatile char eeprom[2008]; /* This is the eeprom, don't touch! */ @@ -52,7 +64,7 @@ struct mostek48t02 { volatile unsigned char year; /* Year (0-99) */ }; -extern struct mostek48t02 *mstk48t02_regs; +extern unsigned long mstk48t02_regs; /* Control register values. */ #define MSTK_CREG_WRITE 0x80 /* Must set this before placing values. */ @@ -81,14 +93,14 @@ extern struct mostek48t02 *mstk48t02_regs; #define MSTK_DECIMAL_TO_REGVAL(x) ((((x) / 0x0A) << 0x04) + ((x) % 0x0A)) /* Generic register set and get macros for internal use. */ -#define MSTK_GET(regs,var,mask) (MSTK_REGVAL_TO_DECIMAL(regs->var & MSTK_ ## mask ## _MASK)) -#define MSTK_SET(regs,var,value,mask) do { regs->var &= ~(MSTK_ ## mask ## _MASK); regs->var |= MSTK_DECIMAL_TO_REGVAL(value) & (MSTK_ ## mask ## _MASK); } while (0) +#define MSTK_GET(regs,var,mask) (MSTK_REGVAL_TO_DECIMAL(((struct mostek48t02 *)regs)->var & MSTK_ ## mask ## _MASK)) +#define MSTK_SET(regs,var,value,mask) do { ((struct mostek48t02 *)regs)->var &= ~(MSTK_ ## mask ## _MASK); ((struct mostek48t02 *)regs)->var |= MSTK_DECIMAL_TO_REGVAL(value) & (MSTK_ ## mask ## _MASK); } while (0) /* Macros to make register access easier on our fingers. These give you * the decimal value of the register requested if applicable. You pass * the a pointer to a 'struct mostek48t02'. */ -#define MSTK_REG_CREG(regs) (regs->creg) +#define MSTK_REG_CREG(regs) (((struct mostek48t02 *)regs)->creg) #define MSTK_REG_SEC(regs) MSTK_GET(regs,sec,SEC) #define MSTK_REG_MIN(regs) MSTK_GET(regs,min,MIN) #define MSTK_REG_HOUR(regs) MSTK_GET(regs,hour,HOUR) diff --git a/include/asm-sparc/page.h b/include/asm-sparc/page.h index 7ea969e04..a3754dfe2 100644 --- a/include/asm-sparc/page.h +++ b/include/asm-sparc/page.h @@ -1,4 +1,4 @@ -/* $Id: page.h,v 1.43 1998/05/11 08:40:11 davem Exp $ +/* $Id: page.h,v 1.45 1999/07/03 08:58:05 davem Exp $ * page.h: Various defines and such for MMU operations on the Sparc for * the Linux kernel. * diff --git a/include/asm-sparc/pci.h b/include/asm-sparc/pci.h new file mode 100644 index 000000000..17c8ce462 --- /dev/null +++ b/include/asm-sparc/pci.h @@ -0,0 +1,10 @@ +#ifndef __SPARC_PCI_H +#define __SPARC_PCI_H + +/* Can be used to override the logic in pci_scan_bus for skipping + * already-configured bus numbers - to be used for buggy BIOSes + * or architectures with incomplete PCI setup by the loader. + */ +#define pcibios_assign_all_busses() 0 + +#endif /* __SPARC_PCI_H */ diff --git a/include/asm-sparc/pgtable.h b/include/asm-sparc/pgtable.h index 05dfda736..305f6c6e4 100644 --- a/include/asm-sparc/pgtable.h +++ b/include/asm-sparc/pgtable.h @@ -1,4 +1,4 @@ -/* $Id: pgtable.h,v 1.80 1999/05/27 04:52:40 davem Exp $ */ +/* $Id: pgtable.h,v 1.82 1999/09/10 10:44:21 davem Exp $ */ #ifndef _SPARC_PGTABLE_H #define _SPARC_PGTABLE_H @@ -11,6 +11,7 @@ #include <linux/mm.h> #include <linux/config.h> +#include <linux/spinlock.h> #include <asm/asi.h> #ifdef CONFIG_SUN4 #include <asm/pgtsun4.h> @@ -22,7 +23,6 @@ #include <asm/oplib.h> #include <asm/sbus.h> #include <asm/btfixup.h> -#include <asm/spinlock.h> extern void load_mmu(void); extern int io_remap_page_range(unsigned long from, unsigned long to, diff --git a/include/asm-sparc/processor.h b/include/asm-sparc/processor.h index 2cec2f103..81739b0a5 100644 --- a/include/asm-sparc/processor.h +++ b/include/asm-sparc/processor.h @@ -1,4 +1,4 @@ -/* $Id: processor.h,v 1.71 1999/05/27 04:52:43 davem Exp $ +/* $Id: processor.h,v 1.72 1999/08/14 03:52:04 anton Exp $ * include/asm-sparc/processor.h * * Copyright (C) 1994 David S. Miller (davem@caip.rutgers.edu) @@ -96,7 +96,7 @@ struct thread_struct { #define INIT_MMAP { &init_mm, (0), (0), \ NULL, __pgprot(0x0) , VM_READ | VM_WRITE | VM_EXEC, 1, NULL, NULL } -#define INIT_TSS { \ +#define INIT_THREAD { \ /* uwinmask, kregs, sig_address, sig_desc, ksp, kpc, kpsr, kwim */ \ 0, 0, 0, 0, 0, 0, 0, 0, \ /* fork_kpsr, fork_kwim */ \ @@ -154,7 +154,7 @@ extern __inline__ void start_thread(struct pt_regs * regs, unsigned long pc, extern pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); -#define copy_segments(__nr, __tsk, __mm) \ +#define copy_segments(__tsk, __mm) \ if((__tsk) == current && \ (__mm) != NULL) \ flush_user_windows() @@ -162,6 +162,7 @@ extern pid_t kernel_thread(int (*fn)(void *), void * arg, unsigned long flags); #define forget_segments() do { } while (0) #ifdef __KERNEL__ +#define THREAD_SIZE (2*PAGE_SIZE) extern struct task_struct *last_task_used_math; @@ -177,14 +178,4 @@ BTFIXUPDEF_CALL(void, free_task_struct, struct task_struct *) #endif -/* - * Return_address is a replacement for __builtin_return_address(count) - * which on certain architectures cannot reasonably be implemented in GCC - * (MIPS, Alpha) or is unuseable with -fomit-frame-pointer (i386). - * Note that __builtin_return_address(x>=1) is forbidden because the GCC - * aborts compilation on some CPUs. It's simply not possible to unwind - * some CPU's stackframes. - */ -#define return_address() __builtin_return_address(0) - #endif /* __ASM_SPARC_PROCESSOR_H */ diff --git a/include/asm-sparc/resource.h b/include/asm-sparc/resource.h index 7e4f49093..466cfc1ea 100644 --- a/include/asm-sparc/resource.h +++ b/include/asm-sparc/resource.h @@ -1,4 +1,4 @@ -/* $Id: resource.h,v 1.7 1998/11/19 20:01:44 davem Exp $ +/* $Id: resource.h,v 1.9 1999/08/14 03:52:05 anton Exp $ * resource.h: Resource definitions. * * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) @@ -25,14 +25,13 @@ #define RLIM_NLIMITS 10 #ifdef __KERNEL__ - -#define INIT_RLIMITS \ -{ \ - {LONG_MAX, LONG_MAX}, {LONG_MAX, LONG_MAX}, \ - {LONG_MAX, LONG_MAX}, {_STK_LIM, LONG_MAX}, \ - { 0, LONG_MAX}, {LONG_MAX, LONG_MAX}, \ - {NR_OPEN, NR_OPEN}, {MAX_TASKS_PER_USER, MAX_TASKS_PER_USER}, \ - {LONG_MAX, LONG_MAX}, {LONG_MAX, LONG_MAX} \ +#define INIT_RLIMITS \ +{ \ + {LONG_MAX, LONG_MAX}, {LONG_MAX, LONG_MAX}, \ + {LONG_MAX, LONG_MAX}, {_STK_LIM, LONG_MAX}, \ + { 0, LONG_MAX}, {LONG_MAX, LONG_MAX}, \ + {INR_OPEN, INR_OPEN}, {0, 0}, \ + {LONG_MAX, LONG_MAX}, {LONG_MAX, LONG_MAX} \ } #endif /* __KERNEL__ */ diff --git a/include/asm-sparc/sigcontext.h b/include/asm-sparc/sigcontext.h index 3c85783f1..ff9ccda16 100644 --- a/include/asm-sparc/sigcontext.h +++ b/include/asm-sparc/sigcontext.h @@ -1,18 +1,14 @@ -/* $Id: sigcontext.h,v 1.13 1998/10/06 09:28:35 jj Exp $ */ +/* $Id: sigcontext.h,v 1.14 1999/09/06 08:22:05 jj Exp $ */ #ifndef __SPARC_SIGCONTEXT_H #define __SPARC_SIGCONTEXT_H +#ifdef __KERNEL__ #include <asm/ptrace.h> - -#define SUNOS_MAXWIN 31 +#endif #ifndef __ASSEMBLY__ -/* SunOS system call sigstack() uses this arg. */ -struct sunos_sigstack { - unsigned long sig_sp; - int onstack_flag; -}; +#define __SUNOS_MAXWIN 31 /* This is what SunOS does, so shall I. */ struct sigcontext { @@ -31,14 +27,23 @@ struct sigcontext { int sigc_oswins; /* outstanding windows */ /* stack ptrs for each regwin buf */ - char *sigc_spbuf[SUNOS_MAXWIN]; + char *sigc_spbuf[__SUNOS_MAXWIN]; /* Windows to restore after signal */ - struct reg_window sigc_wbuf[SUNOS_MAXWIN]; + struct { + unsigned long locals[8]; + unsigned long ins[8]; + } sigc_wbuf[__SUNOS_MAXWIN]; }; typedef struct { - struct pt_regs si_regs; + struct { + unsigned long psr; + unsigned long pc; + unsigned long npc; + unsigned long y; + unsigned long u_regs[16]; /* globals and ins */ + } si_regs; int si_mask; } __siginfo_t; @@ -52,6 +57,8 @@ typedef struct { } si_fpqueue [16]; } __siginfo_fpu_t; +#ifdef __KERNEL__ + /* This magic should be in g_upper[0] for all upper parts to be valid. This is generated by sparc64 only, but for 32bit processes, @@ -62,6 +69,8 @@ typedef struct { unsigned int o_upper[8]; } siginfo_extra_v8plus_t; +#endif + #endif /* !(__ASSEMBLY__) */ #endif /* !(__SPARC_SIGCONTEXT_H) */ diff --git a/include/asm-sparc/siginfo.h b/include/asm-sparc/siginfo.h index 0a838c3a9..2baed407f 100644 --- a/include/asm-sparc/siginfo.h +++ b/include/asm-sparc/siginfo.h @@ -1,4 +1,4 @@ -/* $Id: siginfo.h,v 1.4 1999/04/28 19:45:20 davem Exp $ +/* $Id: siginfo.h,v 1.5 1999/07/29 12:56:57 jj Exp $ * siginfo.c: */ @@ -26,7 +26,7 @@ typedef struct siginfo { /* kill() */ struct { pid_t _pid; /* sender's pid */ - uid_t _uid; /* sender's uid */ + unsigned int _uid; /* sender's uid */ } _kill; /* POSIX.1b timers */ @@ -38,20 +38,20 @@ typedef struct siginfo { /* POSIX.1b signals */ struct { pid_t _pid; /* sender's pid */ - uid_t _uid; /* sender's uid */ + unsigned int _uid; /* sender's uid */ sigval_t _sigval; } _rt; /* SIGCHLD */ struct { pid_t _pid; /* which child */ - uid_t _uid; /* sender's uid */ + unsigned int _uid; /* sender's uid */ int _status; /* exit code */ clock_t _utime; clock_t _stime; } _sigchld; - /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */ + /* SIGILL, SIGFPE, SIGSEGV, SIGBUS, SIGEMT */ struct { void *_addr; /* faulting insn/memory ref. */ int _trapno; /* TRAP # which caused the signal */ @@ -85,6 +85,7 @@ typedef struct siginfo { * si_code values * Digital reserves positive values for kernel-generated signals. */ +#define SI_NOINFO 32767 /* no information in siginfo_t */ #define SI_USER 0 /* sent by kill, sigsend, raise */ #define SI_KERNEL 0x80 /* sent by the kernel from somewhere */ #define SI_QUEUE -1 /* sent by sigqueue */ @@ -167,6 +168,12 @@ typedef struct siginfo { #define NSIGPOLL 6 /* + * SIGEMT si_codes + */ +#define EMT_TAGOVF 1 /* tag overflow */ +#define NSIGEMT 1 + +/* * sigevent definitions * * It seems likely that SIGEV_THREAD will have to be handled from diff --git a/include/asm-sparc/signal.h b/include/asm-sparc/signal.h index c3517216b..51d75eee1 100644 --- a/include/asm-sparc/signal.h +++ b/include/asm-sparc/signal.h @@ -1,4 +1,4 @@ -/* $Id: signal.h,v 1.34 1998/07/29 16:32:38 jj Exp $ */ +/* $Id: signal.h,v 1.35 1999/09/06 08:22:04 jj Exp $ */ #ifndef _ASMSPARC_SIGNAL_H #define _ASMSPARC_SIGNAL_H @@ -196,10 +196,12 @@ struct __new_sigaction { __new_sigset_t sa_mask; }; +#ifdef __KERNEL__ struct k_sigaction { struct __new_sigaction sa; void *ka_restorer; }; +#endif struct __old_sigaction { __sighandler_t sa_handler; @@ -211,7 +213,7 @@ struct __old_sigaction { typedef struct sigaltstack { void *ss_sp; int ss_flags; - __kernel_size_t ss_size; + size_t ss_size; } stack_t; #endif /* !(__ASSEMBLY__) */ diff --git a/include/asm-sparc/smp.h b/include/asm-sparc/smp.h index e1ba06201..7c69f57c2 100644 --- a/include/asm-sparc/smp.h +++ b/include/asm-sparc/smp.h @@ -6,7 +6,7 @@ #ifndef _SPARC_SMP_H #define _SPARC_SMP_H -#include <linux/tasks.h> +#include <linux/threads.h> #include <asm/head.h> #include <asm/btfixup.h> diff --git a/include/asm-sparc/smplock.h b/include/asm-sparc/smplock.h index e62326a10..1590fafe9 100644 --- a/include/asm-sparc/smplock.h +++ b/include/asm-sparc/smplock.h @@ -4,7 +4,7 @@ * Default SMP lock implementation */ #include <linux/interrupt.h> -#include <asm/spinlock.h> +#include <linux/spinlock.h> extern spinlock_t kernel_flag; diff --git a/include/asm-sparc/softirq.h b/include/asm-sparc/softirq.h index e72d714cb..c82a080ad 100644 --- a/include/asm-sparc/softirq.h +++ b/include/asm-sparc/softirq.h @@ -7,7 +7,7 @@ #ifndef __SPARC_SOFTIRQ_H #define __SPARC_SOFTIRQ_H -#include <linux/tasks.h> /* For NR_CPUS */ +#include <linux/threads.h> /* For NR_CPUS */ #include <asm/atomic.h> #include <asm/smp.h> diff --git a/include/asm-sparc/spinlock.h b/include/asm-sparc/spinlock.h index 2cad9d56f..bcc8f0b87 100644 --- a/include/asm-sparc/spinlock.h +++ b/include/asm-sparc/spinlock.h @@ -6,61 +6,10 @@ #ifndef __SPARC_SPINLOCK_H #define __SPARC_SPINLOCK_H -#include <linux/tasks.h> /* For NR_CPUS */ +#include <linux/threads.h> /* For NR_CPUS */ #ifndef __ASSEMBLY__ -#ifndef __SMP__ - -typedef unsigned char spinlock_t; -#define SPIN_LOCK_UNLOCKED 0 - -#define spin_lock_init(lock) do { } while(0) -#define spin_lock(lock) do { } while(0) -#define spin_trylock(lock) (1) -#define spin_unlock_wait(lock) do { } while(0) -#define spin_unlock(lock) do { } while(0) -#define spin_lock_irq(lock) cli() -#define spin_unlock_irq(lock) sti() -#define spin_lock_bh(lock) local_bh_disable() -#define spin_unlock_bh(lock) local_bh_enable() - -#define spin_lock_irqsave(lock, flags) save_and_cli(flags) -#define spin_unlock_irqrestore(lock, flags) restore_flags(flags) - -/* - * Read-write spinlocks, allowing multiple readers - * but only one writer. - * - * NOTE! it is quite common to have readers in interrupts - * but no interrupt writers. For those circumstances we - * can "mix" irq-safe locks - any writer needs to get a - * irq-safe write-lock, but readers can get non-irqsafe - * read-locks. - */ -typedef struct { volatile unsigned int lock; } rwlock_t; -#define RW_LOCK_UNLOCKED (rwlock_t) { 0 } - -#define read_lock(lock) do { } while(0) -#define read_unlock(lock) do { } while(0) -#define write_lock(lock) do { } while(0) -#define write_unlock(lock) do { } while(0) -#define read_lock_irq(lock) cli() -#define read_unlock_irq(lock) sti() -#define write_lock_irq(lock) cli() -#define write_unlock_irq(lock) sti() -#define read_lock_bh(lock) local_bh_disable() -#define read_unlock_bh(lock) local_bh_enable() -#define write_lock_bh(lock) local_bh_disable() -#define write_unlock_bh(lock) local_bh_enable() - -#define read_lock_irqsave(lock, flags) save_and_cli(flags) -#define read_unlock_irqrestore(lock, flags) restore_flags(flags) -#define write_lock_irqsave(lock, flags) save_and_cli(flags) -#define write_unlock_irqrestore(lock, flags) restore_flags(flags) - -#else /* !(__SMP__) */ - #include <asm/psr.h> /* Define this to use the verbose/debugging versions in arch/sparc/lib/debuglocks.c */ @@ -371,8 +320,6 @@ extern __inline__ void write_lock(rwlock_t *rw) #endif /* SPIN_LOCK_DEBUG */ -#endif /* __SMP__ */ - #endif /* !(__ASSEMBLY__) */ #endif /* __SPARC_SPINLOCK_H */ diff --git a/include/asm-sparc/sunbpp.h b/include/asm-sparc/sunbpp.h new file mode 100644 index 000000000..568db79b7 --- /dev/null +++ b/include/asm-sparc/sunbpp.h @@ -0,0 +1,80 @@ +/* $Id: sunbpp.h,v 1.1 1999/08/08 14:09:49 shadow Exp $ + * include/asm-sparc/sunbpp.h + */ + +#ifndef _ASM_SPARC_SUNBPP_H +#define _ASM_SPARC_SUNBPP_H + +struct bpp_regs { + /* DMA registers */ + __volatile__ __u32 p_csr; /* DMA Control/Status Register */ + __volatile__ __u32 p_addr; /* Address Register */ + __volatile__ __u32 p_bcnt; /* Byte Count Register */ + __volatile__ __u32 p_tst_csr; /* Test Control/Status (DMA2 only) */ + /* Parallel Port registers */ + __volatile__ __u16 p_hcr; /* Hardware Configuration Register */ + __volatile__ __u16 p_ocr; /* Operation Configuration Register */ + __volatile__ __u8 p_dr; /* Parallel Data Register */ + __volatile__ __u8 p_tcr; /* Transfer Control Register */ + __volatile__ __u8 p_or; /* Output Register */ + __volatile__ __u8 p_ir; /* Input Register */ + __volatile__ __u16 p_icr; /* Interrupt Control Register */ +}; + +/* P_HCR. Time is in increments of SBus clock. */ +#define P_HCR_TEST 0x8000 /* Allows buried counters to be read */ +#define P_HCR_DSW 0x7f00 /* Data strobe width (in ticks) */ +#define P_HCR_DDS 0x007f /* Data setup before strobe (in ticks) */ + +/* P_OCR. */ +#define P_OCR_MEM_CLR 0x8000 +#define P_OCR_DATA_SRC 0x4000 /* ) */ +#define P_OCR_DS_DSEL 0x2000 /* ) Bidirectional */ +#define P_OCR_BUSY_DSEL 0x1000 /* ) selects */ +#define P_OCR_ACK_DSEL 0x0800 /* ) */ +#define P_OCR_EN_DIAG 0x0400 +#define P_OCR_BUSY_OP 0x0200 /* Busy operation */ +#define P_OCR_ACK_OP 0x0100 /* Ack operation */ +#define P_OCR_SRST 0x0080 /* Reset state machines. Not selfcleaning. */ +#define P_OCR_IDLE 0x0008 /* PP data transfer state machine is idle */ +#define P_OCR_V_ILCK 0x0002 /* Versatec faded. Zebra only. */ +#define P_OCR_EN_VER 0x0001 /* Enable Versatec (0 - enable). Zebra only. */ + +/* P_TCR */ +#define P_TCR_DIR 0x08 +#define P_TCR_BUSY 0x04 +#define P_TCR_ACK 0x02 +#define P_TCR_DS 0x01 /* Strobe */ + +/* P_OR */ +#define P_OR_V3 0x20 /* ) */ +#define P_OR_V2 0x10 /* ) on Zebra only */ +#define P_OR_V1 0x08 /* ) */ +#define P_OR_INIT 0x04 +#define P_OR_AFXN 0x02 /* Auto Feed */ +#define P_OR_SLCT_IN 0x01 + +/* P_IR */ +#define P_IR_PE 0x04 +#define P_IR_SLCT 0x02 +#define P_IR_ERR 0x01 + +/* P_ICR */ +#define P_DS_IRQ 0x8000 /* RW1 */ +#define P_ACK_IRQ 0x4000 /* RW1 */ +#define P_BUSY_IRQ 0x2000 /* RW1 */ +#define P_PE_IRQ 0x1000 /* RW1 */ +#define P_SLCT_IRQ 0x0800 /* RW1 */ +#define P_ERR_IRQ 0x0400 /* RW1 */ +#define P_DS_IRQ_EN 0x0200 /* RW Always on rising edge */ +#define P_ACK_IRQ_EN 0x0100 /* RW Always on rising edge */ +#define P_BUSY_IRP 0x0080 /* RW 1= rising edge */ +#define P_BUSY_IRQ_EN 0x0040 /* RW */ +#define P_PE_IRP 0x0020 /* RW 1= rising edge */ +#define P_PE_IRQ_EN 0x0010 /* RW */ +#define P_SLCT_IRP 0x0008 /* RW 1= rising edge */ +#define P_SLCT_IRQ_EN 0x0004 /* RW */ +#define P_ERR_IRP 0x0002 /* RW1 1= rising edge */ +#define P_ERR_IRQ_EN 0x0001 /* RW */ + +#endif /* !(_ASM_SPARC_SUNBPP_H) */ diff --git a/include/asm-sparc/system.h b/include/asm-sparc/system.h index 3a4ee58a3..b489cac95 100644 --- a/include/asm-sparc/system.h +++ b/include/asm-sparc/system.h @@ -1,4 +1,4 @@ -/* $Id: system.h,v 1.74 1999/05/08 03:03:14 davem Exp $ */ +/* $Id: system.h,v 1.75 1999/09/01 08:06:08 davem Exp $ */ #include <linux/config.h> #ifndef __SPARC_SYSTEM_H @@ -309,6 +309,9 @@ do { register unsigned long bits asm("g7"); \ #define mb() __asm__ __volatile__ ("" : : : "memory") #define rmb() mb() #define wmb() mb() +#define set_mb(__var, __value) do { __var = __value; mb(); } while(0) +#define set_rmb(__var, __value) set_mb(__var, __value) +#define set_wmb(__var, __value) set_mb(__var, __value) #define nop() __asm__ __volatile__ ("nop"); diff --git a/include/asm-sparc/turbosparc.h b/include/asm-sparc/turbosparc.h index 094573025..5078d901b 100644 --- a/include/asm-sparc/turbosparc.h +++ b/include/asm-sparc/turbosparc.h @@ -1,4 +1,4 @@ -/* $Id: turbosparc.h,v 1.2 1998/10/19 19:40:01 ralf Exp $ +/* $Id: turbosparc.h,v 1.4 1998/08/16 16:02:42 ecd Exp $ * turbosparc.h: Defines specific to the TurboSparc module. * This is SRMMU stuff. * diff --git a/include/asm-sparc/uaccess.h b/include/asm-sparc/uaccess.h index 56f81b81f..bccefbe47 100644 --- a/include/asm-sparc/uaccess.h +++ b/include/asm-sparc/uaccess.h @@ -1,4 +1,4 @@ -/* $Id: uaccess.h,v 1.18 1999/03/30 06:38:38 jj Exp $ +/* $Id: uaccess.h,v 1.19 1999/08/14 03:52:11 anton Exp $ * uaccess.h: User space memore access functions. * * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu) @@ -29,8 +29,8 @@ #define VERIFY_WRITE 1 #define get_ds() (KERNEL_DS) -#define get_fs() (current->tss.current_ds) -#define set_fs(val) ((current->tss.current_ds) = (val)) +#define get_fs() (current->thread.current_ds) +#define set_fs(val) ((current->thread.current_ds) = (val)) #define segment_eq(a,b) ((a).seg == (b).seg) diff --git a/include/asm-sparc/winmacro.h b/include/asm-sparc/winmacro.h index f31322e8e..90f70cbc8 100644 --- a/include/asm-sparc/winmacro.h +++ b/include/asm-sparc/winmacro.h @@ -1,4 +1,4 @@ -/* $Id: winmacro.h,v 1.20 1998/03/09 14:04:54 jj Exp $ +/* $Id: winmacro.h,v 1.21 1999/08/14 03:52:13 anton Exp $ * winmacro.h: Window loading-unloading macros. * * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) @@ -98,18 +98,18 @@ STORE_PT_INS(base_reg) #define SAVE_BOLIXED_USER_STACK(cur_reg, scratch) \ - ld [%cur_reg + AOFF_task_tss + AOFF_thread_w_saved], %scratch; \ + ld [%cur_reg + AOFF_task_thread + AOFF_thread_w_saved], %scratch; \ sll %scratch, 2, %scratch; \ add %scratch, %cur_reg, %scratch; \ - st %sp, [%scratch + AOFF_task_tss + AOFF_thread_rwbuf_stkptrs]; \ + st %sp, [%scratch + AOFF_task_thread + AOFF_thread_rwbuf_stkptrs]; \ sub %scratch, %cur_reg, %scratch; \ sll %scratch, 4, %scratch; \ add %scratch, %cur_reg, %scratch; \ - STORE_WINDOW(scratch + AOFF_task_tss + AOFF_thread_reg_window); \ + STORE_WINDOW(scratch + AOFF_task_thread + AOFF_thread_reg_window); \ sub %scratch, %cur_reg, %scratch; \ srl %scratch, 6, %scratch; \ add %scratch, 1, %scratch; \ - st %scratch, [%cur_reg + AOFF_task_tss + AOFF_thread_w_saved]; + st %scratch, [%cur_reg + AOFF_task_thread + AOFF_thread_w_saved]; #ifdef __SMP__ #define LOAD_CURRENT4M(dest_reg, idreg) \ |