summaryrefslogtreecommitdiffstats
path: root/include/asm-sparc
diff options
context:
space:
mode:
Diffstat (limited to 'include/asm-sparc')
-rw-r--r--include/asm-sparc/ap1000/apreg.h2
-rw-r--r--include/asm-sparc/asm_offsets.h334
-rw-r--r--include/asm-sparc/audioio.h164
-rw-r--r--include/asm-sparc/cache.h10
-rw-r--r--include/asm-sparc/dma.h10
-rw-r--r--include/asm-sparc/fbio.h1
-rw-r--r--include/asm-sparc/hardirq.h4
-rw-r--r--include/asm-sparc/init.h28
-rw-r--r--include/asm-sparc/io-unit.h2
-rw-r--r--include/asm-sparc/irq.h4
-rw-r--r--include/asm-sparc/mostek.h22
-rw-r--r--include/asm-sparc/page.h2
-rw-r--r--include/asm-sparc/pci.h10
-rw-r--r--include/asm-sparc/pgtable.h4
-rw-r--r--include/asm-sparc/processor.h17
-rw-r--r--include/asm-sparc/resource.h17
-rw-r--r--include/asm-sparc/sigcontext.h31
-rw-r--r--include/asm-sparc/siginfo.h17
-rw-r--r--include/asm-sparc/signal.h6
-rw-r--r--include/asm-sparc/smp.h2
-rw-r--r--include/asm-sparc/smplock.h2
-rw-r--r--include/asm-sparc/softirq.h2
-rw-r--r--include/asm-sparc/spinlock.h55
-rw-r--r--include/asm-sparc/sunbpp.h80
-rw-r--r--include/asm-sparc/system.h5
-rw-r--r--include/asm-sparc/turbosparc.h2
-rw-r--r--include/asm-sparc/uaccess.h6
-rw-r--r--include/asm-sparc/winmacro.h10
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) \