summaryrefslogtreecommitdiffstats
path: root/include/asm-sparc64
diff options
context:
space:
mode:
authorRalf Baechle <ralf@linux-mips.org>1998-08-25 09:12:35 +0000
committerRalf Baechle <ralf@linux-mips.org>1998-08-25 09:12:35 +0000
commitc7fc24dc4420057f103afe8fc64524ebc25c5d37 (patch)
tree3682407a599b8f9f03fc096298134cafba1c9b2f /include/asm-sparc64
parent1d793fade8b063fde3cf275bf1a5c2d381292cd9 (diff)
o Merge with Linux 2.1.116.
o New Newport console code. o New G364 console code.
Diffstat (limited to 'include/asm-sparc64')
-rw-r--r--include/asm-sparc64/asm_offsets.h496
-rw-r--r--include/asm-sparc64/audioio.h416
-rw-r--r--include/asm-sparc64/bitops.h52
-rw-r--r--include/asm-sparc64/dma.h4
-rw-r--r--include/asm-sparc64/ebus.h9
-rw-r--r--include/asm-sparc64/envctrl.h17
-rw-r--r--include/asm-sparc64/fbio.h5
-rw-r--r--include/asm-sparc64/firehose.h4
-rw-r--r--include/asm-sparc64/floppy.h122
-rw-r--r--include/asm-sparc64/fpumacro.h5
-rw-r--r--include/asm-sparc64/ide.h57
-rw-r--r--include/asm-sparc64/io.h27
-rw-r--r--include/asm-sparc64/irq.h54
-rw-r--r--include/asm-sparc64/linux_logo.h1785
-rw-r--r--include/asm-sparc64/mmu_context.h66
-rw-r--r--include/asm-sparc64/page.h9
-rw-r--r--include/asm-sparc64/pbm.h47
-rw-r--r--include/asm-sparc64/pgtable.h361
-rw-r--r--include/asm-sparc64/posix_types.h4
-rw-r--r--include/asm-sparc64/processor.h73
-rw-r--r--include/asm-sparc64/sbus.h4
-rw-r--r--include/asm-sparc64/siginfo.h1
-rw-r--r--include/asm-sparc64/signal.h19
-rw-r--r--include/asm-sparc64/smp.h25
-rw-r--r--include/asm-sparc64/smp_lock.h87
-rw-r--r--include/asm-sparc64/smplock.h49
-rw-r--r--include/asm-sparc64/socket.h5
-rw-r--r--include/asm-sparc64/softirq.h1
-rw-r--r--include/asm-sparc64/spinlock.h9
-rw-r--r--include/asm-sparc64/spitfire.h6
-rw-r--r--include/asm-sparc64/stat.h52
-rw-r--r--include/asm-sparc64/string.h4
-rw-r--r--include/asm-sparc64/svr4.h2
-rw-r--r--include/asm-sparc64/system.h65
-rw-r--r--include/asm-sparc64/termios.h2
-rw-r--r--include/asm-sparc64/timex.h15
-rw-r--r--include/asm-sparc64/ttable.h14
-rw-r--r--include/asm-sparc64/uaccess.h4
-rw-r--r--include/asm-sparc64/unistd.h16
-rw-r--r--include/asm-sparc64/vaddrs.h18
-rw-r--r--include/asm-sparc64/vga.h30
-rw-r--r--include/asm-sparc64/visasm.h62
-rw-r--r--include/asm-sparc64/xstat.h58
43 files changed, 2356 insertions, 1805 deletions
diff --git a/include/asm-sparc64/asm_offsets.h b/include/asm-sparc64/asm_offsets.h
index 36b684ae6..bc1bdb8dc 100644
--- a/include/asm-sparc64/asm_offsets.h
+++ b/include/asm-sparc64/asm_offsets.h
@@ -14,170 +14,176 @@
#define ASIZ_task_addr_limit 0x00000008
#define AOFF_task_exec_domain 0x00000020
#define ASIZ_task_exec_domain 0x00000008
-#define AOFF_task_debugreg 0x00000028
-#define ASIZ_task_debugreg 0x00000040
-#define AOFF_task_counter 0x00000068
+#define AOFF_task_need_resched 0x00000028
+#define ASIZ_task_need_resched 0x00000008
+#define AOFF_task_counter 0x00000030
#define ASIZ_task_counter 0x00000008
-#define AOFF_task_priority 0x00000070
+#define AOFF_task_priority 0x00000038
#define ASIZ_task_priority 0x00000008
-#define AOFF_task_binfmt 0x00000078
-#define ASIZ_task_binfmt 0x00000008
-#define AOFF_task_next_task 0x00000080
+#define AOFF_task_has_cpu 0x00000040
+#define ASIZ_task_has_cpu 0x00000004
+#define AOFF_task_processor 0x00000044
+#define ASIZ_task_processor 0x00000004
+#define AOFF_task_last_processor 0x00000048
+#define ASIZ_task_last_processor 0x00000004
+#define AOFF_task_lock_depth 0x0000004c
+#define ASIZ_task_lock_depth 0x00000004
+#define AOFF_task_next_task 0x00000050
#define ASIZ_task_next_task 0x00000008
-#define AOFF_task_prev_task 0x00000088
+#define AOFF_task_prev_task 0x00000058
#define ASIZ_task_prev_task 0x00000008
-#define AOFF_task_next_run 0x00000090
+#define AOFF_task_next_run 0x00000060
#define ASIZ_task_next_run 0x00000008
-#define AOFF_task_prev_run 0x00000098
+#define AOFF_task_prev_run 0x00000068
#define ASIZ_task_prev_run 0x00000008
-#define AOFF_task_exit_code 0x000000a0
+#define AOFF_task_binfmt 0x00000070
+#define ASIZ_task_binfmt 0x00000008
+#define AOFF_task_exit_code 0x00000078
#define ASIZ_task_exit_code 0x00000004
-#define AOFF_task_exit_signal 0x000000a4
+#define AOFF_task_exit_signal 0x0000007c
#define ASIZ_task_exit_signal 0x00000004
-#define AOFF_task_pdeath_signal 0x000000a8
+#define AOFF_task_pdeath_signal 0x00000080
#define ASIZ_task_pdeath_signal 0x00000004
-#define AOFF_task_personality 0x000000b0
+#define AOFF_task_personality 0x00000088
#define ASIZ_task_personality 0x00000008
-#define AOFF_task_pid 0x000000bc
+#define AOFF_task_pid 0x00000094
#define ASIZ_task_pid 0x00000004
-#define AOFF_task_pgrp 0x000000c0
+#define AOFF_task_pgrp 0x00000098
#define ASIZ_task_pgrp 0x00000004
-#define AOFF_task_tty_old_pgrp 0x000000c4
+#define AOFF_task_tty_old_pgrp 0x0000009c
#define ASIZ_task_tty_old_pgrp 0x00000004
-#define AOFF_task_session 0x000000c8
+#define AOFF_task_session 0x000000a0
#define ASIZ_task_session 0x00000004
-#define AOFF_task_leader 0x000000cc
+#define AOFF_task_leader 0x000000a4
#define ASIZ_task_leader 0x00000004
-#define AOFF_task_ngroups 0x000000d0
-#define ASIZ_task_ngroups 0x00000004
-#define AOFF_task_groups 0x000000d4
-#define ASIZ_task_groups 0x00000080
-#define AOFF_task_p_opptr 0x00000158
+#define AOFF_task_p_opptr 0x000000a8
#define ASIZ_task_p_opptr 0x00000008
-#define AOFF_task_p_pptr 0x00000160
+#define AOFF_task_p_pptr 0x000000b0
#define ASIZ_task_p_pptr 0x00000008
-#define AOFF_task_p_cptr 0x00000168
+#define AOFF_task_p_cptr 0x000000b8
#define ASIZ_task_p_cptr 0x00000008
-#define AOFF_task_p_ysptr 0x00000170
+#define AOFF_task_p_ysptr 0x000000c0
#define ASIZ_task_p_ysptr 0x00000008
-#define AOFF_task_p_osptr 0x00000178
+#define AOFF_task_p_osptr 0x000000c8
#define ASIZ_task_p_osptr 0x00000008
-#define AOFF_task_pidhash_next 0x00000180
+#define AOFF_task_pidhash_next 0x000000d0
#define ASIZ_task_pidhash_next 0x00000008
-#define AOFF_task_pidhash_pprev 0x00000188
+#define AOFF_task_pidhash_pprev 0x000000d8
#define ASIZ_task_pidhash_pprev 0x00000008
-#define AOFF_task_tarray_ptr 0x00000190
+#define AOFF_task_tarray_ptr 0x000000e0
#define ASIZ_task_tarray_ptr 0x00000008
-#define AOFF_task_wait_chldexit 0x00000198
+#define AOFF_task_wait_chldexit 0x000000e8
#define ASIZ_task_wait_chldexit 0x00000008
-#define AOFF_task_uid 0x000001a0
-#define ASIZ_task_uid 0x00000004
-#define AOFF_task_euid 0x000001a4
-#define ASIZ_task_euid 0x00000004
-#define AOFF_task_suid 0x000001a8
-#define ASIZ_task_suid 0x00000004
-#define AOFF_task_fsuid 0x000001ac
-#define ASIZ_task_fsuid 0x00000004
-#define AOFF_task_gid 0x000001b0
-#define ASIZ_task_gid 0x00000004
-#define AOFF_task_egid 0x000001b4
-#define ASIZ_task_egid 0x00000004
-#define AOFF_task_sgid 0x000001b8
-#define ASIZ_task_sgid 0x00000004
-#define AOFF_task_fsgid 0x000001bc
-#define ASIZ_task_fsgid 0x00000004
-#define AOFF_task_timeout 0x000001c0
+#define AOFF_task_timeout 0x000000f0
#define ASIZ_task_timeout 0x00000008
-#define AOFF_task_policy 0x000001c8
+#define AOFF_task_policy 0x000000f8
#define ASIZ_task_policy 0x00000008
-#define AOFF_task_rt_priority 0x000001d0
+#define AOFF_task_rt_priority 0x00000100
#define ASIZ_task_rt_priority 0x00000008
-#define AOFF_task_it_real_value 0x000001d8
+#define AOFF_task_it_real_value 0x00000108
#define ASIZ_task_it_real_value 0x00000008
-#define AOFF_task_it_prof_value 0x000001e0
+#define AOFF_task_it_prof_value 0x00000110
#define ASIZ_task_it_prof_value 0x00000008
-#define AOFF_task_it_virt_value 0x000001e8
+#define AOFF_task_it_virt_value 0x00000118
#define ASIZ_task_it_virt_value 0x00000008
-#define AOFF_task_it_real_incr 0x000001f0
+#define AOFF_task_it_real_incr 0x00000120
#define ASIZ_task_it_real_incr 0x00000008
-#define AOFF_task_it_prof_incr 0x000001f8
+#define AOFF_task_it_prof_incr 0x00000128
#define ASIZ_task_it_prof_incr 0x00000008
-#define AOFF_task_it_virt_incr 0x00000200
+#define AOFF_task_it_virt_incr 0x00000130
#define ASIZ_task_it_virt_incr 0x00000008
-#define AOFF_task_real_timer 0x00000208
+#define AOFF_task_real_timer 0x00000138
#define ASIZ_task_real_timer 0x00000028
-#define AOFF_task_times 0x00000230
+#define AOFF_task_times 0x00000160
#define ASIZ_task_times 0x00000020
-#define AOFF_task_start_time 0x00000250
+#define AOFF_task_start_time 0x00000180
#define ASIZ_task_start_time 0x00000008
-#define AOFF_task_per_cpu_utime 0x00000258
+#define AOFF_task_per_cpu_utime 0x00000188
#define ASIZ_task_per_cpu_utime 0x00000008
-#define AOFF_task_min_flt 0x00000268
+#define AOFF_task_min_flt 0x00000198
#define ASIZ_task_min_flt 0x00000008
-#define AOFF_task_maj_flt 0x00000270
+#define AOFF_task_maj_flt 0x000001a0
#define ASIZ_task_maj_flt 0x00000008
-#define AOFF_task_nswap 0x00000278
+#define AOFF_task_nswap 0x000001a8
#define ASIZ_task_nswap 0x00000008
-#define AOFF_task_cmin_flt 0x00000280
+#define AOFF_task_cmin_flt 0x000001b0
#define ASIZ_task_cmin_flt 0x00000008
-#define AOFF_task_cmaj_flt 0x00000288
+#define AOFF_task_cmaj_flt 0x000001b8
#define ASIZ_task_cmaj_flt 0x00000008
-#define AOFF_task_cnswap 0x00000290
+#define AOFF_task_cnswap 0x000001c0
#define ASIZ_task_cnswap 0x00000008
-#define AOFF_task_swap_address 0x000002a0
+#define AOFF_task_swap_address 0x000001d0
#define ASIZ_task_swap_address 0x00000008
-#define AOFF_task_old_maj_flt 0x000002a8
+#define AOFF_task_old_maj_flt 0x000001d8
#define ASIZ_task_old_maj_flt 0x00000008
-#define AOFF_task_dec_flt 0x000002b0
+#define AOFF_task_dec_flt 0x000001e0
#define ASIZ_task_dec_flt 0x00000008
-#define AOFF_task_swap_cnt 0x000002b8
+#define AOFF_task_swap_cnt 0x000001e8
#define ASIZ_task_swap_cnt 0x00000008
-#define AOFF_task_rlim 0x000002c0
+#define AOFF_task_uid 0x000001f0
+#define ASIZ_task_uid 0x00000004
+#define AOFF_task_euid 0x000001f4
+#define ASIZ_task_euid 0x00000004
+#define AOFF_task_suid 0x000001f8
+#define ASIZ_task_suid 0x00000004
+#define AOFF_task_fsuid 0x000001fc
+#define ASIZ_task_fsuid 0x00000004
+#define AOFF_task_gid 0x00000200
+#define ASIZ_task_gid 0x00000004
+#define AOFF_task_egid 0x00000204
+#define ASIZ_task_egid 0x00000004
+#define AOFF_task_sgid 0x00000208
+#define ASIZ_task_sgid 0x00000004
+#define AOFF_task_fsgid 0x0000020c
+#define ASIZ_task_fsgid 0x00000004
+#define AOFF_task_ngroups 0x00000210
+#define ASIZ_task_ngroups 0x00000004
+#define AOFF_task_groups 0x00000214
+#define ASIZ_task_groups 0x00000080
+#define AOFF_task_cap_effective 0x00000294
+#define ASIZ_task_cap_effective 0x00000004
+#define AOFF_task_cap_inheritable 0x00000298
+#define ASIZ_task_cap_inheritable 0x00000004
+#define AOFF_task_cap_permitted 0x0000029c
+#define ASIZ_task_cap_permitted 0x00000004
+#define AOFF_task_rlim 0x000002a0
#define ASIZ_task_rlim 0x000000a0
-#define AOFF_task_used_math 0x00000360
+#define AOFF_task_used_math 0x00000340
#define ASIZ_task_used_math 0x00000002
-#define AOFF_task_io_usage 0x00000368
-#define ASIZ_task_io_usage 0x00000008
-#define AOFF_task_comm 0x00000370
+#define AOFF_task_comm 0x00000342
#define ASIZ_task_comm 0x00000010
-#define AOFF_task_link_count 0x00000380
+#define AOFF_task_link_count 0x00000354
#define ASIZ_task_link_count 0x00000004
-#define AOFF_task_tty 0x00000388
+#define AOFF_task_tty 0x00000358
#define ASIZ_task_tty 0x00000008
-#define AOFF_task_semundo 0x00000390
+#define AOFF_task_semundo 0x00000360
#define ASIZ_task_semundo 0x00000008
-#define AOFF_task_semsleeping 0x00000398
+#define AOFF_task_semsleeping 0x00000368
#define ASIZ_task_semsleeping 0x00000008
-#define AOFF_task_ldt 0x000003a0
-#define ASIZ_task_ldt 0x00000008
-#define AOFF_task_tss 0x000003b0
-#define ASIZ_task_tss 0x00000490
-#define AOFF_task_fs 0x00000840
+#define AOFF_task_tss 0x00000370
+#define ASIZ_task_tss 0x00000440
+#define AOFF_task_fs 0x000007b0
#define ASIZ_task_fs 0x00000008
-#define AOFF_task_files 0x00000848
+#define AOFF_task_files 0x000007b8
#define ASIZ_task_files 0x00000008
-#define AOFF_task_mm 0x00000850
+#define AOFF_task_mm 0x000007c0
#define ASIZ_task_mm 0x00000008
-#define AOFF_task_sig 0x00000858
+#define AOFF_task_sigmask_lock 0x000007c8
+#define ASIZ_task_sigmask_lock 0x00000000
+#define AOFF_task_sig 0x000007c8
#define ASIZ_task_sig 0x00000008
-#define AOFF_task_signal 0x00000860
+#define AOFF_task_signal 0x000007d0
#define ASIZ_task_signal 0x00000008
-#define AOFF_task_blocked 0x00000868
+#define AOFF_task_blocked 0x000007d8
#define ASIZ_task_blocked 0x00000008
-#define AOFF_task_sigqueue 0x00000870
+#define AOFF_task_sigqueue 0x000007e0
#define ASIZ_task_sigqueue 0x00000008
-#define AOFF_task_sigqueue_tail 0x00000878
+#define AOFF_task_sigqueue_tail 0x000007e8
#define ASIZ_task_sigqueue_tail 0x00000008
-#define AOFF_task_has_cpu 0x00000880
-#define ASIZ_task_has_cpu 0x00000004
-#define AOFF_task_processor 0x00000884
-#define ASIZ_task_processor 0x00000004
-#define AOFF_task_last_processor 0x00000888
-#define ASIZ_task_last_processor 0x00000004
-#define AOFF_task_lock_depth 0x0000088c
-#define ASIZ_task_lock_depth 0x00000004
-#define AOFF_task_sigmask_lock 0x00000890
-#define ASIZ_task_sigmask_lock 0x00000000
+#define AOFF_task_sas_ss_sp 0x000007f0
+#define ASIZ_task_sas_ss_sp 0x00000008
+#define AOFF_task_sas_ss_size 0x000007f8
+#define ASIZ_task_sas_ss_size 0x00000008
#define AOFF_mm_mmap 0x00000000
#define ASIZ_mm_mmap 0x00000008
#define AOFF_mm_mmap_cache 0x00000008
@@ -224,22 +230,24 @@
#define ASIZ_mm_def_flags 0x00000008
#define AOFF_mm_cpu_vm_mask 0x000000b0
#define ASIZ_mm_cpu_vm_mask 0x00000008
+#define AOFF_mm_segments 0x000000b8
+#define ASIZ_mm_segments 0x00000008
#define AOFF_thread_ksp 0x00000000
#define ASIZ_thread_ksp 0x00000008
-#define AOFF_thread_kpc 0x00000008
-#define ASIZ_thread_kpc 0x00000004
-#define AOFF_thread_wstate 0x0000000c
+#define AOFF_thread_wstate 0x00000008
#define ASIZ_thread_wstate 0x00000002
-#define AOFF_thread_cwp 0x0000000e
+#define AOFF_thread_cwp 0x0000000a
#define ASIZ_thread_cwp 0x00000002
-#define AOFF_thread_flags 0x00000010
+#define AOFF_thread_flags 0x0000000c
#define ASIZ_thread_flags 0x00000002
-#define AOFF_thread_ctx 0x00000012
+#define AOFF_thread_ctx 0x0000000e
#define ASIZ_thread_ctx 0x00000002
-#define AOFF_thread_w_saved 0x00000014
+#define AOFF_thread_w_saved 0x00000010
#define ASIZ_thread_w_saved 0x00000002
-#define AOFF_thread_new_signal 0x00000016
+#define AOFF_thread_new_signal 0x00000012
#define ASIZ_thread_new_signal 0x00000002
+#define AOFF_thread____pad 0x00000014
+#define ASIZ_thread____pad 0x00000004
#define AOFF_thread_current_ds 0x00000018
#define ASIZ_thread_current_ds 0x00000008
#define AOFF_thread_kregs 0x00000020
@@ -247,15 +255,21 @@
#define AOFF_thread_utraps 0x00000028
#define ASIZ_thread_utraps 0x00000008
#define AOFF_thread_reg_window 0x00000030
-#define ASIZ_thread_reg_window 0x00000400
-#define AOFF_thread_rwbuf_stkptrs 0x00000430
-#define ASIZ_thread_rwbuf_stkptrs 0x00000040
-#define AOFF_thread_sig_address 0x00000470
+#define ASIZ_thread_reg_window 0x00000380
+#define AOFF_thread_rwbuf_stkptrs 0x000003b0
+#define ASIZ_thread_rwbuf_stkptrs 0x00000038
+#define AOFF_thread_sig_address 0x000003e8
#define ASIZ_thread_sig_address 0x00000008
-#define AOFF_thread_sig_desc 0x00000478
+#define AOFF_thread_sig_desc 0x000003f0
#define ASIZ_thread_sig_desc 0x00000008
-#define AOFF_thread_sstk_info 0x00000480
-#define ASIZ_thread_sstk_info 0x00000010
+#define AOFF_thread_fpdepth 0x000003f8
+#define ASIZ_thread_fpdepth 0x00000001
+#define AOFF_thread_fpsaved 0x000003f9
+#define ASIZ_thread_fpsaved 0x00000007
+#define AOFF_thread_gsr 0x00000400
+#define ASIZ_thread_gsr 0x00000007
+#define AOFF_thread_xfsr 0x00000408
+#define ASIZ_thread_xfsr 0x00000038
#else /* __SMP__ */
@@ -269,170 +283,176 @@
#define ASIZ_task_addr_limit 0x00000008
#define AOFF_task_exec_domain 0x00000020
#define ASIZ_task_exec_domain 0x00000008
-#define AOFF_task_debugreg 0x00000028
-#define ASIZ_task_debugreg 0x00000040
-#define AOFF_task_counter 0x00000068
+#define AOFF_task_need_resched 0x00000028
+#define ASIZ_task_need_resched 0x00000008
+#define AOFF_task_counter 0x00000030
#define ASIZ_task_counter 0x00000008
-#define AOFF_task_priority 0x00000070
+#define AOFF_task_priority 0x00000038
#define ASIZ_task_priority 0x00000008
-#define AOFF_task_binfmt 0x00000078
-#define ASIZ_task_binfmt 0x00000008
-#define AOFF_task_next_task 0x00000080
+#define AOFF_task_has_cpu 0x00000040
+#define ASIZ_task_has_cpu 0x00000004
+#define AOFF_task_processor 0x00000044
+#define ASIZ_task_processor 0x00000004
+#define AOFF_task_last_processor 0x00000048
+#define ASIZ_task_last_processor 0x00000004
+#define AOFF_task_lock_depth 0x0000004c
+#define ASIZ_task_lock_depth 0x00000004
+#define AOFF_task_next_task 0x00000050
#define ASIZ_task_next_task 0x00000008
-#define AOFF_task_prev_task 0x00000088
+#define AOFF_task_prev_task 0x00000058
#define ASIZ_task_prev_task 0x00000008
-#define AOFF_task_next_run 0x00000090
+#define AOFF_task_next_run 0x00000060
#define ASIZ_task_next_run 0x00000008
-#define AOFF_task_prev_run 0x00000098
+#define AOFF_task_prev_run 0x00000068
#define ASIZ_task_prev_run 0x00000008
-#define AOFF_task_exit_code 0x000000a0
+#define AOFF_task_binfmt 0x00000070
+#define ASIZ_task_binfmt 0x00000008
+#define AOFF_task_exit_code 0x00000078
#define ASIZ_task_exit_code 0x00000004
-#define AOFF_task_exit_signal 0x000000a4
+#define AOFF_task_exit_signal 0x0000007c
#define ASIZ_task_exit_signal 0x00000004
-#define AOFF_task_pdeath_signal 0x000000a8
+#define AOFF_task_pdeath_signal 0x00000080
#define ASIZ_task_pdeath_signal 0x00000004
-#define AOFF_task_personality 0x000000b0
+#define AOFF_task_personality 0x00000088
#define ASIZ_task_personality 0x00000008
-#define AOFF_task_pid 0x000000bc
+#define AOFF_task_pid 0x00000094
#define ASIZ_task_pid 0x00000004
-#define AOFF_task_pgrp 0x000000c0
+#define AOFF_task_pgrp 0x00000098
#define ASIZ_task_pgrp 0x00000004
-#define AOFF_task_tty_old_pgrp 0x000000c4
+#define AOFF_task_tty_old_pgrp 0x0000009c
#define ASIZ_task_tty_old_pgrp 0x00000004
-#define AOFF_task_session 0x000000c8
+#define AOFF_task_session 0x000000a0
#define ASIZ_task_session 0x00000004
-#define AOFF_task_leader 0x000000cc
+#define AOFF_task_leader 0x000000a4
#define ASIZ_task_leader 0x00000004
-#define AOFF_task_ngroups 0x000000d0
-#define ASIZ_task_ngroups 0x00000004
-#define AOFF_task_groups 0x000000d4
-#define ASIZ_task_groups 0x00000080
-#define AOFF_task_p_opptr 0x00000158
+#define AOFF_task_p_opptr 0x000000a8
#define ASIZ_task_p_opptr 0x00000008
-#define AOFF_task_p_pptr 0x00000160
+#define AOFF_task_p_pptr 0x000000b0
#define ASIZ_task_p_pptr 0x00000008
-#define AOFF_task_p_cptr 0x00000168
+#define AOFF_task_p_cptr 0x000000b8
#define ASIZ_task_p_cptr 0x00000008
-#define AOFF_task_p_ysptr 0x00000170
+#define AOFF_task_p_ysptr 0x000000c0
#define ASIZ_task_p_ysptr 0x00000008
-#define AOFF_task_p_osptr 0x00000178
+#define AOFF_task_p_osptr 0x000000c8
#define ASIZ_task_p_osptr 0x00000008
-#define AOFF_task_pidhash_next 0x00000180
+#define AOFF_task_pidhash_next 0x000000d0
#define ASIZ_task_pidhash_next 0x00000008
-#define AOFF_task_pidhash_pprev 0x00000188
+#define AOFF_task_pidhash_pprev 0x000000d8
#define ASIZ_task_pidhash_pprev 0x00000008
-#define AOFF_task_tarray_ptr 0x00000190
+#define AOFF_task_tarray_ptr 0x000000e0
#define ASIZ_task_tarray_ptr 0x00000008
-#define AOFF_task_wait_chldexit 0x00000198
+#define AOFF_task_wait_chldexit 0x000000e8
#define ASIZ_task_wait_chldexit 0x00000008
-#define AOFF_task_uid 0x000001a0
-#define ASIZ_task_uid 0x00000004
-#define AOFF_task_euid 0x000001a4
-#define ASIZ_task_euid 0x00000004
-#define AOFF_task_suid 0x000001a8
-#define ASIZ_task_suid 0x00000004
-#define AOFF_task_fsuid 0x000001ac
-#define ASIZ_task_fsuid 0x00000004
-#define AOFF_task_gid 0x000001b0
-#define ASIZ_task_gid 0x00000004
-#define AOFF_task_egid 0x000001b4
-#define ASIZ_task_egid 0x00000004
-#define AOFF_task_sgid 0x000001b8
-#define ASIZ_task_sgid 0x00000004
-#define AOFF_task_fsgid 0x000001bc
-#define ASIZ_task_fsgid 0x00000004
-#define AOFF_task_timeout 0x000001c0
+#define AOFF_task_timeout 0x000000f0
#define ASIZ_task_timeout 0x00000008
-#define AOFF_task_policy 0x000001c8
+#define AOFF_task_policy 0x000000f8
#define ASIZ_task_policy 0x00000008
-#define AOFF_task_rt_priority 0x000001d0
+#define AOFF_task_rt_priority 0x00000100
#define ASIZ_task_rt_priority 0x00000008
-#define AOFF_task_it_real_value 0x000001d8
+#define AOFF_task_it_real_value 0x00000108
#define ASIZ_task_it_real_value 0x00000008
-#define AOFF_task_it_prof_value 0x000001e0
+#define AOFF_task_it_prof_value 0x00000110
#define ASIZ_task_it_prof_value 0x00000008
-#define AOFF_task_it_virt_value 0x000001e8
+#define AOFF_task_it_virt_value 0x00000118
#define ASIZ_task_it_virt_value 0x00000008
-#define AOFF_task_it_real_incr 0x000001f0
+#define AOFF_task_it_real_incr 0x00000120
#define ASIZ_task_it_real_incr 0x00000008
-#define AOFF_task_it_prof_incr 0x000001f8
+#define AOFF_task_it_prof_incr 0x00000128
#define ASIZ_task_it_prof_incr 0x00000008
-#define AOFF_task_it_virt_incr 0x00000200
+#define AOFF_task_it_virt_incr 0x00000130
#define ASIZ_task_it_virt_incr 0x00000008
-#define AOFF_task_real_timer 0x00000208
+#define AOFF_task_real_timer 0x00000138
#define ASIZ_task_real_timer 0x00000028
-#define AOFF_task_times 0x00000230
+#define AOFF_task_times 0x00000160
#define ASIZ_task_times 0x00000020
-#define AOFF_task_start_time 0x00000250
+#define AOFF_task_start_time 0x00000180
#define ASIZ_task_start_time 0x00000008
-#define AOFF_task_per_cpu_utime 0x00000258
+#define AOFF_task_per_cpu_utime 0x00000188
#define ASIZ_task_per_cpu_utime 0x00000100
-#define AOFF_task_min_flt 0x00000458
+#define AOFF_task_min_flt 0x00000388
#define ASIZ_task_min_flt 0x00000008
-#define AOFF_task_maj_flt 0x00000460
+#define AOFF_task_maj_flt 0x00000390
#define ASIZ_task_maj_flt 0x00000008
-#define AOFF_task_nswap 0x00000468
+#define AOFF_task_nswap 0x00000398
#define ASIZ_task_nswap 0x00000008
-#define AOFF_task_cmin_flt 0x00000470
+#define AOFF_task_cmin_flt 0x000003a0
#define ASIZ_task_cmin_flt 0x00000008
-#define AOFF_task_cmaj_flt 0x00000478
+#define AOFF_task_cmaj_flt 0x000003a8
#define ASIZ_task_cmaj_flt 0x00000008
-#define AOFF_task_cnswap 0x00000480
+#define AOFF_task_cnswap 0x000003b0
#define ASIZ_task_cnswap 0x00000008
-#define AOFF_task_swap_address 0x00000490
+#define AOFF_task_swap_address 0x000003c0
#define ASIZ_task_swap_address 0x00000008
-#define AOFF_task_old_maj_flt 0x00000498
+#define AOFF_task_old_maj_flt 0x000003c8
#define ASIZ_task_old_maj_flt 0x00000008
-#define AOFF_task_dec_flt 0x000004a0
+#define AOFF_task_dec_flt 0x000003d0
#define ASIZ_task_dec_flt 0x00000008
-#define AOFF_task_swap_cnt 0x000004a8
+#define AOFF_task_swap_cnt 0x000003d8
#define ASIZ_task_swap_cnt 0x00000008
-#define AOFF_task_rlim 0x000004b0
+#define AOFF_task_uid 0x000003e0
+#define ASIZ_task_uid 0x00000004
+#define AOFF_task_euid 0x000003e4
+#define ASIZ_task_euid 0x00000004
+#define AOFF_task_suid 0x000003e8
+#define ASIZ_task_suid 0x00000004
+#define AOFF_task_fsuid 0x000003ec
+#define ASIZ_task_fsuid 0x00000004
+#define AOFF_task_gid 0x000003f0
+#define ASIZ_task_gid 0x00000004
+#define AOFF_task_egid 0x000003f4
+#define ASIZ_task_egid 0x00000004
+#define AOFF_task_sgid 0x000003f8
+#define ASIZ_task_sgid 0x00000004
+#define AOFF_task_fsgid 0x000003fc
+#define ASIZ_task_fsgid 0x00000004
+#define AOFF_task_ngroups 0x00000400
+#define ASIZ_task_ngroups 0x00000004
+#define AOFF_task_groups 0x00000404
+#define ASIZ_task_groups 0x00000080
+#define AOFF_task_cap_effective 0x00000484
+#define ASIZ_task_cap_effective 0x00000004
+#define AOFF_task_cap_inheritable 0x00000488
+#define ASIZ_task_cap_inheritable 0x00000004
+#define AOFF_task_cap_permitted 0x0000048c
+#define ASIZ_task_cap_permitted 0x00000004
+#define AOFF_task_rlim 0x00000490
#define ASIZ_task_rlim 0x000000a0
-#define AOFF_task_used_math 0x00000550
+#define AOFF_task_used_math 0x00000530
#define ASIZ_task_used_math 0x00000002
-#define AOFF_task_io_usage 0x00000558
-#define ASIZ_task_io_usage 0x00000008
-#define AOFF_task_comm 0x00000560
+#define AOFF_task_comm 0x00000532
#define ASIZ_task_comm 0x00000010
-#define AOFF_task_link_count 0x00000570
+#define AOFF_task_link_count 0x00000544
#define ASIZ_task_link_count 0x00000004
-#define AOFF_task_tty 0x00000578
+#define AOFF_task_tty 0x00000548
#define ASIZ_task_tty 0x00000008
-#define AOFF_task_semundo 0x00000580
+#define AOFF_task_semundo 0x00000550
#define ASIZ_task_semundo 0x00000008
-#define AOFF_task_semsleeping 0x00000588
+#define AOFF_task_semsleeping 0x00000558
#define ASIZ_task_semsleeping 0x00000008
-#define AOFF_task_ldt 0x00000590
-#define ASIZ_task_ldt 0x00000008
-#define AOFF_task_tss 0x000005a0
-#define ASIZ_task_tss 0x00000490
-#define AOFF_task_fs 0x00000a30
+#define AOFF_task_tss 0x00000560
+#define ASIZ_task_tss 0x00000440
+#define AOFF_task_fs 0x000009a0
#define ASIZ_task_fs 0x00000008
-#define AOFF_task_files 0x00000a38
+#define AOFF_task_files 0x000009a8
#define ASIZ_task_files 0x00000008
-#define AOFF_task_mm 0x00000a40
+#define AOFF_task_mm 0x000009b0
#define ASIZ_task_mm 0x00000008
-#define AOFF_task_sig 0x00000a48
+#define AOFF_task_sigmask_lock 0x000009b8
+#define ASIZ_task_sigmask_lock 0x00000001
+#define AOFF_task_sig 0x000009c0
#define ASIZ_task_sig 0x00000008
-#define AOFF_task_signal 0x00000a50
+#define AOFF_task_signal 0x000009c8
#define ASIZ_task_signal 0x00000008
-#define AOFF_task_blocked 0x00000a58
+#define AOFF_task_blocked 0x000009d0
#define ASIZ_task_blocked 0x00000008
-#define AOFF_task_sigqueue 0x00000a60
+#define AOFF_task_sigqueue 0x000009d8
#define ASIZ_task_sigqueue 0x00000008
-#define AOFF_task_sigqueue_tail 0x00000a68
+#define AOFF_task_sigqueue_tail 0x000009e0
#define ASIZ_task_sigqueue_tail 0x00000008
-#define AOFF_task_has_cpu 0x00000a70
-#define ASIZ_task_has_cpu 0x00000004
-#define AOFF_task_processor 0x00000a74
-#define ASIZ_task_processor 0x00000004
-#define AOFF_task_last_processor 0x00000a78
-#define ASIZ_task_last_processor 0x00000004
-#define AOFF_task_lock_depth 0x00000a7c
-#define ASIZ_task_lock_depth 0x00000004
-#define AOFF_task_sigmask_lock 0x00000a80
-#define ASIZ_task_sigmask_lock 0x00000001
+#define AOFF_task_sas_ss_sp 0x000009e8
+#define ASIZ_task_sas_ss_sp 0x00000008
+#define AOFF_task_sas_ss_size 0x000009f0
+#define ASIZ_task_sas_ss_size 0x00000008
#define AOFF_mm_mmap 0x00000000
#define ASIZ_mm_mmap 0x00000008
#define AOFF_mm_mmap_cache 0x00000008
@@ -479,22 +499,24 @@
#define ASIZ_mm_def_flags 0x00000008
#define AOFF_mm_cpu_vm_mask 0x000000b0
#define ASIZ_mm_cpu_vm_mask 0x00000008
+#define AOFF_mm_segments 0x000000b8
+#define ASIZ_mm_segments 0x00000008
#define AOFF_thread_ksp 0x00000000
#define ASIZ_thread_ksp 0x00000008
-#define AOFF_thread_kpc 0x00000008
-#define ASIZ_thread_kpc 0x00000004
-#define AOFF_thread_wstate 0x0000000c
+#define AOFF_thread_wstate 0x00000008
#define ASIZ_thread_wstate 0x00000002
-#define AOFF_thread_cwp 0x0000000e
+#define AOFF_thread_cwp 0x0000000a
#define ASIZ_thread_cwp 0x00000002
-#define AOFF_thread_flags 0x00000010
+#define AOFF_thread_flags 0x0000000c
#define ASIZ_thread_flags 0x00000002
-#define AOFF_thread_ctx 0x00000012
+#define AOFF_thread_ctx 0x0000000e
#define ASIZ_thread_ctx 0x00000002
-#define AOFF_thread_w_saved 0x00000014
+#define AOFF_thread_w_saved 0x00000010
#define ASIZ_thread_w_saved 0x00000002
-#define AOFF_thread_new_signal 0x00000016
+#define AOFF_thread_new_signal 0x00000012
#define ASIZ_thread_new_signal 0x00000002
+#define AOFF_thread____pad 0x00000014
+#define ASIZ_thread____pad 0x00000004
#define AOFF_thread_current_ds 0x00000018
#define ASIZ_thread_current_ds 0x00000008
#define AOFF_thread_kregs 0x00000020
@@ -502,15 +524,21 @@
#define AOFF_thread_utraps 0x00000028
#define ASIZ_thread_utraps 0x00000008
#define AOFF_thread_reg_window 0x00000030
-#define ASIZ_thread_reg_window 0x00000400
-#define AOFF_thread_rwbuf_stkptrs 0x00000430
-#define ASIZ_thread_rwbuf_stkptrs 0x00000040
-#define AOFF_thread_sig_address 0x00000470
+#define ASIZ_thread_reg_window 0x00000380
+#define AOFF_thread_rwbuf_stkptrs 0x000003b0
+#define ASIZ_thread_rwbuf_stkptrs 0x00000038
+#define AOFF_thread_sig_address 0x000003e8
#define ASIZ_thread_sig_address 0x00000008
-#define AOFF_thread_sig_desc 0x00000478
+#define AOFF_thread_sig_desc 0x000003f0
#define ASIZ_thread_sig_desc 0x00000008
-#define AOFF_thread_sstk_info 0x00000480
-#define ASIZ_thread_sstk_info 0x00000010
+#define AOFF_thread_fpdepth 0x000003f8
+#define ASIZ_thread_fpdepth 0x00000001
+#define AOFF_thread_fpsaved 0x000003f9
+#define ASIZ_thread_fpsaved 0x00000007
+#define AOFF_thread_gsr 0x00000400
+#define ASIZ_thread_gsr 0x00000007
+#define AOFF_thread_xfsr 0x00000408
+#define ASIZ_thread_xfsr 0x00000038
#endif /* __SMP__ */
diff --git a/include/asm-sparc64/audioio.h b/include/asm-sparc64/audioio.h
new file mode 100644
index 000000000..8d3000ea9
--- /dev/null
+++ b/include/asm-sparc64/audioio.h
@@ -0,0 +1,416 @@
+/*
+ * include/asm-sparc/audioio.h
+ *
+ * Sparc Audio Midlayer
+ * Copyright (C) 1996 Thomas K. Dyas (tdyas@noc.rutgers.edu)
+ */
+
+#ifndef _AUDIOIO_H_
+#define _AUDIOIO_H_
+
+/*
+ * SunOS/Solaris /dev/audio interface
+ */
+
+#if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
+#include <linux/types.h>
+#include <linux/time.h>
+#include <linux/ioctl.h>
+#endif
+
+/*
+ * This structure contains state information for audio device IO streams.
+ */
+typedef struct audio_prinfo {
+ /*
+ * The following values describe the audio data encoding.
+ */
+ unsigned int sample_rate; /* samples per second */
+ unsigned int channels; /* number of interleaved channels */
+ unsigned int precision; /* bit-width of each sample */
+ unsigned int encoding; /* data encoding method */
+
+ /*
+ * The following values control audio device configuration
+ */
+ unsigned int gain; /* gain level: 0 - 255 */
+ unsigned int port; /* selected I/O port (see below) */
+ unsigned int avail_ports; /* available I/O ports (see below) */
+ unsigned int _xxx[2]; /* Reserved for future use */
+
+ unsigned int buffer_size; /* I/O buffer size */
+
+ /*
+ * The following values describe driver state
+ */
+ unsigned int samples; /* number of samples converted */
+ unsigned int eof; /* End Of File counter (play only) */
+
+ unsigned char pause; /* non-zero for pause, zero to resume */
+ unsigned char error; /* non-zero if overflow/underflow */
+ unsigned char waiting; /* non-zero if a process wants access */
+ unsigned char balance; /* stereo channel balance */
+
+ unsigned short minordev;
+
+ /*
+ * The following values are read-only state flags
+ */
+ unsigned char open; /* non-zero if open access permitted */
+ unsigned char active; /* non-zero if I/O is active */
+} audio_prinfo_t;
+
+
+/*
+ * This structure describes the current state of the audio device.
+ */
+typedef struct audio_info {
+ /*
+ * Per-stream information
+ */
+ audio_prinfo_t play; /* output status information */
+ audio_prinfo_t record; /* input status information */
+
+ /*
+ * Per-unit/channel information
+ */
+ unsigned int monitor_gain; /* input to output mix: 0 - 255 */
+ unsigned char output_muted; /* non-zero if output is muted */
+ unsigned char _xxx[3]; /* Reserved for future use */
+ unsigned int _yyy[3]; /* Reserved for future use */
+} audio_info_t;
+
+
+/*
+ * Audio encoding types
+ */
+#define AUDIO_ENCODING_NONE (0) /* no encoding assigned */
+#define AUDIO_ENCODING_ULAW (1) /* u-law encoding */
+#define AUDIO_ENCODING_ALAW (2) /* A-law encoding */
+#define AUDIO_ENCODING_LINEAR (3) /* Linear PCM encoding */
+#define AUDIO_ENCODING_DVI (104) /* DVI ADPCM */
+#define AUDIO_ENCODING_LINEAR8 (105) /* 8 bit UNSIGNED */
+#define AUDIO_ENCODING_LINEARLE (106) /* Linear PCM LE encoding */
+
+/*
+ * These ranges apply to record, play, and monitor gain values
+ */
+#define AUDIO_MIN_GAIN (0) /* minimum gain value */
+#define AUDIO_MAX_GAIN (255) /* maximum gain value */
+
+/*
+ * These values apply to the balance field to adjust channel gain values
+ */
+#define AUDIO_LEFT_BALANCE (0) /* left channel only */
+#define AUDIO_MID_BALANCE (32) /* equal left/right channel */
+#define AUDIO_RIGHT_BALANCE (64) /* right channel only */
+#define AUDIO_BALANCE_SHIFT (3)
+
+/*
+ * Generic minimum/maximum limits for number of channels, both modes
+ */
+#define AUDIO_MIN_PLAY_CHANNELS (1)
+#define AUDIO_MAX_PLAY_CHANNELS (4)
+#define AUDIO_MIN_REC_CHANNELS (1)
+#define AUDIO_MAX_REC_CHANNELS (4)
+
+/*
+ * Generic minimum/maximum limits for sample precision
+ */
+#define AUDIO_MIN_PLAY_PRECISION (8)
+#define AUDIO_MAX_PLAY_PRECISION (32)
+#define AUDIO_MIN_REC_PRECISION (8)
+#define AUDIO_MAX_REC_PRECISION (32)
+
+/*
+ * Define some convenient names for typical audio ports
+ */
+/*
+ * output ports (several may be enabled simultaneously)
+ */
+#define AUDIO_SPEAKER 0x01 /* output to built-in speaker */
+#define AUDIO_HEADPHONE 0x02 /* output to headphone jack */
+#define AUDIO_LINE_OUT 0x04 /* output to line out */
+
+/*
+ * input ports (usually only one at a time)
+ */
+#define AUDIO_MICROPHONE 0x01 /* input from microphone */
+#define AUDIO_LINE_IN 0x02 /* input from line in */
+#define AUDIO_CD 0x04 /* input from on-board CD inputs */
+#define AUDIO_INTERNAL_CD_IN AUDIO_CD /* input from internal CDROM */
+/* Supposedly an undocumented feature of the 4231 */
+#define AUDIO_ANALOG_LOOPBACK 0x40
+
+
+/*
+ * This macro initializes an audio_info structure to 'harmless' values.
+ * Note that (~0) might not be a harmless value for a flag that was
+ * a signed int.
+ */
+#define AUDIO_INITINFO(i) { \
+ unsigned int *__x__; \
+ for (__x__ = (unsigned int *)(i); \
+ (char *) __x__ < (((char *)(i)) + sizeof (audio_info_t)); \
+ *__x__++ = ~0); \
+}
+
+/*
+ * These allow testing for what the user wants to set
+ */
+#define AUD_INITVALUE (~0)
+#define Modify(X) ((unsigned int)(X) != AUD_INITVALUE)
+#define Modifys(X) ((X) != (unsigned short)AUD_INITVALUE)
+#define Modifyc(X) ((X) != (unsigned char)AUD_INITVALUE)
+
+/*
+ * Parameter for the AUDIO_GETDEV ioctl to determine current
+ * audio devices.
+ */
+#define MAX_AUDIO_DEV_LEN (16)
+typedef struct audio_device {
+ char name[MAX_AUDIO_DEV_LEN];
+ char version[MAX_AUDIO_DEV_LEN];
+ char config[MAX_AUDIO_DEV_LEN];
+} audio_device_t;
+
+
+/*
+ * Ioctl calls for the audio device.
+ */
+
+/*
+ * AUDIO_GETINFO retrieves the current state of the audio device.
+ *
+ * AUDIO_SETINFO copies all fields of the audio_info structure whose
+ * values are not set to the initialized value (-1) to the device state.
+ * It performs an implicit AUDIO_GETINFO to return the new state of the
+ * device. Note that the record.samples and play.samples fields are set
+ * to the last value before the AUDIO_SETINFO took effect. This allows
+ * an application to reset the counters while atomically retrieving the
+ * last value.
+ *
+ * AUDIO_DRAIN suspends the calling process until the write buffers are
+ * empty.
+ *
+ * AUDIO_GETDEV returns a structure of type audio_device_t which contains
+ * three strings. The string "name" is a short identifying string (for
+ * example, the SBus Fcode name string), the string "version" identifies
+ * the current version of the device, and the "config" string identifies
+ * the specific configuration of the audio stream. All fields are
+ * device-dependent -- see the device specific manual pages for details.
+ *
+ * AUDIO_GETDEV_SUNOS returns a number which is an audio device defined
+ * herein (making it not too portable)
+ *
+ * AUDIO_FLUSH stops all playback and recording, clears all queued buffers,
+ * resets error counters, and restarts recording and playback as appropriate
+ * for the current sampling mode.
+ */
+#define AUDIO_GETINFO _IOR('A', 1, audio_info_t)
+#define AUDIO_SETINFO _IOWR('A', 2, audio_info_t)
+#define AUDIO_DRAIN _IO('A', 3)
+#define AUDIO_GETDEV _IOR('A', 4, audio_device_t)
+#define AUDIO_GETDEV_SUNOS _IOR('A', 4, int)
+#define AUDIO_FLUSH _IO('A', 5)
+
+/* Define possible audio hardware configurations for
+ * old SunOS-style AUDIO_GETDEV ioctl */
+#define AUDIO_DEV_UNKNOWN (0) /* not defined */
+#define AUDIO_DEV_AMD (1) /* audioamd device */
+#define AUDIO_DEV_SPEAKERBOX (2) /* dbri device with speakerbox */
+#define AUDIO_DEV_CODEC (3) /* dbri device (internal speaker) */
+#define AUDIO_DEV_CS4231 (5) /* cs4231 device */
+
+/*
+ * The following ioctl sets the audio device into an internal loopback mode,
+ * if the hardware supports this. The argument is TRUE to set loopback,
+ * FALSE to reset to normal operation. If the hardware does not support
+ * internal loopback, the ioctl should fail with EINVAL.
+ */
+#define AUDIO_DIAG_LOOPBACK _IOW('A', 101, int)
+
+#ifdef notneeded
+/*
+ * Structure sent up as a M_PROTO message on trace streams
+ */
+typedef struct audtrace_hdr audtrace_hdr_t;
+struct audtrace_hdr {
+ unsigned int seq; /* Sequence number (per-aud_stream) */
+ int type; /* device-dependent */
+ struct timeval timestamp;
+ char _f[8]; /* filler */
+};
+#endif
+
+/*
+ * Linux kernel internal implementation.
+ */
+
+#ifdef __KERNEL__
+
+#include <linux/types.h>
+#include <linux/fs.h>
+#include <linux/tqueue.h>
+#include <linux/wait.h>
+
+#define SDF_OPEN_WRITE 0x00000001
+#define SDF_OPEN_READ 0x00000002
+
+struct sparcaudio_driver
+{
+ const char * name;
+ struct sparcaudio_operations *ops;
+ void *private;
+ unsigned long flags;
+
+ /* This device */
+ struct linux_sbus_device *dev;
+
+ /* Processes blocked on open() sit here. */
+ struct wait_queue *open_wait;
+
+ /* Task queue for this driver's bottom half. */
+ struct tq_struct tqueue;
+
+ /* Support for a circular queue of output buffers. */
+ __u8 **output_buffers;
+ size_t *output_sizes, output_size;
+ int num_output_buffers, output_front, output_rear;
+ int output_count, output_active, playing_count;
+ struct wait_queue *output_write_wait, *output_drain_wait;
+
+ /* Support for a circular queue of input buffers. */
+ __u8 **input_buffers;
+ int input_offset;
+ int num_input_buffers, input_front, input_rear;
+ int input_count, input_active, recording_count;
+ struct wait_queue *input_read_wait;
+};
+
+struct sparcaudio_operations
+{
+ int (*open)(struct inode *, struct file *, struct sparcaudio_driver *);
+ void (*release)(struct inode *, struct file *,
+ struct sparcaudio_driver *);
+ int (*ioctl)(struct inode *, struct file *, unsigned int,
+ unsigned long, struct sparcaudio_driver *);
+
+ /* Ask driver to begin playing a buffer. */
+ void (*start_output)(struct sparcaudio_driver *, __u8 *,
+ unsigned long);
+
+ /* Ask driver to stop playing a buffer. */
+ void (*stop_output)(struct sparcaudio_driver *);
+
+ /* Ask driver to begin recording into a buffer. */
+ void (*start_input)(struct sparcaudio_driver *, __u8 *, unsigned long);
+
+ /* Ask driver to stop recording. */
+ void (*stop_input)(struct sparcaudio_driver *);
+
+ /* Return driver name/version to caller. (/dev/audio specific) */
+ void (*sunaudio_getdev)(struct sparcaudio_driver *, audio_device_t *);
+
+ /* Get and set the output volume. (0-255) */
+ int (*set_output_volume)(struct sparcaudio_driver *, int);
+ int (*get_output_volume)(struct sparcaudio_driver *);
+
+ /* Get and set the input volume. (0-255) */
+ int (*set_input_volume)(struct sparcaudio_driver *, int);
+ int (*get_input_volume)(struct sparcaudio_driver *);
+
+ /* Get and set the monitor volume. (0-255) */
+ int (*set_monitor_volume)(struct sparcaudio_driver *, int);
+ int (*get_monitor_volume)(struct sparcaudio_driver *);
+
+ /* Get and set the output balance. (0-64) */
+ int (*set_output_balance)(struct sparcaudio_driver *, int);
+ int (*get_output_balance)(struct sparcaudio_driver *);
+
+ /* Get and set the input balance. (0-64) */
+ int (*set_input_balance)(struct sparcaudio_driver *, int);
+ int (*get_input_balance)(struct sparcaudio_driver *);
+
+ /* Get and set the output channels. (1-4) */
+ int (*set_output_channels)(struct sparcaudio_driver *, int);
+ int (*get_output_channels)(struct sparcaudio_driver *);
+
+ /* Get and set the input channels. (1-4) */
+ int (*set_input_channels)(struct sparcaudio_driver *, int);
+ int (*get_input_channels)(struct sparcaudio_driver *);
+
+ /* Get and set the output precision. (8-32) */
+ int (*set_output_precision)(struct sparcaudio_driver *, int);
+ int (*get_output_precision)(struct sparcaudio_driver *);
+
+ /* Get and set the input precision. (8-32) */
+ int (*set_input_precision)(struct sparcaudio_driver *, int);
+ int (*get_input_precision)(struct sparcaudio_driver *);
+
+ /* Get and set the output port. () */
+ int (*set_output_port)(struct sparcaudio_driver *, int);
+ int (*get_output_port)(struct sparcaudio_driver *);
+
+ /* Get and set the input port. () */
+ int (*set_input_port)(struct sparcaudio_driver *, int);
+ int (*get_input_port)(struct sparcaudio_driver *);
+
+ /* Get and set the output encoding. () */
+ int (*set_output_encoding)(struct sparcaudio_driver *, int);
+ int (*get_output_encoding)(struct sparcaudio_driver *);
+
+ /* Get and set the input encoding. () */
+ int (*set_input_encoding)(struct sparcaudio_driver *, int);
+ int (*get_input_encoding)(struct sparcaudio_driver *);
+
+ /* Get and set the output rate. () */
+ int (*set_output_rate)(struct sparcaudio_driver *, int);
+ int (*get_output_rate)(struct sparcaudio_driver *);
+
+ /* Get and set the input rate. () */
+ int (*set_input_rate)(struct sparcaudio_driver *, int);
+ int (*get_input_rate)(struct sparcaudio_driver *);
+
+ /* Return driver number to caller. (SunOS /dev/audio specific) */
+ int (*sunaudio_getdev_sunos)(struct sparcaudio_driver *);
+
+ /* Get available ports */
+ int (*get_output_ports)(struct sparcaudio_driver *);
+ int (*get_input_ports)(struct sparcaudio_driver *);
+
+ /* Get and set output mute */
+ int (*set_output_muted)(struct sparcaudio_driver *, int);
+ int (*get_output_muted)(struct sparcaudio_driver *);
+};
+
+extern int register_sparcaudio_driver(struct sparcaudio_driver *);
+extern int unregister_sparcaudio_driver(struct sparcaudio_driver *);
+extern void sparcaudio_output_done(struct sparcaudio_driver *, int);
+extern void sparcaudio_input_done(struct sparcaudio_driver *);
+extern int sparcaudio_init(void);
+extern int amd7930_init(void);
+extern int cs4231_init(void);
+
+#endif
+
+/* Macros to convert between mixer stereo volumes and gain (mono) */
+#define s_to_m(a) (((((a) >> 8) & 0x7f) + ((a) & 0x7f)) / 2)
+#define m_to_s(a) (((a) << 8) + (a))
+
+/* convert mixer stereo volume to balance */
+#define s_to_b(a) (AUDIO_RIGHT_BALANCE * ((((a) >> 8) & 0xff) / (((((a) >> 8) & 0xff) + ((a) & 0xff)) / 2)))
+
+/* convert mixer stereo volume to audio gain */
+#define s_to_g(a) (((((a) >> 8) & 0xff) + ((a) & 0xff)) / 2)
+
+/* convert gain a and balance b to mixer volume */
+#define b_to_s(a,b) ((a * (b / AUDIO_RIGHT_BALANCE) << 8) + (a * (1 - (b / AUDIO_RIGHT_BALANCE))))
+
+#define SPARCAUDIO_MIXER_MINOR 0
+#define SPARCAUDIO_DSP16_MINOR 1
+#define SPARCAUDIO_DSP_MINOR 3
+#define SPARCAUDIO_AUDIO_MINOR 4
+#define SPARCAUDIO_AUDIOCTL_MINOR 5
+#define SPARCAUDIO_STATUS_MINOR 6
+#endif
diff --git a/include/asm-sparc64/bitops.h b/include/asm-sparc64/bitops.h
index e8b600eb0..d355b1ed4 100644
--- a/include/asm-sparc64/bitops.h
+++ b/include/asm-sparc64/bitops.h
@@ -1,4 +1,4 @@
-/* $Id: bitops.h,v 1.23 1997/12/18 02:44:12 ecd Exp $
+/* $Id: bitops.h,v 1.25 1998/07/26 03:05:51 davem Exp $
* bitops.h: Bit string operations on the V9.
*
* Copyright 1996, 1997 David S. Miller (davem@caip.rutgers.edu)
@@ -186,6 +186,56 @@ extern __inline__ unsigned long ffz(unsigned long word)
return result;
}
+#ifdef __KERNEL__
+
+/*
+ * ffs: find first bit set. This is defined the same way as
+ * the libc and compiler builtin ffs routines, therefore
+ * differs in spirit from the above ffz (man ffs).
+ */
+
+#define ffs(x) generic_ffs(x)
+
+/*
+ * hweightN: returns the hamming weight (i.e. the number
+ * of bits set) of a N-bit word
+ */
+
+#ifdef ULTRA_HAS_POPULATION_COUNT
+
+extern __inline__ unsigned int hweight32(unsigned int w)
+{
+ unsigned int res;
+
+ __asm__ ("popc %1,%0" : "=r" (res) : "r" (w & 0xffffffff));
+ return res;
+}
+
+extern __inline__ unsigned int hweight16(unsigned int w)
+{
+ unsigned int res;
+
+ __asm__ ("popc %1,%0" : "=r" (res) : "r" (w & 0xffff));
+ return res;
+}
+
+extern __inline__ unsigned int hweight8(unsigned int w)
+{
+ unsigned int res;
+
+ __asm__ ("popc %1,%0" : "=r" (res) : "r" (w & 0xff));
+ return res;
+}
+
+#else
+
+#define hweight32(x) generic_hweight32(x)
+#define hweight16(x) generic_hweight16(x)
+#define hweight8(x) generic_hweight8(x)
+
+#endif
+#endif /* __KERNEL__ */
+
/* find_next_zero_bit() finds the first zero bit in a bit string of length
* 'size' bits, starting the search at bit 'offset'. This is largely based
* on Linus's ALPHA routines, which are pretty portable BTW.
diff --git a/include/asm-sparc64/dma.h b/include/asm-sparc64/dma.h
index 4afcd5f27..aedfa7ddd 100644
--- a/include/asm-sparc64/dma.h
+++ b/include/asm-sparc64/dma.h
@@ -1,4 +1,4 @@
-/* $Id: dma.h,v 1.7 1997/04/10 05:13:28 davem Exp $
+/* $Id: dma.h,v 1.8 1998/04/13 07:27:06 davem Exp $
* include/asm-sparc64/dma.h
*
* Copyright 1996 (C) David S. Miller (davem@caip.rutgers.edu)
@@ -74,7 +74,7 @@ extern struct Linux_SBus_DMA *dma_chain;
#define DMA_ISESC1(dma) ((dma)->revision == dvmaesc1)
/* Main routines in dma.c */
-extern unsigned long dvma_init(struct linux_sbus *, unsigned long);
+extern void dvma_init(struct linux_sbus *);
/* Fields in the cond_reg register */
/* First, the version identification bits */
diff --git a/include/asm-sparc64/ebus.h b/include/asm-sparc64/ebus.h
index 333f7affe..8724757c7 100644
--- a/include/asm-sparc64/ebus.h
+++ b/include/asm-sparc64/ebus.h
@@ -1,4 +1,4 @@
-/* $Id: ebus.h,v 1.5 1998/03/15 10:14:46 ecd Exp $
+/* $Id: ebus.h,v 1.8 1998/05/07 21:00:27 ecd Exp $
* ebus.h: PCI to Ebus pseudo driver software state.
*
* Copyright (C) 1997 Eddie C. Dost (ecd@skynet.be)
@@ -82,7 +82,7 @@ struct linux_ebus_dma {
extern struct linux_ebus *ebus_chain;
-extern unsigned long ebus_init(unsigned long, unsigned long);
+extern void ebus_init(void);
#define for_each_ebus(bus) \
for((bus) = ebus_chain; (bus); (bus) = (bus)->next)
@@ -93,9 +93,4 @@ extern unsigned long ebus_init(unsigned long, unsigned long);
#define for_each_edevchild(dev, child) \
for((child) = (dev)->children; (child); (child) = (child)->next)
-#define for_all_ebusdev(dev, bus) \
- for ((bus) = ebus_chain, ((dev) = (bus) ? (bus)->devices : 0); \
- (bus); ((dev) = (dev)->next ? (dev)->next : \
- ((bus) = (bus)->next, (bus) ? (bus)->devices : 0)))
-
#endif /* !(__SPARC64_EBUS_H) */
diff --git a/include/asm-sparc64/envctrl.h b/include/asm-sparc64/envctrl.h
new file mode 100644
index 000000000..1b5e4da9c
--- /dev/null
+++ b/include/asm-sparc64/envctrl.h
@@ -0,0 +1,17 @@
+/* $Id: envctrl.h,v 1.1 1998/05/16 17:26:07 ecd Exp $
+ *
+ * envctrl.h: Definitions for access to the i2c environment
+ * monitoring on Ultrasparc systems.
+ *
+ * Copyright (C) 1998 Eddie C. Dost (ecd@skynet.be)
+ */
+
+#ifndef _SPARC64_ENVCTRL_H
+#define _SPARC64_ENVCTRL_H 1
+
+#include <linux/ioctl.h>
+
+#define I2CIOCSADR _IOW('p', 0x40, int)
+#define I2CIOCGADR _IOR('p', 0x41, int)
+
+#endif /* !(_SPARC64_ENVCTRL_H) */
diff --git a/include/asm-sparc64/fbio.h b/include/asm-sparc64/fbio.h
index c890793ed..6f45ce973 100644
--- a/include/asm-sparc64/fbio.h
+++ b/include/asm-sparc64/fbio.h
@@ -59,8 +59,13 @@ struct fbcmap {
unsigned char *blue;
};
+#ifdef __KERNEL__
+#define FBIOPUTCMAP_SPARC _IOW('F', 3, struct fbcmap)
+#define FBIOGETCMAP_SPARC _IOW('F', 4, struct fbcmap)
+#else
#define FBIOPUTCMAP _IOW('F', 3, struct fbcmap)
#define FBIOGETCMAP _IOW('F', 4, struct fbcmap)
+#endif
/* # of device specific values */
#define FB_ATTR_NDEVSPECIFIC 8
diff --git a/include/asm-sparc64/firehose.h b/include/asm-sparc64/firehose.h
index e4f4bb7e7..de403e98c 100644
--- a/include/asm-sparc64/firehose.h
+++ b/include/asm-sparc64/firehose.h
@@ -1,4 +1,4 @@
-/* $Id: firehose.h,v 1.2 1997/08/08 04:26:31 davem Exp $
+/* $Id: firehose.h,v 1.3 1998/06/10 07:28:43 davem Exp $
* firehose.h: Defines for the Fire Hose Controller (FHC) found
* on Sunfire/Starfire/Wildfire systems.
*
@@ -29,7 +29,7 @@ struct fhc_internal_regs {
/*0x0100*/ u32 fhc_jtag_cmd; /* FHC JTAG Command Register */
};
-/* Part of same space of regs, but mapped seperately in PROM reg property
+/* Part of same space of regs, but mapped separately in PROM reg property
* for the FHC, thus we have the following few structs...
*/
struct fhc_ign_reg {
diff --git a/include/asm-sparc64/floppy.h b/include/asm-sparc64/floppy.h
index ea5208f85..e90a7aca1 100644
--- a/include/asm-sparc64/floppy.h
+++ b/include/asm-sparc64/floppy.h
@@ -1,4 +1,4 @@
-/* $Id: floppy.h,v 1.7 1997/09/07 03:34:08 davem Exp $
+/* $Id: floppy.h,v 1.11 1998/05/22 14:33:39 jj Exp $
* asm-sparc64/floppy.h: Sparc specific parts of the Floppy driver.
*
* Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
@@ -11,6 +11,7 @@
#define __ASM_SPARC64_FLOPPY_H
#include <linux/config.h>
+#include <linux/init.h>
#include <asm/page.h>
#include <asm/pgtable.h>
@@ -39,7 +40,7 @@ struct sun_flpy_controller {
#define dcr_82077 dir_82077 /* Config Control reg. */
};
-/* You'll only ever find one controller on a SparcStation anyways. */
+/* You'll only ever find one controller on an Ultra anyways. */
static struct sun_flpy_controller *sun_fdc = NULL;
volatile unsigned char *fdc_status;
static struct linux_sbus_device *floppy_sdev = NULL;
@@ -229,21 +230,10 @@ static int sun_fd_request_irq(void)
int error;
if(!once) {
- struct devid_cookie dcookie;
-
once = 1;
- dcookie.real_dev_id = NULL;
- dcookie.imap = dcookie.iclr = 0;
- dcookie.pil = -1;
- dcookie.bus_cookie = floppy_sdev->my_bus;
-
- error = request_fast_irq(FLOPPY_IRQ, floppy_hardint,
- (SA_INTERRUPT | SA_SBUS | SA_DCOOKIE),
- "floppy", &dcookie);
-
- if(error == 0)
- FLOPPY_IRQ = dcookie.ret_ino;
+ error = request_fast_irq(FLOPPY_IRQ, floppy_hardint,
+ SA_INTERRUPT, "floppy", NULL);
return ((error == 0) ? 0 : -1);
}
@@ -294,29 +284,45 @@ static void sun_pci_fd_outb(unsigned char val, unsigned long port)
outb(val, port);
}
-static void sun_pci_fd_enable_dma(void)
+static void sun_pci_fd_reset_dma(void)
{
unsigned int dcsr;
- dcsr = readl((unsigned long)&sun_fd_ebus_dma->dcsr);
- dcsr |= (EBUS_DCSR_EN_DMA | EBUS_DCSR_EN_CNT);
+ writel(EBUS_DCSR_RESET, &sun_fd_ebus_dma->dcsr);
+
+ dcsr = EBUS_DCSR_BURST_SZ_16 | EBUS_DCSR_TCI_DIS |
+ EBUS_DCSR_EN_CNT | EBUS_DCSR_INT_EN;
writel(dcsr, (unsigned long)&sun_fd_ebus_dma->dcsr);
}
+static void sun_pci_fd_enable_dma(void)
+{
+ unsigned int dcsr;
+
+ dcsr = readl(&sun_fd_ebus_dma->dcsr);
+ dcsr |= EBUS_DCSR_EN_DMA;
+ writel(dcsr, &sun_fd_ebus_dma->dcsr);
+}
+
static void sun_pci_fd_disable_dma(void)
{
unsigned int dcsr;
- dcsr = readl((unsigned long)&sun_fd_ebus_dma->dcsr);
- dcsr &= ~(EBUS_DCSR_EN_DMA | EBUS_DCSR_EN_CNT);
- writel(dcsr, (unsigned long)&sun_fd_ebus_dma->dcsr);
+ dcsr = readl(&sun_fd_ebus_dma->dcsr);
+ while (dcsr & EBUS_DCSR_DRAIN)
+ dcsr = readl(&sun_fd_ebus_dma->dcsr);
+ dcsr &= ~(EBUS_DCSR_EN_DMA);
+ if (dcsr & EBUS_DCSR_ERR_PEND)
+ sun_pci_fd_reset_dma();
+ writel(dcsr, &sun_fd_ebus_dma->dcsr);
}
static void sun_pci_fd_set_dma_mode(int mode)
{
unsigned int dcsr;
- dcsr = readl((unsigned long)&sun_fd_ebus_dma->dcsr);
+ dcsr = readl(&sun_fd_ebus_dma->dcsr);
+ dcsr |= EBUS_DCSR_EN_CNT | EBUS_DCSR_TC;
/*
* For EBus WRITE means to system memory, which is
* READ for us.
@@ -325,61 +331,61 @@ static void sun_pci_fd_set_dma_mode(int mode)
dcsr &= ~(EBUS_DCSR_WRITE);
else
dcsr |= EBUS_DCSR_WRITE;
- writel(dcsr, (unsigned long)&sun_fd_ebus_dma->dcsr);
+ writel(dcsr, &sun_fd_ebus_dma->dcsr);
}
static void sun_pci_fd_set_dma_count(int length)
{
- writel(length, (unsigned long)&sun_fd_ebus_dma->dbcr);
+ writel(length, &sun_fd_ebus_dma->dbcr);
}
static void sun_pci_fd_set_dma_addr(char *buffer)
{
- unsigned int addr;
+ unsigned int addr = virt_to_bus(buffer);
+ writel(addr, &sun_fd_ebus_dma->dacr);
+}
- addr = virt_to_bus(buffer);
- writel(addr, (unsigned long)&sun_fd_ebus_dma->dacr);
+static unsigned int sun_pci_get_dma_residue(void)
+{
+ return readl(&sun_fd_ebus_dma->dbcr);
}
static void sun_pci_fd_enable_irq(void)
{
unsigned int dcsr;
- dcsr = readl((unsigned long)&sun_fd_ebus_dma->dcsr);
+ dcsr = readl(&sun_fd_ebus_dma->dcsr);
dcsr |= EBUS_DCSR_INT_EN;
- writel(dcsr, (unsigned long)&sun_fd_ebus_dma->dcsr);
+ writel(dcsr, &sun_fd_ebus_dma->dcsr);
}
static void sun_pci_fd_disable_irq(void)
{
unsigned int dcsr;
- dcsr = readl((unsigned long)&sun_fd_ebus_dma->dcsr);
+ dcsr = readl(&sun_fd_ebus_dma->dcsr);
dcsr &= ~(EBUS_DCSR_INT_EN);
- writel(dcsr, (unsigned long)&sun_fd_ebus_dma->dcsr);
+ writel(dcsr, &sun_fd_ebus_dma->dcsr);
}
static int sun_pci_fd_request_irq(void)
{
- int error;
+ int err;
- error = request_irq(FLOPPY_IRQ, floppy_interrupt, SA_SHIRQ, "floppy", sun_fdc);
- return ((error == 0) ? 0 : -1);
+ err = request_irq(FLOPPY_IRQ, floppy_interrupt, SA_SHIRQ,
+ "floppy", sun_fdc);
+ if (err)
+ return -1;
+ sun_pci_fd_enable_irq();
+ return 0;
}
static void sun_pci_fd_free_irq(void)
{
+ sun_pci_fd_disable_irq();
free_irq(FLOPPY_IRQ, sun_fdc);
}
-static unsigned int sun_pci_get_dma_residue(void)
-{
- unsigned int res;
-
- res = readl((unsigned long)&sun_fd_ebus_dma->dbcr);
- return res;
-}
-
static int sun_pci_fd_eject(int drive)
{
return -EINVAL;
@@ -388,7 +394,7 @@ static int sun_pci_fd_eject(int drive)
static struct linux_prom_registers fd_regs[2];
-static unsigned long sun_floppy_init(void)
+__initfunc(static unsigned long sun_floppy_init(void))
{
char state[128];
int fd_node, num_regs;
@@ -401,19 +407,26 @@ static unsigned long sun_floppy_init(void)
}
if(sdev) {
floppy_sdev = sdev;
- FLOPPY_IRQ = sdev->irqs[0].pri;
+ FLOPPY_IRQ = sdev->irqs[0];
} else {
#ifdef CONFIG_PCI
struct linux_ebus *ebus;
- struct linux_ebus_device *edev;
+ struct linux_ebus_device *edev = 0;
- for_all_ebusdev(edev, ebus) {
- if (!strcmp(edev->prom_name, "fdthree"))
- break;
+ for_each_ebus(ebus) {
+ for_each_ebusdev(edev, ebus) {
+ if (!strcmp(edev->prom_name, "fdthree"))
+ goto ebus_done;
+ }
}
+ ebus_done:
if (!edev)
return -1;
+ prom_getproperty(edev->prom_node, "status", state, sizeof(state));
+ if(!strncmp(state, "disabled", 8))
+ return -1;
+
if (check_region(edev->base_address[1], sizeof(struct linux_ebus_dma))) {
printk("sun_floppy_init: can't get region %016lx (%d)\n",
edev->base_address[1], (int)sizeof(struct linux_ebus_dma));
@@ -425,7 +438,7 @@ static unsigned long sun_floppy_init(void)
FLOPPY_IRQ = edev->irqs[0];
sun_fd_ebus_dma = (struct linux_ebus_dma *)edev->base_address[1];
- writel(EBUS_DCSR_BURST_SZ_16, (unsigned long)&sun_fd_ebus_dma->dcsr);
+ sun_pci_fd_reset_dma();
sun_fdops.fd_inb = sun_pci_fd_inb;
sun_fdops.fd_outb = sun_pci_fd_outb;
@@ -460,12 +473,11 @@ static unsigned long sun_floppy_init(void)
num_regs = prom_getproperty(fd_node, "reg", (char *) fd_regs, sizeof(fd_regs));
num_regs = (num_regs / sizeof(fd_regs[0]));
prom_apply_sbus_ranges(sdev->my_bus, fd_regs, num_regs, sdev);
- sun_fdc = (struct sun_flpy_controller *) sparc_alloc_io(fd_regs[0].phys_addr,
- 0x0,
- fd_regs[0].reg_size,
- "floppy",
- fd_regs[0].which_io,
- 0x0);
+ /* We cannot do sparc_alloc_io here: it does request_region, which is the generic
+ floppy driver trying to do once again */
+ sun_fdc = (struct sun_flpy_controller *) (PAGE_OFFSET + fd_regs[0].phys_addr +
+ (((unsigned long)fd_regs[0].which_io) << 32));
+
/* Last minute sanity check... */
if(sun_fdc->status1_82077 == 0xff) {
sun_fdc = NULL;
diff --git a/include/asm-sparc64/fpumacro.h b/include/asm-sparc64/fpumacro.h
index 91b9b81f8..9fd631670 100644
--- a/include/asm-sparc64/fpumacro.h
+++ b/include/asm-sparc64/fpumacro.h
@@ -8,14 +8,13 @@
#define _SPARC64_FPUMACRO_H
#include <asm/asi.h>
+#include <asm/visasm.h>
struct fpustate {
u32 regs[64];
- u64 fsr;
- u64 gsr;
};
-#define FPUSTATE (struct fpustate *)(((unsigned long)current) + (((PAGE_SIZE<<1)-((64*4)+(2*8))) & ~(64 - 1)))
+#define FPUSTATE (struct fpustate *)(((unsigned long)current) + AOFF_task_fpregs)
extern __inline__ unsigned long fprs_read(void)
{
diff --git a/include/asm-sparc64/ide.h b/include/asm-sparc64/ide.h
index acd593303..8ac583281 100644
--- a/include/asm-sparc64/ide.h
+++ b/include/asm-sparc64/ide.h
@@ -1,4 +1,4 @@
-/* $Id: ide.h,v 1.6 1998/03/15 13:29:13 ecd Exp $
+/* $Id: ide.h,v 1.9 1998/05/08 21:05:28 davem Exp $
* ide.h: Ultra/PCI specific IDE glue.
*
* Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu)
@@ -97,24 +97,43 @@ static __inline__ int ide_ack_intr(ide_ioreg_t status_port, ide_ioreg_t irq_port
/* From m68k code... */
+#ifdef insl
+#undef insl
+#endif
+#ifdef outsl
+#undef outsl
+#endif
+#ifdef insw
+#undef insw
+#endif
+#ifdef outsw
+#undef outsw
+#endif
+
#define insl(data_reg, buffer, wcount) insw(data_reg, buffer, (wcount)<<1)
#define outsl(data_reg, buffer, wcount) outsw(data_reg, buffer, (wcount)<<1)
#define insw(port, buf, nr) ide_insw((port), (buf), (nr))
#define outsw(port, buf, nr) ide_outsw((port), (buf), (nr))
+/* We need to use L1 cache bypassing to prevent dcache alias
+ * inconsistencies with user space. -DaveM
+ */
static __inline__ void ide_insw(unsigned long port,
void *dst,
unsigned long count)
{
volatile unsigned short *data_port;
- u16 *ps = dst;
+ u16 *ps = (u16 *)__pa(dst);
u32 *pi;
data_port = (volatile unsigned short *)port;
if(((u64)ps) & 0x2) {
- *ps++ = *data_port;
+ __asm__ __volatile__("stha %0, [%1] %2"
+ : /* no outputs */
+ : "r" (*data_port), "r" (ps++),
+ "i" (ASI_PHYS_USE_EC));
count--;
}
pi = (u32 *)ps;
@@ -123,12 +142,18 @@ static __inline__ void ide_insw(unsigned long port,
w = (*data_port) << 16;
w |= (*data_port);
- *pi++ = w;
+ __asm__ __volatile__("stwa %0, [%1] %2"
+ : /* no outputs */
+ : "r" (w), "r" (pi++),
+ "i" (ASI_PHYS_USE_EC));
count -= 2;
}
ps = (u16 *)pi;
if(count)
- *ps = *data_port;
+ __asm__ __volatile__("stha %0, [%1] %2"
+ : /* no outputs */
+ : "r" (*data_port), "r" (ps),
+ "i" (ASI_PHYS_USE_EC));
}
static __inline__ void ide_outsw(unsigned long port,
@@ -136,27 +161,37 @@ static __inline__ void ide_outsw(unsigned long port,
unsigned long count)
{
volatile unsigned short *data_port;
- const u16 *ps = src;
+ const u16 *ps = (const u16 *)__pa(src);
const u32 *pi;
data_port = (volatile unsigned short *)port;
if(((u64)src) & 0x2) {
- *data_port = *ps++;
+ u16 w;
+ __asm__ __volatile__("lduha [%1] %2, %0"
+ : "=r" (w)
+ : "r" (ps++), "i" (ASI_PHYS_USE_EC));
+ *data_port = w;
count--;
}
pi = (const u32 *)ps;
while(count >= 2) {
u32 w;
-
- w = *pi++;
+ __asm__ __volatile__("lduwa [%1] %2, %0"
+ : "=r" (w)
+ : "r" (pi++), "i" (ASI_PHYS_USE_EC));
*data_port = (w >> 16);
*data_port = w;
count -= 2;
}
ps = (const u16 *)pi;
- if(count)
- *data_port = *ps;
+ if(count) {
+ u16 w;
+ __asm__ __volatile__("lduha [%1] %2, %0"
+ : "=r" (w)
+ : "r" (ps++), "i" (ASI_PHYS_USE_EC));
+ *data_port = w;
+ }
}
#define T_CHAR (0x0000) /* char: don't touch */
diff --git a/include/asm-sparc64/io.h b/include/asm-sparc64/io.h
index 3b8502189..a6bdff9a3 100644
--- a/include/asm-sparc64/io.h
+++ b/include/asm-sparc64/io.h
@@ -1,4 +1,4 @@
-/* $Id: io.h,v 1.16 1998/03/24 05:54:40 ecd Exp $ */
+/* $Id: io.h,v 1.18 1998/07/12 12:07:43 ecd Exp $ */
#ifndef __SPARC64_IO_H
#define __SPARC64_IO_H
@@ -13,27 +13,48 @@
#define __SLOW_DOWN_IO do { } while (0)
#define SLOW_DOWN_IO do { } while (0)
+
+#define PCI_DVMA_HASHSZ 256
+
extern unsigned long pci_dvma_offset;
extern unsigned long pci_dvma_mask;
+extern unsigned long pci_dvma_v2p_hash[PCI_DVMA_HASHSZ];
+extern unsigned long pci_dvma_p2v_hash[PCI_DVMA_HASHSZ];
+
+#define pci_dvma_ahashfn(addr) (((addr) >> 24) & 0xff)
+
extern __inline__ unsigned long virt_to_phys(volatile void *addr)
{
unsigned long vaddr = (unsigned long)addr;
+ unsigned long off;
/* Handle kernel variable pointers... */
if (vaddr < PAGE_OFFSET)
vaddr += PAGE_OFFSET - (unsigned long)&empty_zero_page;
- return ((vaddr - PAGE_OFFSET) | pci_dvma_offset);
+
+ off = pci_dvma_v2p_hash[pci_dvma_ahashfn(vaddr - PAGE_OFFSET)];
+ return vaddr + off;
}
extern __inline__ void *phys_to_virt(unsigned long addr)
{
- return ((void *)((addr & pci_dvma_mask) + PAGE_OFFSET));
+ unsigned long paddr = addr & 0xffffffffUL;
+ unsigned long off;
+
+ off = pci_dvma_p2v_hash[pci_dvma_ahashfn(paddr)];
+ return (void *)(paddr + off);
}
#define virt_to_bus virt_to_phys
#define bus_to_virt phys_to_virt
+extern __inline__ unsigned long bus_dvma_to_mem(unsigned long vaddr)
+{
+ return vaddr & pci_dvma_mask;
+}
+
+
extern __inline__ unsigned int inb(unsigned long addr)
{
unsigned int ret;
diff --git a/include/asm-sparc64/irq.h b/include/asm-sparc64/irq.h
index b7e6f2d23..b9a900406 100644
--- a/include/asm-sparc64/irq.h
+++ b/include/asm-sparc64/irq.h
@@ -1,39 +1,39 @@
-/* $Id: irq.h,v 1.8 1998/03/15 17:23:51 ecd Exp $
+/* $Id: irq.h,v 1.10 1998/05/29 06:00:39 ecd Exp $
* irq.h: IRQ registers on the 64-bit Sparc.
*
* Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
+ * Copyright (C) 1998 Jakub Jelinek (jj@ultra.linux.cz)
*/
#ifndef _SPARC64_IRQ_H
#define _SPARC64_IRQ_H
#include <linux/linkage.h>
-
-/* Sparc64 extensions to the interrupt registry flags. Mostly this is
- * for passing along what bus type the device is on and also the true
- * format of the dev_id cookie, see below.
- */
-#define SA_BUSMASK 0x0f000
-#define SA_SBUS 0x01000
-#define SA_PCI 0x02000
-#define SA_FHC 0x03000
-#define SA_EBUS 0x04000
-#define SA_BUS(mask) ((mask) & SA_BUSMASK)
+#include <linux/kernel.h>
struct devid_cookie {
- /* Caller specifies these. */
- void *real_dev_id; /* What dev_id would usually contain. */
- unsigned int *imap; /* Anonymous IMAP register */
- unsigned int *iclr; /* Anonymous ICLR register */
- int pil; /* Anonymous PIL */
- void *bus_cookie; /* SYSIO regs, PSYCHO regs, etc. */
-
- /* Return values. */
- unsigned int ret_ino;
- unsigned int ret_pil;
+ int dummy;
+};
+
+/* You should not mess with this directly. That's the job of irq.c. */
+struct ino_bucket {
+ unsigned short ino;
+ short imap_off;
+ unsigned short pil;
+ unsigned short flags;
+ unsigned int *iclr;
};
-#define SA_DCOOKIE 0x10000
+#define __irq_ino(irq) ((struct ino_bucket *)(unsigned long)(irq))->ino
+#define __irq_pil(irq) ((struct ino_bucket *)(unsigned long)(irq))->pil
+
+static __inline__ char *__irq_itoa(unsigned int irq)
+{
+ static char buff[16];
+
+ sprintf(buff, "%d,%x", __irq_pil(irq), __irq_ino(irq));
+ return buff;
+}
#define NR_IRQS 15
@@ -41,6 +41,9 @@ extern void disable_irq(unsigned int);
extern void enable_irq(unsigned int);
extern void init_timers(void (*lvl10_irq)(int, void *, struct pt_regs *),
unsigned long *);
+extern unsigned int build_irq(int pil, int inofixup, unsigned int *iclr, unsigned int *imap);
+extern unsigned int sbus_build_irq(void *sbus, unsigned int ino);
+extern unsigned int psycho_build_irq(void *psycho, int imap_off, int ino, int need_dma_sync);
#ifdef __SMP__
extern void set_cpu_int(int, int);
@@ -76,9 +79,4 @@ extern __inline__ unsigned long get_softint(void)
return retval;
}
-static __inline__ int irq_cannonicalize(int irq)
-{
- return irq;
-}
-
#endif
diff --git a/include/asm-sparc64/linux_logo.h b/include/asm-sparc64/linux_logo.h
index 59bd61866..df564adcd 100644
--- a/include/asm-sparc64/linux_logo.h
+++ b/include/asm-sparc64/linux_logo.h
@@ -1,4 +1,4 @@
-/* $Id: linux_logo.h,v 1.3 1997/08/25 07:50:35 jj Exp $
+/* $Id: linux_logo.h,v 1.6 1998/07/30 16:30:48 jj Exp $
* include/asm-sparc64/linux_logo.h: This is a linux logo
* to be displayed on boot.
*
@@ -23,899 +23,904 @@
#define linux_logo_banner "Linux/UltraSPARC version " UTS_RELEASE
-#define LINUX_LOGO_COLORS 215
+#define LINUX_LOGO_COLORS 219
+
+#ifdef INCLUDE_LINUX_LOGO_DATA
unsigned char linux_logo_red[] __initdata = {
- 0x99, 0x95, 0x92, 0x8E, 0x8A, 0x86, 0x02, 0x00,
- 0xA5, 0xA9, 0xA2, 0x9E, 0xAD, 0x1B, 0x3B, 0x25,
- 0x71, 0x65, 0x2C, 0x82, 0x5B, 0x33, 0x13, 0xB0,
- 0x0C, 0xB1, 0xD4, 0xCE, 0x04, 0x06, 0x16, 0xB6,
- 0xCD, 0xB2, 0x42, 0x46, 0x4B, 0xA8, 0xF3, 0xCA,
- 0xC5, 0x1C, 0xDC, 0xA0, 0xD4, 0xE6, 0xED, 0xF3,
- 0xC2, 0x8E, 0xCC, 0xA5, 0x7E, 0x52, 0xF7, 0xE3,
- 0x56, 0x79, 0x68, 0x8D, 0xAF, 0xFC, 0x8E, 0x3E,
- 0x6B, 0x11, 0x37, 0x79, 0x5C, 0x3C, 0x3F, 0x3C,
- 0x48, 0x47, 0x3D, 0xB9, 0x62, 0xE1, 0x4D, 0x57,
- 0x84, 0x78, 0xA6, 0x58, 0x99, 0xCD, 0xB7, 0xE3,
- 0x6D, 0x5A, 0xAF, 0x79, 0x79, 0xF2, 0x42, 0x46,
- 0xDD, 0x89, 0xC3, 0xF2, 0xF0, 0xE0, 0xD1, 0x90,
- 0x76, 0x6B, 0x4A, 0xBE, 0xBD, 0xE3, 0xF6, 0xE9,
- 0xEC, 0xE8, 0xEC, 0xC0, 0x66, 0x63, 0xCB, 0xAB,
- 0x49, 0x5C, 0xAD, 0xD6, 0xEE, 0xF5, 0xF5, 0xE9,
- 0x6E, 0x00, 0x69, 0x6A, 0xA1, 0x7A, 0xB4, 0xDE,
- 0xF1, 0xF6, 0xDD, 0x00, 0x73, 0xDB, 0x4C, 0x53,
- 0x6A, 0xF5, 0xF5, 0xD6, 0xC3, 0x6A, 0x4B, 0x4B,
- 0x60, 0xF8, 0x9B, 0xD7, 0xD7, 0x71, 0xB3, 0xA4,
- 0xCA, 0xAB, 0xB4, 0xB2, 0x76, 0xBA, 0x8B, 0xA0,
- 0xA5, 0xEE, 0xE7, 0x67, 0x5F, 0x08, 0x94, 0xDB,
- 0xE5, 0x4F, 0x00, 0x34, 0xEE, 0xEC, 0xE2, 0x48,
- 0xF3, 0xEB, 0xF4, 0xF4, 0xEF, 0xD6, 0xB6, 0xE6,
- 0xE6, 0xED, 0xE7, 0xE6, 0x3D, 0xE7, 0xCD, 0x44,
- 0xEF, 0xEC, 0xF5, 0x66, 0xF3, 0xA9, 0x77, 0x58,
- 0x75, 0x6C, 0x53, 0x24, 0xAC, 0x0D, 0x3C
+ 0x03, 0x9E, 0xEC, 0xEE, 0xC4, 0xDA, 0x50, 0xC9,
+ 0xC5, 0xED, 0x65, 0xE3, 0xE3, 0xF4, 0x24, 0xA4,
+ 0xEC, 0xEE, 0x94, 0xE5, 0xE3, 0x6A, 0xA6, 0xC4,
+ 0xDC, 0xE5, 0x13, 0xF3, 0xD1, 0xFD, 0xE2, 0xDB,
+ 0xA0, 0xC2, 0xEC, 0xB8, 0xC2, 0xD5, 0xF2, 0xF4,
+ 0xC5, 0x3E, 0xF1, 0x1B, 0x55, 0xF5, 0xCF, 0xF7,
+ 0xA9, 0xB4, 0xEB, 0x6C, 0x0A, 0x74, 0xB4, 0xF7,
+ 0xF0, 0xF5, 0xD4, 0xF2, 0xCE, 0xF5, 0xC7, 0x26,
+ 0x5B, 0xF4, 0xBC, 0x7F, 0xAB, 0x82, 0x94, 0xE5,
+ 0xFC, 0x3A, 0xF2, 0xFD, 0xF0, 0x1C, 0xEF, 0xD4,
+ 0xF3, 0x0F, 0xED, 0xF7, 0xC9, 0x49, 0xC3, 0xBA,
+ 0xC8, 0xD4, 0xE7, 0xF3, 0xF5, 0xA7, 0xEC, 0xF9,
+ 0xFA, 0x0A, 0xF5, 0xCF, 0xFC, 0xEA, 0xE1, 0xA6,
+ 0xD6, 0xBC, 0xF8, 0xF7, 0xB4, 0xEB, 0xDC, 0x84,
+ 0xCE, 0xBA, 0x45, 0xD6, 0x86, 0x50, 0x96, 0xC6,
+ 0x8C, 0x6E, 0xE8, 0x60, 0x3C, 0x70, 0xF0, 0x93,
+ 0x7C, 0xDA, 0xDA, 0x9C, 0xBA, 0x6D, 0x4D, 0x2B,
+ 0x2F, 0x8B, 0xE0, 0xCC, 0xDA, 0x5C, 0x3D, 0xEE,
+ 0xDB, 0x46, 0xAC, 0x96, 0xCE, 0xD1, 0xE3, 0xF1,
+ 0x96, 0x7A, 0x80, 0xB2, 0xBA, 0xB6, 0xD2, 0x1E,
+ 0x7E, 0xAA, 0xC4, 0xF0, 0x96, 0x65, 0x9E, 0xC2,
+ 0xAA, 0xF5, 0xF2, 0xE9, 0xE6, 0xD1, 0x35, 0xC7,
+ 0xF6, 0xB6, 0xE8, 0x82, 0xBE, 0xC2, 0xF2, 0x9E,
+ 0xC7, 0xB4, 0x0F, 0xF7, 0xE8, 0xD8, 0xCC, 0x9C,
+ 0xD8, 0xD8, 0xA0, 0xEA, 0xC6, 0xA8, 0xE0, 0xEC,
+ 0xD1, 0xF7, 0xF4, 0xFC, 0x75, 0xBD, 0xDC, 0xDD,
+ 0xCC, 0xE1, 0xFA, 0xEE, 0xAA, 0xEC, 0xF2, 0xB8,
+ 0xE2, 0xCD, 0x87
};
unsigned char linux_logo_green[] __initdata = {
- 0x99, 0x95, 0x92, 0x8E, 0x8A, 0x86, 0x02, 0x00,
- 0xA5, 0xA9, 0xA2, 0x9E, 0xAD, 0x1B, 0x3B, 0x25,
- 0x71, 0x65, 0x2C, 0x82, 0x5B, 0x33, 0x13, 0xAD,
- 0x0C, 0xB1, 0x92, 0xAB, 0x03, 0x06, 0x16, 0xB6,
- 0xCD, 0x88, 0x42, 0x46, 0x4B, 0x94, 0xBB, 0xCA,
- 0xC5, 0x1C, 0xAB, 0xA0, 0xD4, 0xE6, 0xED, 0xF3,
- 0xC2, 0x73, 0xCA, 0x91, 0x7E, 0x52, 0xF7, 0xE3,
- 0x56, 0x5A, 0x49, 0x56, 0x6E, 0xFC, 0x6B, 0x3E,
- 0x6B, 0x0D, 0x37, 0x79, 0x51, 0x44, 0x3F, 0x43,
- 0x38, 0x3D, 0x48, 0xB9, 0x62, 0xA5, 0x47, 0x48,
- 0x49, 0x4A, 0x97, 0x48, 0x81, 0x95, 0x8E, 0xE3,
- 0x6D, 0x57, 0x51, 0x51, 0x47, 0xB2, 0x42, 0x46,
- 0xDD, 0x5B, 0x87, 0xBE, 0xC7, 0xC8, 0x56, 0x75,
- 0x5D, 0x4B, 0x4D, 0xBE, 0x85, 0xA6, 0xBC, 0xC7,
- 0xCA, 0xCD, 0xCC, 0xA4, 0x53, 0x4D, 0x9F, 0x55,
- 0x52, 0x5E, 0x75, 0x9C, 0xB6, 0xC3, 0xD7, 0xCC,
- 0x55, 0x00, 0x6A, 0x59, 0x7D, 0x55, 0x7C, 0xA3,
- 0xB7, 0xBF, 0xA5, 0x00, 0x67, 0xC6, 0x47, 0x54,
- 0x46, 0xB8, 0xBE, 0xB2, 0x87, 0x52, 0x4B, 0x43,
- 0x41, 0xF8, 0x69, 0x96, 0x9B, 0x66, 0xB0, 0x6C,
- 0x8E, 0x81, 0xB4, 0x76, 0x76, 0xB9, 0x65, 0x77,
- 0x6D, 0xED, 0xE7, 0x67, 0x5F, 0x06, 0x54, 0x6C,
- 0xCB, 0x4F, 0x00, 0x2F, 0xC2, 0xB5, 0xB6, 0x30,
- 0xC3, 0xAE, 0xC4, 0xCA, 0xC6, 0xB4, 0x7B, 0xAD,
- 0xAD, 0xB6, 0xB6, 0xAD, 0x29, 0xAB, 0x93, 0x2E,
- 0xBC, 0xBC, 0xC9, 0x53, 0xBF, 0x77, 0x54, 0x3B,
- 0x4B, 0x3F, 0x39, 0x19, 0x76, 0x08, 0x2C
+ 0x03, 0x88, 0xC4, 0xE2, 0x85, 0xC2, 0x44, 0xA3,
+ 0xA9, 0xD3, 0x65, 0xA6, 0xC5, 0xF3, 0x24, 0xA4,
+ 0xB4, 0xD6, 0x63, 0xD5, 0xB7, 0x44, 0x86, 0x94,
+ 0xC2, 0xE4, 0x14, 0xB6, 0xD2, 0xFB, 0xD4, 0xB2,
+ 0x73, 0x96, 0xDB, 0x92, 0xC2, 0x95, 0xC2, 0xDA,
+ 0xA4, 0x36, 0xD4, 0x0E, 0x55, 0xF4, 0xC4, 0xE9,
+ 0x75, 0xB4, 0xBC, 0x52, 0x0A, 0x74, 0x84, 0xEB,
+ 0xDC, 0xDA, 0xA2, 0xD6, 0x9B, 0xBD, 0xB7, 0x12,
+ 0x44, 0xCA, 0x8C, 0x65, 0x7B, 0x54, 0x94, 0xAB,
+ 0xF4, 0x25, 0xC4, 0xFD, 0xE4, 0x1C, 0xDD, 0xAB,
+ 0xBD, 0x06, 0xCB, 0xD6, 0xCA, 0x33, 0x8C, 0xA2,
+ 0x92, 0x9C, 0xBC, 0xDB, 0xCD, 0x6E, 0xEC, 0xEE,
+ 0xBC, 0x03, 0xDA, 0xCE, 0xF4, 0xB6, 0xDB, 0x92,
+ 0xAD, 0xBC, 0xDE, 0xD5, 0x7B, 0xAE, 0x9D, 0x84,
+ 0xB6, 0x96, 0x44, 0xBA, 0x6E, 0x3C, 0x7A, 0xB2,
+ 0x8C, 0x4C, 0xCE, 0x4C, 0x3C, 0x5A, 0xCA, 0x6D,
+ 0x7C, 0xCE, 0xDA, 0x9C, 0xAA, 0x6D, 0x4D, 0x2B,
+ 0x1B, 0x5E, 0xCB, 0xAC, 0xBE, 0x5C, 0x2E, 0xDC,
+ 0xBD, 0x3E, 0xAC, 0x82, 0xB6, 0xBE, 0xD3, 0xBD,
+ 0x72, 0x62, 0x6C, 0x82, 0x92, 0x9E, 0xB0, 0x13,
+ 0x4A, 0x8E, 0xBE, 0xCE, 0x86, 0x45, 0x6B, 0xAA,
+ 0x9A, 0xC5, 0xC6, 0xDA, 0xC5, 0xC4, 0x34, 0x9B,
+ 0xCC, 0xAC, 0xC4, 0x76, 0x9A, 0x9E, 0xEE, 0x62,
+ 0xC6, 0x76, 0x0D, 0xE4, 0xDA, 0xD5, 0xA5, 0x92,
+ 0xCD, 0xB2, 0x7C, 0xCC, 0xBE, 0x7E, 0xDC, 0xD6,
+ 0xB9, 0xE3, 0xD4, 0xF6, 0x55, 0x82, 0xA4, 0xAA,
+ 0x8D, 0xBB, 0xCE, 0xD5, 0x8A, 0xDB, 0xD4, 0x8B,
+ 0xCA, 0x93, 0x63
};
unsigned char linux_logo_blue[] __initdata = {
- 0x99, 0x95, 0x92, 0x8E, 0x8A, 0x86, 0xD6, 0x00,
- 0xA5, 0xA9, 0xA2, 0x9E, 0xAD, 0x1B, 0x39, 0x25,
- 0x71, 0x65, 0x2C, 0x82, 0x5B, 0x33, 0x13, 0xA7,
- 0x0C, 0xB1, 0x58, 0x8A, 0x03, 0x07, 0x16, 0xB6,
- 0xCD, 0x5A, 0x42, 0x46, 0x4F, 0x6F, 0x77, 0xCA,
- 0xC5, 0x1C, 0x6F, 0xA5, 0xD4, 0xE6, 0xF5, 0xF3,
- 0xC2, 0x4D, 0xD1, 0x64, 0x7E, 0x52, 0xF7, 0xE3,
- 0x56, 0x49, 0x3C, 0x47, 0x45, 0xFE, 0x3B, 0x41,
- 0x6B, 0x09, 0x37, 0x79, 0x39, 0x39, 0x3F, 0x42,
- 0x3A, 0x42, 0x5F, 0xB9, 0x62, 0x4C, 0x39, 0x44,
- 0x3B, 0x3A, 0xA0, 0x3D, 0x08, 0x08, 0x09, 0xDE,
- 0x6D, 0x48, 0x3B, 0x3F, 0x42, 0xF3, 0x36, 0x3C,
- 0xDD, 0x06, 0x16, 0x08, 0x13, 0x0A, 0x4B, 0x71,
- 0x5D, 0x44, 0x47, 0xBE, 0x08, 0x0C, 0x0D, 0x0C,
- 0x19, 0x29, 0x36, 0x06, 0x43, 0x44, 0xBA, 0x45,
- 0x50, 0x58, 0x07, 0x07, 0x0D, 0x0E, 0x10, 0x50,
- 0x06, 0x42, 0x40, 0x44, 0x79, 0x06, 0x06, 0x0C,
- 0x08, 0x08, 0x07, 0x36, 0x4C, 0xE5, 0x42, 0x55,
- 0x03, 0x0F, 0x12, 0x06, 0x07, 0x3C, 0x4B, 0x3D,
- 0x01, 0xF8, 0x08, 0x0E, 0x0A, 0x69, 0xAC, 0x0C,
- 0x0A, 0x27, 0xBB, 0x36, 0x76, 0xC0, 0x04, 0x08,
- 0x08, 0xED, 0xEE, 0x68, 0x5F, 0xB2, 0x3B, 0x52,
- 0xAC, 0x4F, 0x6F, 0x2D, 0x16, 0x08, 0x59, 0x04,
- 0x13, 0x0E, 0x14, 0x17, 0x16, 0x2E, 0x08, 0x0D,
- 0x11, 0x14, 0x0D, 0x06, 0x04, 0x08, 0x25, 0x8E,
- 0x0E, 0x14, 0x25, 0x9B, 0x1C, 0x16, 0x78, 0x06,
- 0x04, 0x03, 0x79, 0x8C, 0x0B, 0xC8, 0x48
+ 0x04, 0x28, 0x10, 0x8C, 0x0B, 0x84, 0x14, 0x1A,
+ 0x77, 0x1F, 0x64, 0x0E, 0x85, 0xD2, 0x24, 0xA4,
+ 0x0F, 0x54, 0x0C, 0x7C, 0x3F, 0x04, 0x20, 0x0D,
+ 0x54, 0xDF, 0x14, 0x0D, 0xD1, 0xE9, 0xB0, 0x11,
+ 0x0A, 0x40, 0x57, 0x14, 0xC3, 0x0C, 0x04, 0x12,
+ 0x50, 0x0C, 0x7D, 0x05, 0x55, 0xF2, 0xBA, 0xC7,
+ 0x09, 0xB4, 0x0E, 0x24, 0x0B, 0x74, 0x0C, 0xB6,
+ 0x80, 0x48, 0x10, 0x34, 0x0F, 0x0C, 0xA0, 0x04,
+ 0x19, 0x10, 0x0E, 0x14, 0x0E, 0x05, 0x94, 0x0E,
+ 0xCA, 0x0B, 0x46, 0xFB, 0xB4, 0x1C, 0x9B, 0x1A,
+ 0x21, 0x09, 0x14, 0x4D, 0xCB, 0x08, 0x11, 0x7C,
+ 0x20, 0x10, 0x24, 0x66, 0x79, 0x07, 0xEA, 0xC9,
+ 0x0C, 0x08, 0x38, 0xC4, 0xD8, 0x24, 0xBE, 0x6C,
+ 0x51, 0xBB, 0x8C, 0x36, 0x0A, 0x0F, 0x0C, 0x84,
+ 0x3C, 0x54, 0x44, 0x7C, 0x28, 0x0E, 0x28, 0x7F,
+ 0x8C, 0x0F, 0x54, 0x24, 0x3C, 0x18, 0x54, 0x17,
+ 0x7C, 0x9C, 0xDA, 0x9C, 0x7C, 0x6C, 0x4D, 0x2C,
+ 0x09, 0x0E, 0x8A, 0x50, 0x4C, 0x5B, 0x14, 0xAC,
+ 0x19, 0x3C, 0xAC, 0x5C, 0x64, 0x97, 0x94, 0x37,
+ 0x29, 0x3C, 0x44, 0x3C, 0x2C, 0x7C, 0x70, 0x07,
+ 0x04, 0x29, 0xB2, 0x64, 0x74, 0x07, 0x07, 0x2C,
+ 0x74, 0x2E, 0x6C, 0xA4, 0x29, 0x9E, 0x34, 0x27,
+ 0x2F, 0x98, 0x48, 0x5C, 0x0C, 0x5C, 0xE8, 0x04,
+ 0xC2, 0x0C, 0x0A, 0xB2, 0x74, 0xCB, 0x46, 0x78,
+ 0xB4, 0x5C, 0x18, 0x80, 0x8C, 0x24, 0xD9, 0xAC,
+ 0x87, 0x99, 0x1D, 0xE8, 0x14, 0x0D, 0x10, 0x17,
+ 0x0A, 0x67, 0x3C, 0x68, 0x3C, 0x69, 0x90, 0x22,
+ 0x6C, 0x0D, 0x17
};
unsigned char linux_logo[] __initdata = {
+ 0xD8, 0xA3, 0x98, 0x98, 0xA3, 0xB2, 0x2F, 0x2F,
+ 0xA3, 0x66, 0x98, 0x98, 0x98, 0xA3, 0x2F, 0xA3,
+ 0x98, 0x55, 0xA0, 0xA3, 0xB2, 0x51, 0x51, 0x2F,
+ 0x98, 0x55, 0x8F, 0x2F, 0x89, 0x44, 0x89, 0x51,
+ 0xB2, 0x2F, 0x66, 0xA3, 0x2F, 0x2F, 0x66, 0x66,
+ 0xA3, 0xB2, 0xB2, 0xB2, 0x89, 0xD8, 0x44, 0x44,
+ 0xD8, 0x83, 0xD8, 0xA3, 0x98, 0x98, 0xA3, 0xB2,
+ 0x2F, 0x2F, 0xA3, 0x66, 0x98, 0x98, 0x98, 0xA3,
+ 0x2F, 0xA3, 0x98, 0x55, 0xA0, 0xA3, 0xB2, 0x51,
+ 0x51, 0x2F, 0x98, 0x55, 0x8F, 0x2F, 0x89, 0x44,
+ 0xA3, 0x55, 0x55, 0x98, 0x2F, 0x2F, 0x2F, 0xA3,
+ 0x66, 0x66, 0x98, 0x98, 0x66, 0x66, 0x66, 0x98,
+ 0x55, 0xA5, 0x8F, 0xA3, 0x51, 0x51, 0xB2, 0x2F,
+ 0x66, 0x66, 0xA3, 0x51, 0x89, 0x51, 0xB2, 0x2F,
+ 0x2F, 0xA3, 0x66, 0xA3, 0xA3, 0xA3, 0x2F, 0x2F,
+ 0xB2, 0xB2, 0x2F, 0x2F, 0xB2, 0x51, 0x51, 0x51,
+ 0x51, 0x51, 0xA3, 0x55, 0x55, 0x98, 0x2F, 0x2F,
+ 0x2F, 0xA3, 0x66, 0x66, 0x98, 0x98, 0x66, 0x66,
+ 0x66, 0x98, 0x55, 0xA5, 0x8F, 0xA3, 0x51, 0x51,
+ 0xB2, 0x2F, 0x66, 0x66, 0xA3, 0x51, 0x89, 0x51,
+ 0x98, 0xA5, 0x55, 0x8F, 0x2F, 0xB2, 0x2F, 0xA3,
+ 0x66, 0x66, 0x98, 0x8F, 0x66, 0x66, 0x66, 0x98,
+ 0xA0, 0x8F, 0xA3, 0xB2, 0x51, 0x51, 0xB2, 0x2F,
+ 0xA3, 0xA3, 0x2F, 0xB2, 0x51, 0xB2, 0x2F, 0x2F,
+ 0xA3, 0x66, 0x98, 0xA3, 0x51, 0xB2, 0x2F, 0xA3,
+ 0xB2, 0x51, 0x51, 0xB2, 0xB2, 0x51, 0xB2, 0xB2,
+ 0xB2, 0x2F, 0x98, 0xA5, 0x55, 0x8F, 0x2F, 0xB2,
+ 0x2F, 0xA3, 0x66, 0x66, 0x98, 0x8F, 0x66, 0x66,
+ 0x66, 0x98, 0xA0, 0x8F, 0xA3, 0xB2, 0x51, 0x51,
+ 0xB2, 0x2F, 0xA3, 0xA3, 0x2F, 0x51, 0x51, 0xB2,
+ 0xA0, 0xA5, 0x55, 0x66, 0xB2, 0x51, 0xB2, 0xA3,
+ 0x66, 0x66, 0x98, 0x66, 0x66, 0x66, 0x98, 0x98,
+ 0x66, 0xA3, 0x2F, 0xB2, 0x51, 0x51, 0xB2, 0xA3,
+ 0xA3, 0xA3, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0xA3,
+ 0x66, 0x98, 0xB2, 0x4C, 0x54, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0xCE, 0x2F, 0xB2, 0x2F, 0x2F,
+ 0xA3, 0x98, 0xA0, 0xA5, 0x55, 0x66, 0xB2, 0x51,
+ 0xB2, 0xA3, 0x66, 0x66, 0x98, 0x66, 0x66, 0x66,
+ 0x98, 0x98, 0x66, 0xA3, 0x2F, 0xB2, 0x51, 0x51,
+ 0xB2, 0xA3, 0xA3, 0xA3, 0x2F, 0x2F, 0x2F, 0x2F,
+ 0xA0, 0xA0, 0x8F, 0xA3, 0xB2, 0x51, 0xB2, 0x2F,
+ 0x66, 0x66, 0x98, 0x66, 0x66, 0x66, 0x66, 0x66,
+ 0xA3, 0x2F, 0x51, 0x51, 0x51, 0xB2, 0x2F, 0xA3,
+ 0x66, 0x66, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3,
+ 0x2F, 0xA0, 0xDA, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x9C, 0xB2, 0xA3,
+ 0x66, 0x98, 0xA0, 0xA0, 0x8F, 0xA3, 0xB2, 0x51,
+ 0xB2, 0x2F, 0x66, 0x66, 0x98, 0x66, 0x66, 0x66,
+ 0x66, 0x66, 0xA3, 0x2F, 0x51, 0x51, 0x51, 0xB2,
+ 0x2F, 0xA3, 0x66, 0x66, 0x66, 0xA3, 0xA3, 0xA3,
+ 0x8F, 0x8F, 0x66, 0x2F, 0x51, 0x51, 0xB2, 0xA3,
+ 0x66, 0x98, 0x98, 0x66, 0x66, 0x66, 0x2F, 0x2F,
+ 0xB2, 0x51, 0xB2, 0xB2, 0x2F, 0x2F, 0xA3, 0x66,
+ 0x66, 0x66, 0xA3, 0xA3, 0x2F, 0xA3, 0xA3, 0xB2,
+ 0x9C, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0xDA, 0x3A, 0x20, 0x54, 0x55,
+ 0xA3, 0x98, 0x8F, 0x8F, 0x66, 0x2F, 0x51, 0x51,
+ 0xB2, 0xA3, 0x66, 0x98, 0x98, 0x66, 0x66, 0x66,
+ 0x2F, 0x2F, 0xB2, 0x51, 0xB2, 0xB2, 0x2F, 0x2F,
+ 0xA3, 0x66, 0x66, 0x66, 0x2F, 0xA3, 0x2F, 0x2F,
+ 0x66, 0x66, 0xA3, 0x2F, 0xB2, 0xB2, 0x2F, 0x66,
+ 0x8F, 0x8F, 0x8F, 0x66, 0xA3, 0xA3, 0xB2, 0xB2,
+ 0xB2, 0xB2, 0xB2, 0xB2, 0x2F, 0xA3, 0xA3, 0xA3,
+ 0xA3, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0xAD,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0xA7, 0x4C, 0xCE, 0xDA, 0x20,
+ 0xA6, 0x2F, 0x66, 0x66, 0xA3, 0x2F, 0xB2, 0xB2,
+ 0x2F, 0x66, 0x8F, 0x8F, 0x8F, 0x66, 0xA3, 0xA3,
+ 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0x2F, 0xA3,
+ 0xA3, 0xA3, 0xA3, 0xA3, 0x2F, 0x2F, 0x2F, 0x2F,
+ 0xA3, 0x98, 0x66, 0x2F, 0xB2, 0xB2, 0x2F, 0x98,
+ 0x8F, 0x8F, 0x98, 0x66, 0xA3, 0xB2, 0xB2, 0xB2,
+ 0x2F, 0x2F, 0x2F, 0x2F, 0xA3, 0x2F, 0xA3, 0xA3,
+ 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0x51, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0xCE, 0x55, 0xAD, 0xA7, 0x54,
+ 0x20, 0x8F, 0xA3, 0x98, 0x66, 0x2F, 0xB2, 0xB2,
+ 0x2F, 0x98, 0x8F, 0x8F, 0x98, 0x66, 0xA3, 0xB2,
+ 0xB2, 0xB2, 0x2F, 0x2F, 0x2F, 0x2F, 0xA3, 0x2F,
+ 0xA3, 0xA3, 0xA3, 0x2F, 0xA3, 0xA3, 0xA3, 0xA3,
+ 0xA3, 0x8F, 0x66, 0x2F, 0xB2, 0x51, 0x2F, 0x98,
+ 0xA0, 0x8F, 0x66, 0xA3, 0x2F, 0x51, 0x51, 0xB2,
+ 0xA3, 0xA3, 0xA3, 0x2F, 0xA3, 0xA3, 0x66, 0x66,
+ 0x98, 0x98, 0x98, 0x66, 0x98, 0x66, 0x55, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x21, 0x21, 0x22, 0x23, 0x24, 0x24,
- 0x25, 0x24, 0x24, 0x25, 0x25, 0x25, 0x25, 0x25,
- 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x23, 0x23,
- 0x23, 0x22, 0x22, 0x22, 0x22, 0x21, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x26, 0x27, 0x27, 0x27, 0x27,
- 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x26, 0x28,
- 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29, 0x29,
- 0x29, 0x28, 0x28, 0x28, 0x2A, 0x2A, 0x2B, 0x2B,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x2B, 0x2B, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
- 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
- 0x28, 0x28, 0x28, 0x29, 0x29, 0x29, 0x29, 0x29,
- 0x29, 0x29, 0x29, 0x2C, 0x29, 0x29, 0x29, 0x28,
- 0x28, 0x2A, 0x2B, 0x2B, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x2B, 0x2B, 0x2A, 0x2A,
- 0x2A, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
- 0x27, 0x27, 0x27, 0x27, 0x2D, 0x2E, 0x2F, 0x27,
- 0x27, 0x26, 0x2B, 0x2A, 0x2A, 0x2A, 0x2A, 0x28,
- 0x28, 0x29, 0x29, 0x29, 0x29, 0x2C, 0x2C, 0x29,
- 0x29, 0x29, 0x28, 0x28, 0x2A, 0x2B, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0xCE, 0x4C, 0x9C, 0x2E, 0xDA,
+ 0x20, 0xDA, 0x51, 0x8F, 0x66, 0x2F, 0xB2, 0x51,
+ 0x2F, 0x98, 0xA0, 0x8F, 0x66, 0xA3, 0x2F, 0x51,
+ 0x51, 0xB2, 0xA3, 0xA3, 0xA3, 0x2F, 0xA3, 0xA3,
+ 0x66, 0x66, 0x98, 0x98, 0x98, 0x98, 0x98, 0x66,
+ 0x51, 0x66, 0x2F, 0xB2, 0x51, 0xB2, 0xA3, 0xA0,
+ 0xA0, 0x66, 0xA3, 0xB2, 0xB2, 0xB2, 0xB2, 0xA3,
+ 0x66, 0x66, 0x66, 0xA3, 0xA3, 0x66, 0x98, 0x98,
+ 0x98, 0x98, 0x98, 0x66, 0x66, 0xB2, 0x6D, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x6D, 0x3A, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0xA5, 0x66, 0x2F, 0xB2, 0x51, 0xB2,
+ 0xA3, 0xA0, 0xA0, 0x66, 0xA3, 0xB2, 0xB2, 0xB2,
+ 0xB2, 0xA3, 0x66, 0x66, 0x66, 0xA3, 0xA3, 0x66,
+ 0x98, 0x98, 0x8F, 0x98, 0x66, 0x66, 0x66, 0x66,
+ 0x51, 0x2F, 0xB2, 0x51, 0x51, 0x2F, 0x66, 0xA0,
+ 0x8F, 0xA3, 0x2F, 0xB2, 0xB2, 0x2F, 0x2F, 0x66,
+ 0x98, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66,
+ 0x66, 0x2F, 0xA3, 0x2F, 0x2F, 0x51, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0xDA, 0x51, 0xB2, 0x51, 0x51, 0x2F,
+ 0x66, 0xA0, 0x8F, 0xA3, 0x2F, 0xB2, 0xB2, 0x2F,
+ 0x2F, 0x66, 0x98, 0x66, 0x66, 0x66, 0x66, 0x66,
+ 0x66, 0x66, 0x66, 0xA3, 0x2F, 0x2F, 0x2F, 0x2F,
+ 0x51, 0x2F, 0xB2, 0x51, 0x2F, 0xA3, 0x8F, 0x8F,
+ 0x98, 0xA3, 0xB2, 0xB2, 0x2F, 0xA3, 0x98, 0x66,
+ 0x98, 0x98, 0x66, 0x66, 0x66, 0x66, 0xA3, 0x2F,
+ 0xB2, 0xB2, 0x51, 0xB2, 0xB2, 0x66, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x2B, 0x2B, 0x2B, 0x2A, 0x2A, 0x2A,
- 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
- 0x27, 0x27, 0x27, 0x27, 0x2F, 0x30, 0x31, 0x32,
- 0x27, 0x27, 0x22, 0x22, 0x22, 0x22, 0x21, 0x20,
- 0x20, 0x20, 0x2B, 0x2A, 0x28, 0x29, 0x29, 0x29,
- 0x2C, 0x2C, 0x2C, 0x29, 0x29, 0x28, 0x2A, 0x2B,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0xA3, 0xB2, 0x51, 0x2F, 0xA3,
+ 0x8F, 0x8F, 0x98, 0xA3, 0xB2, 0xB2, 0x2F, 0xA3,
+ 0x98, 0x66, 0x98, 0x98, 0x66, 0x66, 0x66, 0x66,
+ 0xA3, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2,
+ 0xB2, 0x2F, 0xA3, 0x2F, 0x66, 0x98, 0x8F, 0x98,
+ 0xA3, 0x2F, 0x2F, 0xA3, 0x98, 0x98, 0x98, 0x98,
+ 0x66, 0x98, 0x66, 0x98, 0x66, 0xA3, 0x2F, 0xB2,
+ 0x51, 0x51, 0x51, 0xB2, 0xB2, 0x8F, 0x20, 0x20,
+ 0x20, 0x54, 0x6D, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x54, 0x6D, 0x6D, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x4C, 0xA3, 0x2F, 0x66, 0x98,
+ 0x8F, 0x98, 0xA3, 0x2F, 0x2F, 0xA3, 0x98, 0x98,
+ 0x98, 0x98, 0x66, 0x98, 0x66, 0x98, 0x66, 0xA3,
+ 0x2F, 0xB2, 0x51, 0x51, 0x51, 0xB2, 0x2F, 0x2F,
+ 0x2F, 0xA3, 0xA3, 0x66, 0x98, 0x98, 0x8F, 0x98,
+ 0x2F, 0x2F, 0x2F, 0x66, 0x8F, 0x8F, 0x98, 0xA3,
+ 0x66, 0x66, 0x8F, 0x98, 0x98, 0x66, 0x2F, 0xB2,
+ 0x51, 0xB2, 0x2F, 0xA3, 0xA3, 0xA0, 0x20, 0x20,
+ 0xDA, 0x2E, 0x3A, 0xA7, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0xCE, 0x2A, 0x2A, 0x2E, 0xA7, 0xDA, 0x20,
+ 0x20, 0x20, 0x20, 0x9C, 0xA3, 0x66, 0x98, 0x98,
+ 0x8F, 0x98, 0x2F, 0x2F, 0x2F, 0x66, 0x8F, 0x8F,
+ 0x98, 0xA3, 0x66, 0x66, 0x8F, 0x98, 0x98, 0x66,
+ 0x2F, 0xB2, 0x51, 0xB2, 0x2F, 0x2F, 0xA3, 0xA3,
+ 0xB2, 0xA3, 0x66, 0x98, 0x8F, 0x8F, 0x66, 0xA3,
+ 0x2F, 0x2F, 0x66, 0x98, 0x98, 0x66, 0x2F, 0x2F,
+ 0xA3, 0x98, 0x8F, 0x98, 0x66, 0x2F, 0xB2, 0xB2,
+ 0xB2, 0xA3, 0x66, 0x66, 0x66, 0x98, 0x20, 0x3A,
+ 0x98, 0x89, 0x8F, 0x6D, 0x20, 0x20, 0x20, 0x20,
+ 0x4C, 0x66, 0x51, 0x44, 0x51, 0x2E, 0x54, 0x20,
+ 0x20, 0x20, 0x20, 0xA7, 0x66, 0x98, 0x8F, 0x8F,
+ 0x66, 0xA3, 0x2F, 0x2F, 0x66, 0x98, 0x98, 0x66,
+ 0x2F, 0x2F, 0xA3, 0x98, 0x8F, 0x98, 0x66, 0x2F,
+ 0xB2, 0xB2, 0xB2, 0xA3, 0x66, 0x66, 0x66, 0xA3,
+ 0x2F, 0x66, 0x98, 0x8F, 0x8F, 0x98, 0x66, 0x2F,
+ 0x2F, 0xA3, 0x66, 0x98, 0x98, 0xA3, 0x2F, 0xB2,
+ 0xA3, 0x8F, 0x98, 0xA3, 0xB2, 0x51, 0x89, 0x89,
+ 0xB2, 0xA3, 0x66, 0x98, 0x66, 0x98, 0x20, 0xA6,
+ 0x44, 0x39, 0xE6, 0x98, 0x20, 0x20, 0x20, 0x9C,
+ 0x74, 0xD6, 0x7E, 0xD6, 0x39, 0x8F, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x2E, 0x98, 0x8F, 0x8F, 0x98,
+ 0x66, 0x2F, 0x2F, 0xA3, 0x66, 0x98, 0x98, 0xA3,
+ 0x2F, 0xB2, 0x66, 0x98, 0x8F, 0xA3, 0xB2, 0x51,
+ 0x89, 0x89, 0xB2, 0xA3, 0x66, 0x98, 0x66, 0x66,
+ 0x2F, 0x66, 0x8F, 0xA0, 0x8F, 0x98, 0xA3, 0xB2,
+ 0x2F, 0x66, 0x66, 0x66, 0xA3, 0x2F, 0x2F, 0x2F,
+ 0x66, 0x98, 0xA3, 0xB2, 0x89, 0x44, 0x89, 0x51,
+ 0x2F, 0x66, 0x98, 0x98, 0xA3, 0x66, 0x20, 0x2F,
+ 0x2F, 0xAD, 0x89, 0xD6, 0x3A, 0x20, 0x20, 0x55,
+ 0x6B, 0x51, 0x6D, 0x4C, 0xD8, 0xD6, 0x2E, 0x20,
+ 0x20, 0x20, 0x20, 0x54, 0x8F, 0xA0, 0x8F, 0x98,
+ 0xA3, 0xB2, 0x2F, 0x66, 0x66, 0x66, 0xA3, 0x2F,
+ 0xB2, 0x2F, 0x66, 0x66, 0xA3, 0xB2, 0x89, 0x44,
+ 0x89, 0x51, 0x2F, 0x66, 0x98, 0x98, 0xA3, 0xA3,
+ 0xA3, 0x66, 0x8F, 0xA0, 0x8F, 0x66, 0x2F, 0xB2,
+ 0xA3, 0x66, 0x98, 0x66, 0xA3, 0x2F, 0x2F, 0xA3,
+ 0xA3, 0x2F, 0xB2, 0x89, 0xD8, 0xD8, 0x51, 0x66,
+ 0x8F, 0xA0, 0xA0, 0x8F, 0x98, 0xA3, 0x20, 0x44,
+ 0xA7, 0xCE, 0xA6, 0x4D, 0xCE, 0x6D, 0xA7, 0xA0,
+ 0x6B, 0xA7, 0x20, 0x92, 0xAD, 0x6B, 0x4C, 0x20,
+ 0x20, 0x20, 0x20, 0x54, 0x98, 0xA0, 0x8F, 0x66,
+ 0x2F, 0xB2, 0xA3, 0x66, 0x98, 0x66, 0xA3, 0x2F,
+ 0x2F, 0xA3, 0xA3, 0xA3, 0xB2, 0x89, 0xD8, 0xD8,
+ 0x51, 0x66, 0x8F, 0xA0, 0xA0, 0x8F, 0x98, 0x66,
+ 0x66, 0x66, 0x8F, 0x55, 0x8F, 0xA3, 0xB2, 0xB2,
+ 0xA3, 0x66, 0x66, 0xA3, 0x2F, 0xA3, 0xA3, 0xA3,
+ 0xA3, 0xB2, 0x89, 0x44, 0x44, 0x51, 0x66, 0xA0,
+ 0x55, 0xA5, 0x55, 0x8F, 0x66, 0xA3, 0x20, 0x44,
+ 0x6D, 0x54, 0xA7, 0x74, 0x2E, 0x4B, 0xBF, 0x9C,
+ 0x7E, 0xDA, 0x20, 0x54, 0x2E, 0x6B, 0x2A, 0x20,
+ 0x20, 0x20, 0x20, 0x3A, 0x8F, 0x55, 0x8F, 0xA3,
+ 0xB2, 0xB2, 0xA3, 0x66, 0x66, 0xA3, 0xA3, 0x2F,
+ 0xA3, 0xA3, 0xA3, 0xB2, 0x89, 0x44, 0x44, 0x51,
+ 0x66, 0xA0, 0xA5, 0xA5, 0x55, 0x8F, 0x66, 0x66,
+ 0xA0, 0xA0, 0xA0, 0xA0, 0x8F, 0xA3, 0x2F, 0xB2,
+ 0x66, 0x98, 0xA3, 0x2F, 0x2F, 0xB2, 0x2F, 0x2F,
+ 0xB2, 0x51, 0x89, 0x89, 0xB2, 0x98, 0xA0, 0x2A,
+ 0xA5, 0x55, 0x98, 0x66, 0xA3, 0xB2, 0x20, 0x2F,
+ 0x4C, 0x20, 0x4B, 0xBB, 0xCF, 0x6F, 0x27, 0x36,
+ 0x93, 0xCE, 0x20, 0x20, 0xA6, 0x3D, 0x4C, 0x20,
+ 0x20, 0x20, 0x20, 0xDA, 0xA0, 0xA0, 0x8F, 0xA3,
+ 0x2F, 0xB2, 0x66, 0x98, 0xA3, 0x2F, 0xB2, 0x2F,
+ 0x2F, 0x2F, 0xB2, 0x51, 0x89, 0x89, 0xB2, 0x98,
+ 0xA0, 0x2A, 0xA5, 0xA0, 0x8F, 0x66, 0xA3, 0xA3,
+ 0xA0, 0x8F, 0x8F, 0xA0, 0x8F, 0xA3, 0xB2, 0x2F,
+ 0x66, 0x98, 0x2F, 0xB2, 0xB2, 0xB2, 0xB2, 0x2F,
+ 0xB2, 0x89, 0x44, 0x51, 0x66, 0x55, 0xAD, 0x2A,
+ 0x55, 0x8F, 0x66, 0xA3, 0x2F, 0xB2, 0x20, 0x2A,
+ 0xE6, 0x95, 0xE5, 0x5A, 0x52, 0x52, 0x3F, 0x27,
+ 0x22, 0xC7, 0x9D, 0x60, 0xA2, 0xA2, 0x3A, 0x20,
+ 0x20, 0x20, 0x20, 0x54, 0x66, 0xA0, 0x8F, 0xA3,
+ 0xB2, 0x2F, 0x66, 0x98, 0x2F, 0xB2, 0xB2, 0xB2,
+ 0xB2, 0x2F, 0xB2, 0x89, 0x44, 0x51, 0x66, 0x55,
+ 0x2A, 0x2A, 0xA5, 0x8F, 0x66, 0xA3, 0x2F, 0x2F,
+ 0xA3, 0xA3, 0x66, 0x98, 0x98, 0x2F, 0xB2, 0xB2,
+ 0xA3, 0xA3, 0x2F, 0x51, 0x51, 0x51, 0x2F, 0x2F,
+ 0x51, 0x89, 0x89, 0x2F, 0x8F, 0x2A, 0x2A, 0xA5,
+ 0x8F, 0x66, 0xA3, 0xB2, 0x2F, 0x51, 0x20, 0x6D,
+ 0x77, 0xF7, 0xEE, 0x30, 0xB0, 0x72, 0x72, 0x5B,
+ 0x82, 0xEA, 0x72, 0xB0, 0x90, 0x96, 0x71, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x2F, 0x98, 0x98, 0x2F,
+ 0xB2, 0xB2, 0x66, 0xA3, 0x2F, 0x51, 0x51, 0xB2,
+ 0xB2, 0x2F, 0x51, 0x89, 0x89, 0x2F, 0x8F, 0x2A,
+ 0xAD, 0xA5, 0x98, 0x66, 0xA3, 0xB2, 0x2F, 0xB2,
+ 0xD8, 0xB2, 0xA3, 0x98, 0x98, 0x2F, 0xB2, 0xB2,
+ 0x66, 0xA3, 0xB2, 0x51, 0x51, 0xB2, 0x2F, 0xA3,
+ 0x51, 0x89, 0x89, 0xA3, 0xA0, 0x2A, 0xA5, 0x8F,
+ 0x66, 0xA3, 0x2F, 0xB2, 0xB2, 0x51, 0x20, 0x69,
+ 0x64, 0xF9, 0x3F, 0x52, 0x52, 0x72, 0x29, 0x82,
+ 0x47, 0x47, 0x47, 0x8B, 0x72, 0xB7, 0x60, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x2F, 0x98, 0x98, 0x2F,
+ 0xB2, 0xB2, 0xA3, 0xA3, 0xB2, 0x89, 0x51, 0x2F,
+ 0x2F, 0xA3, 0x51, 0x89, 0x89, 0xA3, 0xA0, 0x2A,
+ 0xA5, 0x8F, 0x66, 0xA3, 0x2F, 0xB2, 0xB2, 0xB2,
+ 0xDD, 0xA3, 0x66, 0x98, 0x66, 0x2F, 0xB2, 0xB2,
+ 0xA3, 0xA3, 0xB2, 0x51, 0xB2, 0x2F, 0xA3, 0x2F,
+ 0xB2, 0x89, 0xB2, 0x66, 0xA0, 0xA5, 0x8F, 0x98,
+ 0x66, 0x66, 0xB2, 0x51, 0x51, 0x51, 0x81, 0xFA,
+ 0x62, 0xEE, 0x30, 0x52, 0x22, 0x72, 0x82, 0x82,
+ 0x47, 0x47, 0xEA, 0x3F, 0x37, 0x6F, 0x26, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x2A, 0x98, 0x66, 0x2F,
+ 0x51, 0xB2, 0xA3, 0x66, 0xB2, 0x51, 0x51, 0xB2,
+ 0xA3, 0x2F, 0xB2, 0x89, 0xB2, 0x66, 0x55, 0x55,
+ 0x8F, 0x98, 0x66, 0xA3, 0xB2, 0x51, 0x51, 0xB2,
+ 0x74, 0xA0, 0x8F, 0x98, 0x66, 0xB2, 0xB2, 0xB2,
+ 0xA3, 0xA3, 0x2F, 0x51, 0x51, 0x2F, 0xA3, 0x2F,
+ 0xB2, 0x51, 0xA3, 0x98, 0xA0, 0x55, 0xA0, 0xA0,
+ 0x8F, 0x66, 0x2F, 0x51, 0xB2, 0x51, 0x54, 0xA9,
+ 0x62, 0xEF, 0x52, 0x22, 0x72, 0x29, 0xEA, 0xEA,
+ 0x29, 0x22, 0x37, 0x37, 0x8E, 0xCF, 0x49, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x6D, 0x2F, 0x66, 0x2F,
+ 0x51, 0xB2, 0xA3, 0x66, 0x2F, 0xB2, 0xB2, 0x2F,
+ 0xA3, 0x2F, 0xB2, 0x51, 0x2F, 0x98, 0xA0, 0x55,
+ 0xA0, 0xA0, 0x8F, 0x66, 0x2F, 0x51, 0xB2, 0xA3,
+ 0xA3, 0x2A, 0xA5, 0x98, 0xA3, 0x2F, 0xB2, 0x2F,
+ 0x66, 0x66, 0x2F, 0xB2, 0xB2, 0xB2, 0x2F, 0x2F,
+ 0xB2, 0x2F, 0xA3, 0x8F, 0xA0, 0xA0, 0xA0, 0xA0,
+ 0x8F, 0xA3, 0x51, 0x51, 0x2F, 0xB2, 0x54, 0xA8,
+ 0x65, 0x5C, 0x52, 0x22, 0x29, 0x29, 0x29, 0xB0,
+ 0x62, 0x56, 0xF9, 0x79, 0xF9, 0xBB, 0x4B, 0x20,
+ 0x6D, 0xA5, 0x2E, 0x20, 0x20, 0xA3, 0xA3, 0x2F,
+ 0xB2, 0x2F, 0xA3, 0x66, 0x2F, 0xB2, 0xB2, 0xB2,
+ 0x2F, 0x2F, 0xB2, 0x2F, 0x66, 0x8F, 0xA0, 0xA0,
+ 0x55, 0xA0, 0x8F, 0xA3, 0x51, 0x51, 0x2F, 0xA3,
+ 0xA0, 0x2A, 0x55, 0x66, 0xA3, 0x2F, 0xB2, 0xB2,
+ 0xA3, 0x66, 0xA3, 0xB2, 0xB2, 0xB2, 0xA3, 0x66,
+ 0xA3, 0xA3, 0x66, 0x8F, 0x8F, 0x8F, 0xA0, 0x98,
+ 0xA3, 0x51, 0x89, 0x89, 0xA3, 0x2F, 0x20, 0x54,
+ 0xDF, 0xFA, 0x40, 0x37, 0xD4, 0x43, 0x56, 0x64,
+ 0x76, 0xF9, 0x78, 0x41, 0x5E, 0x5E, 0x4C, 0x20,
+ 0x20, 0xAD, 0x8F, 0x9C, 0x20, 0xA5, 0xA3, 0x2F,
+ 0x2F, 0x2F, 0xA3, 0x66, 0x2F, 0xB2, 0xB2, 0xB2,
+ 0xA3, 0x66, 0xA3, 0x2F, 0x66, 0x8F, 0x8F, 0x8F,
+ 0x8F, 0x8F, 0xA3, 0x51, 0x89, 0x51, 0xA3, 0x66,
+ 0xA0, 0xA0, 0x8F, 0xA3, 0x2F, 0x2F, 0x2F, 0xB2,
+ 0x2F, 0xA3, 0x2F, 0xB2, 0x51, 0xB2, 0x2F, 0x66,
+ 0xA3, 0xA3, 0x66, 0x66, 0x66, 0x66, 0x66, 0xA3,
+ 0xB2, 0x89, 0xD8, 0x51, 0x66, 0x51, 0x20, 0x6D,
+ 0x51, 0x77, 0x9F, 0xF7, 0xEE, 0x8E, 0xF9, 0xF0,
+ 0x24, 0xF7, 0x77, 0x5E, 0x74, 0xD8, 0x98, 0x20,
+ 0x20, 0x2E, 0x55, 0x92, 0x20, 0x54, 0x51, 0x2F,
+ 0x2F, 0xB2, 0xB2, 0xA3, 0x2F, 0x51, 0x51, 0xB2,
+ 0xA3, 0xA3, 0x66, 0xA3, 0x66, 0x66, 0x66, 0x66,
+ 0x66, 0xA3, 0xB2, 0x89, 0xD8, 0x51, 0xA3, 0x98,
+ 0x98, 0x66, 0x66, 0xA3, 0x2F, 0x2F, 0x2F, 0xB2,
+ 0xB2, 0x2F, 0x2F, 0xB2, 0xB2, 0x2F, 0x2F, 0x66,
+ 0x66, 0xA3, 0xA3, 0xA3, 0x2F, 0x2F, 0x2F, 0xB2,
+ 0x89, 0xD8, 0x89, 0xB2, 0x66, 0x66, 0x20, 0x6D,
+ 0x89, 0xC2, 0xA4, 0x96, 0xC6, 0x64, 0x50, 0x40,
+ 0xF4, 0x97, 0x89, 0x74, 0x7E, 0x6B, 0x39, 0xA7,
+ 0x20, 0x20, 0x3A, 0x54, 0x20, 0x20, 0xA7, 0x51,
+ 0x2F, 0xB2, 0xB2, 0xA3, 0xA3, 0xB2, 0xB2, 0xB2,
+ 0xA3, 0xA3, 0x66, 0xA3, 0xA3, 0xA3, 0x2F, 0x2F,
+ 0x2F, 0xB2, 0x89, 0xD8, 0x44, 0x2F, 0x66, 0x66,
+ 0x2F, 0xA3, 0xA3, 0x2F, 0x2F, 0x2F, 0x2F, 0xB2,
+ 0x2F, 0xA3, 0xA3, 0xA3, 0x2F, 0x2F, 0x2F, 0xA3,
+ 0x66, 0xA3, 0x2F, 0xB2, 0xB2, 0xB2, 0x51, 0x51,
+ 0x89, 0x89, 0xB2, 0x66, 0x2F, 0x6D, 0x20, 0xCE,
+ 0x39, 0x74, 0x89, 0x5E, 0xBD, 0x87, 0xC8, 0xD1,
+ 0x89, 0x44, 0x3C, 0x4D, 0x6B, 0x6B, 0x6B, 0x2F,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xA3,
+ 0x2F, 0x2F, 0x2F, 0xA3, 0xA3, 0x2F, 0x2F, 0x2F,
+ 0x2F, 0xA3, 0x66, 0x66, 0x2F, 0xB2, 0xB2, 0xB2,
+ 0x51, 0x51, 0x89, 0x89, 0xB2, 0xA3, 0x98, 0x66,
+ 0xA3, 0x66, 0x66, 0xA3, 0xA3, 0xA3, 0xA3, 0x2F,
+ 0x2F, 0xA3, 0xA3, 0xA3, 0x2F, 0xA3, 0x2F, 0xA3,
+ 0x66, 0x66, 0x2F, 0x2F, 0xB2, 0xB2, 0xB2, 0xB2,
+ 0xB2, 0x2F, 0x66, 0x66, 0x2A, 0x20, 0x54, 0x44,
+ 0x6B, 0x39, 0x89, 0x89, 0x89, 0x89, 0x89, 0x89,
+ 0xD8, 0x39, 0x4D, 0x6B, 0x6B, 0x6B, 0x6B, 0x4D,
+ 0x9C, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x6D,
+ 0x51, 0x2F, 0x2F, 0x2F, 0xA3, 0xA3, 0xA3, 0x2F,
+ 0xA3, 0xA3, 0x66, 0xA3, 0x2F, 0xB2, 0xB2, 0xB2,
+ 0xB2, 0xB2, 0xB2, 0x2F, 0x66, 0x98, 0x98, 0x66,
+ 0x98, 0x98, 0x66, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3,
+ 0x2F, 0x2F, 0xA3, 0xA3, 0x66, 0xA3, 0xA3, 0x66,
+ 0x98, 0x66, 0x66, 0x2F, 0xA3, 0xA3, 0xA3, 0xA3,
+ 0x66, 0x98, 0x98, 0x98, 0x3A, 0x54, 0x2A, 0x6B,
+ 0x6B, 0x6B, 0x83, 0x44, 0x89, 0x89, 0x44, 0x3C,
+ 0xD6, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B,
+ 0xB2, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0xAD, 0x2F, 0x2F, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3,
+ 0xA3, 0x66, 0x66, 0x98, 0x66, 0xA3, 0xA3, 0xA3,
+ 0xA3, 0xA3, 0x66, 0x98, 0x8F, 0x8F, 0x8F, 0x98,
+ 0x8F, 0x98, 0x98, 0x66, 0xA3, 0xA3, 0xA3, 0xA3,
+ 0x2F, 0xA3, 0xA3, 0x66, 0x66, 0x66, 0x66, 0x66,
+ 0x8F, 0x8F, 0x8F, 0x98, 0x98, 0x98, 0x8F, 0xA0,
+ 0xA0, 0xA0, 0xA3, 0xDA, 0x20, 0x3A, 0x39, 0x6B,
+ 0x6B, 0x6B, 0x4D, 0xA2, 0x74, 0x3C, 0x7E, 0x6B,
+ 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B,
+ 0x6B, 0x2E, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x2F, 0x2F, 0xA3, 0x66, 0x66, 0x66, 0x66,
+ 0x66, 0x98, 0x8F, 0x8F, 0x98, 0x98, 0x98, 0x98,
+ 0x8F, 0xA0, 0xA0, 0xA0, 0x8F, 0x8F, 0x8F, 0xA0,
+ 0x8F, 0x66, 0x66, 0xA3, 0x66, 0xA3, 0xA3, 0x2F,
+ 0x2F, 0x2F, 0xA3, 0xA3, 0x66, 0x66, 0x66, 0x98,
+ 0x98, 0xA0, 0x98, 0x66, 0x66, 0x98, 0x8F, 0xA0,
+ 0xA0, 0xA3, 0x2E, 0x20, 0x20, 0x8F, 0x6B, 0x6B,
+ 0x6B, 0x6B, 0x6B, 0x6B, 0x3D, 0x6B, 0x6B, 0x6B,
+ 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B,
+ 0x6B, 0x55, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x3A, 0x51, 0x2F, 0xA3, 0x66, 0x66, 0x66,
+ 0x66, 0x66, 0x98, 0x8F, 0x8F, 0x98, 0x66, 0x98,
+ 0x8F, 0xA0, 0xA0, 0x8F, 0x8F, 0x8F, 0x8F, 0xA0,
+ 0x66, 0x2F, 0x2F, 0x2F, 0x2F, 0xA3, 0xA3, 0xA3,
+ 0x2F, 0x2F, 0xA3, 0xA3, 0x66, 0xA3, 0x66, 0x66,
+ 0x66, 0x98, 0xA3, 0x2F, 0x2F, 0xA3, 0x66, 0x8F,
+ 0x66, 0xA6, 0x20, 0x20, 0x6D, 0x39, 0x6B, 0x6B,
+ 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B,
+ 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B,
+ 0x6B, 0xB2, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x2E, 0x89, 0xA3, 0xA3, 0x66, 0x66,
+ 0x66, 0x66, 0x98, 0x98, 0xA3, 0x2F, 0x2F, 0xA3,
+ 0x66, 0x8F, 0x98, 0x98, 0x66, 0x98, 0x98, 0x8F,
+ 0x2F, 0x51, 0xB2, 0xB2, 0x2F, 0xA3, 0xA3, 0xA3,
+ 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3,
+ 0xA3, 0xA3, 0x2F, 0xB2, 0x2F, 0xA3, 0x66, 0x2F,
+ 0x55, 0x20, 0x20, 0x20, 0x4C, 0x39, 0x6B, 0x6B,
+ 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B,
+ 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B,
+ 0x4D, 0x7E, 0x54, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x2E, 0x51, 0xA3, 0xA3, 0xA3,
+ 0xA3, 0xA3, 0xA3, 0x2F, 0xB2, 0xB2, 0x2F, 0xA3,
+ 0x66, 0x66, 0xA3, 0xA3, 0xA3, 0xA3, 0x66, 0x66,
+ 0xB2, 0x51, 0x51, 0xB2, 0xB2, 0xA3, 0x2F, 0xA3,
+ 0x2F, 0x2F, 0x2F, 0xA3, 0xA3, 0xA3, 0xA3, 0x66,
+ 0xA3, 0x2F, 0xB2, 0x2F, 0xA3, 0x98, 0x98, 0xA0,
+ 0x20, 0x20, 0x20, 0x20, 0xA5, 0x83, 0x6B, 0x6B,
+ 0x6B, 0x6B, 0x6B, 0x4D, 0x7E, 0x4D, 0x6B, 0x6B,
+ 0x6B, 0x6B, 0x6B, 0x4D, 0x4D, 0xD6, 0x7E, 0xDD,
+ 0x3C, 0x39, 0xA7, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x92, 0xB2, 0xA3, 0xA3,
+ 0xA3, 0x66, 0xA3, 0x2F, 0x2F, 0x2F, 0xA3, 0x98,
+ 0x98, 0x66, 0xA3, 0xA3, 0x66, 0x66, 0x66, 0xA3,
+ 0x89, 0x89, 0x51, 0xB2, 0xB2, 0x2F, 0x2F, 0x2F,
+ 0x2F, 0xA3, 0xA3, 0x2F, 0xA3, 0xA3, 0xA3, 0xA3,
+ 0xA3, 0xA3, 0xA3, 0x66, 0x8F, 0x8F, 0x2F, 0xDA,
+ 0x20, 0x20, 0x20, 0xDA, 0xA0, 0x51, 0x3C, 0x7E,
+ 0x6B, 0x6B, 0x6B, 0x4D, 0x7E, 0x6B, 0x6B, 0x6B,
+ 0x6B, 0x6B, 0x6B, 0x7E, 0x3C, 0xD8, 0x44, 0xD8,
+ 0x44, 0x83, 0x89, 0xDA, 0x20, 0x3A, 0x20, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0xB2, 0xA3, 0xA3,
+ 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0x66, 0x8F, 0x8F,
+ 0x98, 0x98, 0x98, 0x98, 0x66, 0xA3, 0xA3, 0x2F,
+ 0x3C, 0x89, 0x89, 0x51, 0xB2, 0xB2, 0x2F, 0x2F,
+ 0x2F, 0x2F, 0xA3, 0xA3, 0x66, 0x66, 0x66, 0xA3,
+ 0xA3, 0xA3, 0xA3, 0x66, 0x98, 0x98, 0xA3, 0x20,
+ 0x20, 0x20, 0x20, 0x6D, 0x2F, 0xE6, 0x6B, 0x6B,
+ 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x3D, 0xD6, 0x3D,
+ 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x4D, 0x7E, 0xA2,
+ 0x74, 0x44, 0xA2, 0xA3, 0x20, 0x3A, 0x2E, 0x6D,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0xA6, 0xA3, 0x66,
+ 0x66, 0x66, 0xA3, 0x2F, 0xA3, 0x66, 0x66, 0x98,
+ 0x66, 0x66, 0x98, 0x98, 0x98, 0x66, 0xA3, 0xA3,
+ 0x83, 0xB2, 0x2F, 0x2F, 0xB2, 0xB2, 0xB2, 0x2F,
+ 0x2F, 0x2F, 0xA3, 0x66, 0x66, 0x98, 0x98, 0x66,
+ 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0x66, 0xA6, 0x20,
+ 0x3A, 0x3A, 0x54, 0x55, 0x7E, 0x6B, 0x6B, 0x6B,
+ 0x4D, 0x3D, 0x6B, 0x6B, 0x6B, 0x57, 0x33, 0xEB,
+ 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B,
+ 0x4D, 0xA2, 0x74, 0x39, 0x92, 0x20, 0x20, 0x6D,
+ 0x2E, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2F, 0x98,
+ 0x98, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0x66, 0x66,
+ 0x66, 0x66, 0x66, 0x66, 0x66, 0xA3, 0x66, 0xA3,
+ 0x89, 0xA3, 0x66, 0x66, 0xA3, 0xA3, 0x2F, 0x2F,
+ 0xA3, 0x2F, 0xA3, 0xA3, 0x66, 0x66, 0x66, 0xA3,
+ 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xB2, 0x3A, 0x20,
+ 0xA7, 0x20, 0x3A, 0x39, 0x6B, 0x6B, 0x6B, 0x6B,
+ 0xB5, 0xCB, 0x6B, 0x6B, 0x3D, 0x8A, 0x42, 0x3D,
+ 0x6B, 0x6B, 0x6B, 0x84, 0x6C, 0x4D, 0x6B, 0x6B,
+ 0x6B, 0x6B, 0x7E, 0x83, 0x51, 0x20, 0x20, 0x20,
+ 0x6D, 0x3A, 0x20, 0x20, 0x20, 0x20, 0xAD, 0x66,
+ 0x66, 0x66, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3,
+ 0xA3, 0xA3, 0xA3, 0xA3, 0x66, 0xA3, 0xA3, 0xA3,
+ 0xB2, 0x98, 0x66, 0x66, 0x98, 0x66, 0x66, 0xA3,
+ 0xA3, 0xA3, 0xA3, 0xA3, 0x2F, 0x2F, 0x2F, 0x2F,
+ 0xA3, 0x2F, 0xA3, 0xA3, 0xA3, 0x2F, 0x20, 0x6D,
+ 0x3A, 0x20, 0x98, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B,
+ 0xAA, 0x33, 0x6B, 0x6B, 0x3D, 0xF5, 0x7B, 0x3D,
+ 0x6B, 0x6B, 0x4F, 0x4A, 0x58, 0x3D, 0x6B, 0x6B,
+ 0x6B, 0x6B, 0x6B, 0x7E, 0x7E, 0x9C, 0x54, 0xA7,
+ 0x2E, 0xA7, 0x20, 0x20, 0x20, 0x20, 0x54, 0x51,
+ 0x2F, 0x2F, 0xA3, 0x2F, 0xA3, 0xA3, 0xA3, 0xA3,
+ 0x2F, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0x2F,
+ 0xB2, 0x66, 0x66, 0x66, 0x66, 0xA3, 0x66, 0xA3,
+ 0x66, 0x66, 0xA3, 0x2F, 0x2F, 0xB2, 0x2F, 0xB2,
+ 0x2F, 0x2F, 0x2F, 0xA3, 0x2F, 0xA6, 0x20, 0xCE,
+ 0x20, 0x6D, 0x4D, 0x6B, 0xD6, 0x7E, 0x6B, 0x6B,
+ 0x6E, 0x9A, 0x57, 0x6B, 0x2D, 0x7B, 0x7B, 0x3D,
+ 0x6B, 0x84, 0xF5, 0x7B, 0x84, 0x6B, 0x6B, 0x6B,
+ 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x98, 0x3A, 0x9C,
+ 0xCE, 0x3A, 0x2E, 0x20, 0x20, 0x20, 0x20, 0x98,
+ 0xB2, 0xB2, 0x2F, 0x2F, 0x2F, 0xA3, 0x2F, 0x2F,
+ 0x2F, 0xA3, 0xA3, 0xA3, 0xA3, 0x2F, 0x2F, 0x2F,
+ 0x89, 0xA3, 0x66, 0x66, 0xA3, 0x2F, 0x2F, 0xA3,
+ 0x66, 0x66, 0xA3, 0xA3, 0x2F, 0x2F, 0xB2, 0xB2,
+ 0xB2, 0x2F, 0x2F, 0x2F, 0x89, 0x54, 0x6D, 0x3A,
+ 0x20, 0x98, 0x6B, 0x6B, 0xE0, 0xB4, 0x6B, 0x6B,
+ 0x2D, 0x9E, 0x4A, 0x3D, 0x84, 0xF5, 0xF5, 0x84,
+ 0x6B, 0x6E, 0x59, 0x6C, 0x6B, 0x6B, 0x6B, 0x6B,
+ 0x3D, 0x6B, 0x6B, 0x6B, 0x6B, 0xDD, 0xDA, 0x6D,
+ 0x54, 0x20, 0xCE, 0x20, 0x20, 0x20, 0x20, 0xA7,
+ 0x51, 0xB2, 0xB2, 0xB2, 0x2F, 0xB2, 0x2F, 0x2F,
+ 0x2F, 0x66, 0x66, 0xA3, 0xA3, 0xA3, 0xA3, 0x66,
+ 0x89, 0xA3, 0xA3, 0xA3, 0x2F, 0xB2, 0xB2, 0x2F,
+ 0x66, 0x66, 0xA3, 0xA3, 0x2F, 0xA3, 0xA3, 0x2F,
+ 0xB2, 0x2F, 0x2F, 0xA3, 0x98, 0x20, 0xA7, 0x20,
+ 0x3A, 0x7E, 0x6B, 0x6B, 0x7F, 0xDE, 0xF6, 0x3D,
+ 0x6B, 0xDB, 0x8A, 0xDB, 0xE9, 0xF3, 0xF3, 0xDB,
+ 0x68, 0xF3, 0x73, 0x7F, 0x6B, 0x6B, 0x57, 0x58,
+ 0xDC, 0x2D, 0x6B, 0x6B, 0x6B, 0x6B, 0x3A, 0x20,
+ 0x20, 0x20, 0x6D, 0x54, 0x20, 0x20, 0x20, 0x20,
+ 0x51, 0x2F, 0x2F, 0x2F, 0xA3, 0xA3, 0xA3, 0x66,
+ 0xA3, 0x66, 0x98, 0x98, 0x66, 0x98, 0x98, 0x66,
+ 0x2F, 0x66, 0x66, 0xA3, 0x2F, 0xB2, 0x2F, 0xA3,
+ 0xA3, 0xA3, 0xA3, 0xA3, 0x66, 0xA3, 0xA3, 0xA3,
+ 0x66, 0x98, 0x8F, 0x98, 0xCE, 0xDA, 0x2E, 0x20,
+ 0x2A, 0x6B, 0x6B, 0x6B, 0x6B, 0x2C, 0x34, 0xCB,
+ 0xEB, 0x6C, 0x31, 0x59, 0x82, 0x82, 0x8B, 0x82,
+ 0xF3, 0x73, 0xE9, 0x6B, 0x3D, 0x6E, 0xF3, 0x4A,
+ 0x4F, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x92, 0x20,
+ 0x20, 0x20, 0x6D, 0x6D, 0x20, 0x20, 0x20, 0x20,
+ 0xA3, 0xA3, 0x66, 0x98, 0x98, 0x8F, 0x8F, 0x98,
+ 0x98, 0x98, 0x98, 0x66, 0x98, 0x66, 0x66, 0xA3,
+ 0xA3, 0x66, 0x66, 0x66, 0xA3, 0x2F, 0x2F, 0xA3,
+ 0xA3, 0xA3, 0x66, 0x66, 0xA3, 0xA3, 0xA3, 0x66,
+ 0x8F, 0x55, 0xA5, 0x98, 0x20, 0x2E, 0x54, 0x54,
+ 0x89, 0x6B, 0x6B, 0x6B, 0x6B, 0x84, 0xE3, 0x4A,
+ 0x58, 0x42, 0x5B, 0x8B, 0x82, 0x82, 0x82, 0x82,
+ 0x82, 0x59, 0x58, 0x57, 0x57, 0x59, 0x7B, 0x84,
+ 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0xAD, 0x20,
+ 0x20, 0x20, 0x3A, 0x3A, 0x20, 0x20, 0x20, 0x20,
+ 0x2A, 0x66, 0x8F, 0x55, 0xA5, 0xA5, 0xA0, 0x8F,
+ 0x66, 0xA3, 0xA3, 0x66, 0x98, 0x66, 0x66, 0x2F,
+ 0x2F, 0x2F, 0x2F, 0xA3, 0xA3, 0x2F, 0x2F, 0x2F,
+ 0xA3, 0x2F, 0xA3, 0xA3, 0x66, 0xA3, 0xA3, 0x66,
+ 0x8F, 0xA5, 0x8F, 0x2E, 0x20, 0x2E, 0x20, 0x3A,
+ 0x4D, 0x6B, 0xE6, 0x84, 0x3D, 0x6B, 0xEB, 0x4A,
+ 0xC9, 0x8B, 0x8B, 0x31, 0x59, 0x82, 0x59, 0x59,
+ 0x5B, 0x82, 0x59, 0x73, 0x7B, 0xDC, 0x57, 0x6B,
+ 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x55, 0x20,
+ 0x20, 0x20, 0x6D, 0xDA, 0x20, 0x20, 0x20, 0x20,
+ 0x9C, 0x66, 0x8F, 0xA5, 0xA5, 0x55, 0x8F, 0x66,
+ 0x2F, 0xB2, 0x2F, 0x66, 0x98, 0x98, 0x2F, 0x51,
+ 0x89, 0xB2, 0x2F, 0xA3, 0xA3, 0xB2, 0xB2, 0xB2,
+ 0x2F, 0x2F, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0x66,
+ 0x8F, 0xA5, 0x8F, 0x20, 0x20, 0xA7, 0x20, 0xA6,
+ 0x6B, 0x6B, 0xE4, 0x48, 0x2C, 0xDB, 0x4F, 0x9E,
+ 0xD0, 0xD0, 0x8B, 0x82, 0x82, 0x82, 0x82, 0x82,
+ 0x59, 0x82, 0x82, 0x73, 0x7B, 0x68, 0x6B, 0x3D,
+ 0x68, 0x68, 0x84, 0x3D, 0x6B, 0x6B, 0xA0, 0x20,
+ 0x20, 0x20, 0x6D, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x6D, 0x2F, 0xA0, 0xA5, 0x55, 0x98, 0x66, 0xA3,
+ 0xB2, 0x89, 0xB2, 0x98, 0x8F, 0x98, 0x2F, 0x51,
+ 0x74, 0xB2, 0xA3, 0xA3, 0x2F, 0x2F, 0xB2, 0x2F,
+ 0xA3, 0xA3, 0xA3, 0x66, 0x66, 0xA3, 0x2F, 0xA3,
+ 0x98, 0xA3, 0x6D, 0x20, 0x20, 0xCE, 0x20, 0x2A,
+ 0x6B, 0x6B, 0xEB, 0x2C, 0xE1, 0xF1, 0x7C, 0xD0,
+ 0x8B, 0x8B, 0x82, 0x82, 0x82, 0x82, 0x82, 0x59,
+ 0x82, 0x82, 0x42, 0x82, 0x31, 0x57, 0x4F, 0x7B,
+ 0x7B, 0xF5, 0xF6, 0xDB, 0x6B, 0x6B, 0x98, 0x20,
+ 0x20, 0x20, 0x2E, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x51, 0x66, 0xA0, 0xA0, 0x66, 0x2F, 0xB2,
+ 0xB2, 0x51, 0x2F, 0xA0, 0x55, 0xA3, 0x51, 0x89,
+ 0x44, 0xA3, 0x98, 0x98, 0x2F, 0x2F, 0x2F, 0xA3,
+ 0xA3, 0x66, 0x98, 0x98, 0x98, 0xA3, 0x2F, 0x2F,
+ 0x98, 0x8F, 0x20, 0x20, 0x3A, 0xA6, 0x20, 0xA0,
+ 0x6B, 0x6B, 0x6B, 0x6B, 0x7F, 0x7F, 0xC3, 0xC9,
+ 0xD0, 0xD0, 0x29, 0x59, 0x82, 0x73, 0x82, 0x73,
+ 0x59, 0x59, 0x59, 0x59, 0x59, 0x58, 0xAF, 0xF5,
+ 0x8A, 0x68, 0xEB, 0x6B, 0x6B, 0x6B, 0x98, 0x20,
+ 0x20, 0x20, 0x6D, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x51, 0x98, 0x55, 0xA0, 0xA3, 0xB2, 0x51,
+ 0x51, 0x2F, 0x98, 0x55, 0x8F, 0xB2, 0x89, 0x44,
+ 0xA3, 0x55, 0x55, 0x98, 0xA3, 0xB2, 0x2F, 0xA3,
+ 0x66, 0x66, 0x98, 0x8F, 0x66, 0xA3, 0x66, 0x98,
+ 0x55, 0x4C, 0x20, 0x20, 0xDA, 0xAD, 0x20, 0x98,
+ 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x3D, 0x9A, 0xD0,
+ 0xF2, 0x8B, 0x8B, 0x8B, 0x73, 0x82, 0x5B, 0x82,
+ 0x82, 0x59, 0x59, 0x73, 0x73, 0x58, 0x3D, 0x3D,
+ 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x66, 0x20,
+ 0x20, 0x3A, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x2F, 0x55, 0xA5, 0x8F, 0xA3, 0x51, 0x51,
+ 0xB2, 0xA3, 0x66, 0x66, 0xA3, 0xB2, 0x89, 0x51,
+ 0x98, 0xA5, 0x55, 0x8F, 0x2F, 0xB2, 0xB2, 0xA3,
+ 0x66, 0x66, 0x98, 0x98, 0x98, 0x66, 0x66, 0x8F,
+ 0x8F, 0x92, 0x20, 0x20, 0x20, 0x6D, 0x6D, 0xA3,
+ 0x6B, 0x6B, 0xEB, 0x7F, 0x4F, 0xDB, 0xD2, 0xC9,
+ 0xC9, 0xD0, 0x8B, 0x8B, 0x73, 0x82, 0x59, 0x8B,
+ 0x59, 0x82, 0x59, 0x59, 0x73, 0xF5, 0xEB, 0x6B,
+ 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x55, 0x20,
+ 0x20, 0xA7, 0x54, 0xDA, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x98, 0xA0, 0x8F, 0xA3, 0xB2, 0x51, 0x51,
+ 0x51, 0x2F, 0xA3, 0xA3, 0xB2, 0xB2, 0x51, 0xB2,
+ 0xA0, 0xA5, 0x55, 0x66, 0x2F, 0x51, 0x2F, 0xA3,
+ 0x66, 0x66, 0x66, 0x98, 0x66, 0x66, 0x98, 0x98,
+ 0x98, 0x2A, 0x54, 0x95, 0x95, 0x71, 0x2E, 0x98,
+ 0x6B, 0x6B, 0x4D, 0x28, 0xDE, 0x88, 0xB7, 0x70,
+ 0xC9, 0xC9, 0xD0, 0xF2, 0x8B, 0x8B, 0x8B, 0x59,
+ 0x59, 0x59, 0x59, 0x5B, 0x59, 0xF3, 0x57, 0xE9,
+ 0xDB, 0x84, 0x6B, 0x6B, 0x6B, 0x6B, 0x4C, 0xDA,
+ 0x2E, 0xDA, 0x20, 0xDA, 0x2E, 0x2E, 0x6D, 0x20,
+ 0x4C, 0x98, 0x66, 0xA3, 0x2F, 0xB2, 0x51, 0x51,
+ 0xB2, 0xA3, 0xA3, 0xA3, 0x2F, 0x2F, 0x2F, 0x2F,
+ 0xA0, 0xA0, 0x8F, 0x2F, 0xB2, 0x89, 0xB2, 0xA3,
+ 0x66, 0x66, 0x98, 0x66, 0x66, 0x66, 0x66, 0xA3,
+ 0x2F, 0xD1, 0xE2, 0x52, 0x52, 0xF4, 0xBF, 0x9C,
+ 0x39, 0x6B, 0x6B, 0x6B, 0x7F, 0x4F, 0xE3, 0x6A,
+ 0xD0, 0xC9, 0xC9, 0xD0, 0xD0, 0x8B, 0x8B, 0x82,
+ 0x5B, 0x5B, 0x73, 0x8B, 0x59, 0x23, 0x6E, 0x31,
+ 0x59, 0x7B, 0xDB, 0x84, 0x68, 0x7F, 0xAE, 0x54,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x54, 0xA6, 0x3A,
+ 0xA0, 0xA3, 0xA3, 0x2F, 0x51, 0x51, 0x51, 0xB2,
+ 0x2F, 0xA3, 0x66, 0x66, 0xA3, 0xA3, 0xA3, 0xA3,
+ 0x8F, 0x8F, 0x66, 0x2F, 0x51, 0x51, 0xB2, 0xA3,
+ 0x66, 0x98, 0x98, 0x66, 0x66, 0xA3, 0x2F, 0x2F,
+ 0x3C, 0x88, 0x8D, 0x52, 0x52, 0x5D, 0xF7, 0xBF,
+ 0xCE, 0xA2, 0x6B, 0x6B, 0x6B, 0x6B, 0x7F, 0x85,
+ 0x70, 0xC9, 0xC9, 0xC9, 0xD0, 0xEA, 0x8B, 0x5B,
+ 0x82, 0xEA, 0x82, 0x82, 0x42, 0x57, 0x3D, 0x68,
+ 0x68, 0x57, 0x4A, 0x34, 0x22, 0xCC, 0x21, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0xDA, 0xA7, 0x6D,
+ 0xDF, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0x2F, 0x2F,
+ 0xA3, 0x66, 0x66, 0x66, 0xA3, 0xA3, 0x2F, 0x2F,
+ 0x66, 0x66, 0xA3, 0x2F, 0xB2, 0xB2, 0x2F, 0x66,
+ 0x8F, 0x8F, 0x8F, 0x98, 0xA3, 0xA3, 0x89, 0xD8,
+ 0x25, 0x5C, 0x3B, 0x5D, 0x52, 0x80, 0x70, 0x36,
+ 0x71, 0xA7, 0x44, 0x6B, 0x84, 0xCB, 0xAA, 0xF3,
+ 0xC9, 0xC9, 0xC9, 0xC9, 0xD0, 0x8B, 0x5B, 0x5B,
+ 0x5B, 0xEA, 0x82, 0x47, 0x7B, 0x68, 0x3D, 0x3D,
+ 0x6B, 0x3D, 0x6C, 0x2B, 0x80, 0x61, 0x96, 0x81,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x3A, 0xDA, 0x63,
+ 0xAC, 0x6C, 0xB2, 0xB2, 0xB2, 0xB2, 0x2F, 0xA3,
+ 0xA3, 0x66, 0xA3, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F,
+ 0x66, 0x98, 0x66, 0xA3, 0xB2, 0xB2, 0x2F, 0x66,
+ 0x8F, 0x8F, 0x2F, 0xD8, 0xE4, 0xCD, 0xAA, 0xB4,
+ 0x78, 0x2B, 0x3B, 0x70, 0x46, 0x5D, 0x5D, 0x52,
+ 0x9D, 0x81, 0x3A, 0xA3, 0xCD, 0x48, 0xBE, 0x4F,
+ 0xC3, 0xC9, 0xD0, 0xD0, 0xD0, 0xEA, 0x5B, 0x8B,
+ 0x5B, 0x82, 0x8B, 0x59, 0x4A, 0xF3, 0x33, 0x7F,
+ 0x3D, 0x6B, 0x4F, 0x6F, 0x5D, 0x52, 0x63, 0x20,
+ 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x75, 0x85,
+ 0x72, 0xDC, 0xD8, 0x2F, 0xA3, 0x2F, 0xA3, 0xA3,
+ 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3, 0xA3,
+ 0xA3, 0x98, 0x66, 0x2F, 0xB2, 0x51, 0xA3, 0x98,
+ 0xA0, 0xA3, 0x93, 0xCF, 0x79, 0x27, 0x5C, 0x79,
+ 0x2B, 0x30, 0x80, 0x80, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x3F, 0x69, 0x20, 0x20, 0x2A, 0xD6, 0x3D, 0x6B,
+ 0x84, 0xE3, 0x34, 0xB7, 0xC9, 0xD0, 0xD0, 0xF2,
+ 0xD0, 0x8B, 0x31, 0x68, 0x68, 0x6E, 0x31, 0x33,
+ 0x7F, 0x7E, 0xA1, 0x6F, 0x52, 0x8D, 0xE5, 0xBF,
+ 0x20, 0x20, 0x20, 0x20, 0x81, 0xA8, 0x78, 0x52,
+ 0x52, 0xD2, 0xD8, 0xA3, 0xA3, 0x2F, 0x2F, 0xA3,
+ 0xA3, 0x66, 0x98, 0x98, 0x98, 0x98, 0x98, 0x66,
+ 0x51, 0x66, 0x2F, 0x51, 0x51, 0xB2, 0xA3, 0xA0,
+ 0xA0, 0x44, 0x78, 0xEF, 0x52, 0x30, 0x30, 0x30,
+ 0x3B, 0x70, 0x5D, 0x5D, 0x5D, 0x80, 0x5D, 0x5D,
+ 0x46, 0xC1, 0x71, 0x20, 0x81, 0xB1, 0xDD, 0x3D,
+ 0xA1, 0xE7, 0xDB, 0xCA, 0xD2, 0x6A, 0x6A, 0x6A,
+ 0xF3, 0xE9, 0xDB, 0x8A, 0x84, 0x3D, 0x84, 0xDC,
+ 0x25, 0x44, 0xB5, 0xEE, 0x30, 0xEF, 0xF0, 0x32,
+ 0x69, 0x5F, 0x4B, 0xA8, 0x99, 0x56, 0x67, 0x30,
+ 0x30, 0x34, 0xB2, 0x2F, 0xA3, 0xA3, 0x66, 0x66,
+ 0x98, 0x8F, 0x98, 0x98, 0x66, 0x66, 0x66, 0x66,
+ 0x51, 0x2F, 0xB2, 0x51, 0x51, 0x2F, 0x66, 0xA0,
+ 0x8F, 0xE0, 0xF9, 0x8D, 0x52, 0x5D, 0x46, 0x5D,
+ 0x80, 0x5D, 0x80, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x52, 0x52, 0x60, 0x81, 0x20, 0x20, 0x6D, 0xD1,
+ 0x48, 0xE7, 0x6B, 0x33, 0xF6, 0x7F, 0x7F, 0xDB,
+ 0x84, 0x6B, 0x6C, 0x6A, 0xF3, 0xEB, 0x6B, 0x3D,
+ 0x4F, 0xD8, 0xCD, 0x79, 0x30, 0x67, 0xF9, 0x24,
+ 0xED, 0xD9, 0x8C, 0xED, 0x37, 0x2B, 0x3B, 0x5D,
+ 0x80, 0x85, 0x4E, 0x98, 0x66, 0x66, 0x66, 0x66,
+ 0x66, 0x66, 0x66, 0xA3, 0x2F, 0x2F, 0x2F, 0x2F,
+ 0x51, 0x2F, 0xB2, 0xB2, 0xB2, 0xA3, 0x8F, 0x8F,
+ 0x98, 0xE0, 0xF0, 0x67, 0x5D, 0x80, 0x80, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x80, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x70, 0x27, 0x4B, 0x20, 0x81, 0x71, 0x3A,
+ 0xB5, 0xEB, 0x3D, 0xF1, 0xE1, 0x84, 0x84, 0xF1,
+ 0xE3, 0x3D, 0x6B, 0x6C, 0x34, 0xE7, 0x6B, 0x6B,
+ 0xD6, 0x74, 0x5E, 0x78, 0x67, 0x30, 0xEE, 0x5C,
+ 0xF9, 0xF9, 0x45, 0x5C, 0x2B, 0x3B, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0xF8, 0x44, 0x66, 0x66, 0x66, 0x66,
+ 0x2F, 0x2F, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2,
+ 0xB2, 0x2F, 0xA3, 0xA3, 0xA3, 0x98, 0x8F, 0x98,
+ 0x66, 0x83, 0x76, 0x67, 0x30, 0x80, 0x5D, 0x80,
+ 0x5D, 0x5D, 0x80, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x80, 0x5D, 0x22, 0xFA, 0x20, 0x81, 0x20, 0x20,
+ 0xA5, 0x6B, 0x6B, 0xE8, 0xBE, 0x3D, 0x6B, 0x2C,
+ 0xE1, 0xEB, 0x6B, 0x3D, 0x3E, 0xA1, 0x6B, 0x6B,
+ 0x4D, 0x74, 0xE8, 0x62, 0x67, 0x30, 0x8D, 0x67,
+ 0xEE, 0xEE, 0xEE, 0x67, 0x30, 0x80, 0x5D, 0x5D,
+ 0x52, 0x5D, 0x85, 0xAC, 0x3E, 0xA3, 0x66, 0x66,
+ 0x2F, 0x51, 0x51, 0x51, 0x51, 0xB2, 0x2F, 0x2F,
+ 0x2F, 0xA3, 0xA3, 0x66, 0x98, 0x8F, 0x8F, 0x66,
+ 0x2F, 0x83, 0xBC, 0xEE, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x80, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x22, 0xB0, 0xAE, 0x81, 0x20, 0x20,
+ 0x4C, 0x3D, 0xEB, 0x39, 0x57, 0x6B, 0x6B, 0x3E,
+ 0x97, 0x3D, 0x6B, 0x3D, 0x6B, 0x6B, 0x6B, 0x6B,
+ 0x3D, 0x3C, 0xBA, 0x62, 0xEE, 0x5D, 0x5D, 0x30,
+ 0x30, 0x8D, 0x8D, 0x30, 0x52, 0x5D, 0x5D, 0x80,
+ 0x5D, 0x5D, 0x5D, 0x85, 0xB0, 0x6E, 0x2F, 0x66,
+ 0x2F, 0xB2, 0x51, 0xB2, 0x2F, 0x2F, 0xA3, 0xA3,
+ 0xB2, 0xA3, 0x66, 0x98, 0x98, 0x8F, 0x98, 0xA3,
+ 0x2F, 0x51, 0xDE, 0x8E, 0x30, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x52, 0x80, 0x5D, 0x22, 0x43, 0x4B, 0x20, 0x6D,
+ 0x44, 0x6B, 0x6B, 0x3D, 0x6B, 0x6B, 0x6B, 0x4D,
+ 0x3D, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x3D, 0x6B,
+ 0x4D, 0x2A, 0xAE, 0x76, 0xEE, 0x30, 0x80, 0x80,
+ 0x80, 0x80, 0x80, 0x80, 0x5D, 0x5D, 0x5D, 0x80,
+ 0x5D, 0x5D, 0x80, 0x80, 0x5D, 0x7A, 0xB6, 0x51,
+ 0xB2, 0xB2, 0xB2, 0xA3, 0x66, 0x66, 0x66, 0xA3,
+ 0x2F, 0x66, 0x98, 0x8F, 0xA0, 0x98, 0xA3, 0x2F,
+ 0x2F, 0x51, 0xAB, 0x8E, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x80,
+ 0x5D, 0x80, 0x5D, 0x52, 0x52, 0x94, 0x2F, 0x7E,
+ 0x6B, 0x3D, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B,
+ 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x7E,
+ 0xAD, 0x54, 0xAE, 0x24, 0x2B, 0x3B, 0x5D, 0x52,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x80, 0x5D, 0x5D, 0x80,
+ 0x5D, 0x52, 0x52, 0x5D, 0x5D, 0x5D, 0xD2, 0x3E,
+ 0x89, 0x89, 0xB2, 0xA3, 0x66, 0x98, 0x66, 0x66,
+ 0x2F, 0x66, 0x8F, 0x8F, 0xA0, 0x98, 0xA3, 0xB2,
+ 0x2F, 0x51, 0xDE, 0x79, 0x5D, 0x80, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x80, 0x5D, 0x52, 0x6F, 0xA4, 0x6B,
+ 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B,
+ 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x4D, 0xA2, 0xCE,
+ 0x20, 0x20, 0x95, 0x24, 0x67, 0x3B, 0x80, 0x80,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x80, 0x5D, 0x5D, 0x5D, 0x5D, 0x30, 0xB0, 0x86,
+ 0x89, 0x51, 0x2F, 0x66, 0x98, 0x98, 0xA3, 0xA3,
+ 0xA3, 0x66, 0x8F, 0xA0, 0x8F, 0x66, 0x2F, 0xB2,
+ 0x2F, 0x4E, 0x76, 0x2B, 0x30, 0x5D, 0x5D, 0x5D,
+ 0x80, 0x80, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x80, 0x5D, 0x5D, 0x5D, 0x46, 0x52, 0x21, 0x74,
+ 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B, 0x6B,
+ 0x6B, 0x6B, 0x6B, 0x6B, 0x7E, 0x98, 0x3A, 0x20,
+ 0x20, 0x81, 0x60, 0xED, 0x2B, 0x52, 0x5D, 0x5D,
+ 0x80, 0x5D, 0x5D, 0x80, 0x5D, 0x5D, 0x5D, 0x80,
+ 0x22, 0x5D, 0x5D, 0x5D, 0x8D, 0x2B, 0x38, 0x39,
+ 0x51, 0x66, 0x8F, 0xA0, 0xA0, 0x8F, 0x98, 0x66,
+ 0x66, 0x66, 0x8F, 0x55, 0x8F, 0xA3, 0xB2, 0xB2,
+ 0xA3, 0xE8, 0xF9, 0x30, 0x3B, 0x80, 0x5D, 0x5D,
+ 0x5D, 0x80, 0x80, 0x5D, 0x5D, 0x5D, 0x80, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x52, 0x30, 0xD4, 0x99,
+ 0x51, 0x4D, 0x6B, 0x6B, 0x6B, 0x6B, 0x4D, 0x6B,
+ 0x6B, 0x6B, 0x7E, 0xA3, 0x2E, 0x20, 0x20, 0x20,
+ 0x20, 0x81, 0xC5, 0xED, 0x2B, 0x3B, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x80, 0x5D, 0x5D, 0x80,
+ 0x5D, 0x52, 0x52, 0x6F, 0xDE, 0x2C, 0x39, 0x51,
+ 0x66, 0xA0, 0xA5, 0xA5, 0x55, 0x8F, 0x66, 0x66,
+ 0xA0, 0xA0, 0xA0, 0xA0, 0x8F, 0xA3, 0x2F, 0x2F,
+ 0x51, 0xD5, 0x45, 0x8D, 0x3B, 0x5D, 0x80, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D, 0x5D,
+ 0x80, 0x5D, 0x5D, 0x5D, 0x52, 0x67, 0x37, 0xA9,
+ 0x3A, 0xCE, 0xA0, 0x2F, 0x51, 0x51, 0xB2, 0xA3,
+ 0xA5, 0x9C, 0x54, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x54, 0x99, 0xED, 0x67, 0x30, 0x5D, 0x5D,
+ 0x5D, 0x80, 0x5D, 0x5D, 0x5D, 0x5D, 0x3B, 0x80,
+ 0x8D, 0x79, 0x48, 0x2C, 0x39, 0x44, 0xB2, 0x66,
+ 0xA0, 0x2A, 0xA5, 0xA0, 0x8F, 0x66, 0xA3, 0xA3,
+ 0xA0, 0x8F, 0x8F, 0xA0, 0x8F, 0xA3, 0xB2, 0xB2,
+ 0xD8, 0xBC, 0x45, 0xEE, 0x67, 0x8D, 0x30, 0x30,
+ 0x52, 0x52, 0x80, 0x5D, 0x5D, 0x5D, 0x5D, 0x80,
+ 0x5D, 0x5D, 0x5D, 0x80, 0x3B, 0x67, 0xF9, 0x32,
+ 0x69, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0xBF, 0xEC, 0xED, 0x2B, 0x30, 0x5D, 0x5D,
+ 0x80, 0x5D, 0x5D, 0x5D, 0x52, 0x30, 0x67, 0x2B,
+ 0xCF, 0xAA, 0xD8, 0x89, 0x89, 0x51, 0x66, 0x55,
+ 0x2A, 0x2A, 0xA5, 0x8F, 0x66, 0xA3, 0x2F, 0x2F,
+ 0xA3, 0xA3, 0x66, 0x98, 0x98, 0x2F, 0xB2, 0x2F,
+ 0xD1, 0x28, 0x56, 0xED, 0x62, 0x37, 0x5C, 0x79,
+ 0x8E, 0x2B, 0x2B, 0x30, 0x30, 0x30, 0x5D, 0x5D,
+ 0x5D, 0x5D, 0x5D, 0x80, 0x3B, 0xEE, 0x56, 0xA9,
+ 0x75, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
+ 0x20, 0x5F, 0x99, 0xD9, 0x45, 0x8D, 0x3B, 0x5D,
+ 0x5D, 0x3B, 0x5D, 0x8D, 0x2B, 0x79, 0x79, 0x41,
+ 0x83, 0xB2, 0xB2, 0x89, 0x89, 0x2F, 0xA0, 0x2A,
+ 0xAD, 0xA5, 0x98, 0x66, 0xA3, 0xB2, 0x2F, 0xB2,
+ 0xD8, 0xB2, 0xA3, 0x98, 0x98, 0x2F, 0x51, 0xB2,
+ 0xA3, 0x83, 0x3E, 0x25, 0xD5, 0xE5, 0x50, 0x8C,
+ 0xED, 0x24, 0x24, 0xF0, 0x45, 0x8E, 0x2B, 0x30,
+ 0x30, 0x5D, 0x3B, 0x30, 0xEE, 0xF0, 0xC6, 0x65,
+ 0x75, 0x71, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x2B, 0x2B, 0x2A, 0x2A, 0x2A, 0x2A, 0x2B,
- 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
- 0x27, 0x27, 0x27, 0x27, 0x32, 0x33, 0x34, 0x35,
- 0x36, 0x27, 0x27, 0x33, 0x25, 0x25, 0x24, 0x24,
- 0x24, 0x24, 0x23, 0x21, 0x20, 0x20, 0x2B, 0x2A,
- 0x28, 0x29, 0x29, 0x37, 0x2C, 0x2C, 0x29, 0x28,
- 0x2A, 0x2B, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2B, 0x2B,
- 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2A, 0x2B, 0x27,
- 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
- 0x27, 0x27, 0x27, 0x27, 0x2F, 0x32, 0x36, 0x27,
- 0x27, 0x27, 0x27, 0x33, 0x33, 0x33, 0x33, 0x33,
- 0x33, 0x33, 0x33, 0x25, 0x25, 0x24, 0x23, 0x21,
- 0x20, 0x2B, 0x2A, 0x29, 0x29, 0x2C, 0x2C, 0x2C,
- 0x29, 0x28, 0x2A, 0x2B, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x2B, 0x2B,
- 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x20, 0x21, 0x27,
- 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
- 0x27, 0x27, 0x27, 0x27, 0x38, 0x27, 0x27, 0x27,
- 0x27, 0x27, 0x27, 0x27, 0x23, 0x23, 0x24, 0x24,
- 0x25, 0x25, 0x33, 0x33, 0x33, 0x33, 0x33, 0x25,
- 0x24, 0x22, 0x20, 0x20, 0x2A, 0x28, 0x29, 0x2C,
- 0x2C, 0x2C, 0x29, 0x28, 0x2A, 0x2B, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x2B, 0x2B, 0x2B, 0x2B,
- 0x2B, 0x2B, 0x2B, 0x20, 0x21, 0x22, 0x23, 0x27,
- 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
- 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
- 0x27, 0x27, 0x27, 0x27, 0x2A, 0x2A, 0x2B, 0x2B,
- 0x20, 0x21, 0x22, 0x24, 0x20, 0x39, 0x39, 0x39,
- 0x39, 0x39, 0x3A, 0x3B, 0x22, 0x20, 0x2A, 0x28,
- 0x29, 0x2C, 0x2C, 0x2C, 0x29, 0x28, 0x2B, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B, 0x2B,
- 0x2B, 0x20, 0x21, 0x22, 0x22, 0x23, 0x24, 0x27,
- 0x27, 0x27, 0x3C, 0x36, 0x3C, 0x27, 0x27, 0x27,
- 0x27, 0x27, 0x27, 0x3D, 0x3E, 0x32, 0x27, 0x27,
- 0x27, 0x27, 0x27, 0x27, 0x3D, 0x39, 0x3F, 0x3F,
- 0x39, 0x2C, 0x20, 0x20, 0x39, 0x39, 0x39, 0x39,
- 0x39, 0x39, 0x39, 0x40, 0x40, 0x41, 0x22, 0x20,
- 0x2A, 0x28, 0x2C, 0x2C, 0x2C, 0x29, 0x29, 0x2A,
- 0x2B, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x2B, 0x2B, 0x2B, 0x2B, 0x20, 0x20,
- 0x21, 0x22, 0x22, 0x22, 0x23, 0x23, 0x22, 0x27,
- 0x27, 0x3C, 0x3C, 0x3D, 0x42, 0x3C, 0x27, 0x27,
- 0x3C, 0x27, 0x3C, 0x43, 0x44, 0x36, 0x42, 0x27,
- 0x27, 0x27, 0x27, 0x27, 0x3D, 0x28, 0x29, 0x2C,
- 0x2C, 0x45, 0x20, 0x39, 0x39, 0x39, 0x39, 0x39,
- 0x39, 0x46, 0x40, 0x47, 0x40, 0x47, 0x3A, 0x40,
- 0x22, 0x20, 0x2A, 0x29, 0x2C, 0x2C, 0x2C, 0x29,
- 0x28, 0x2B, 0x2B, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x2B, 0x2B, 0x2B, 0x2B, 0x20, 0x20, 0x22,
- 0x22, 0x22, 0x23, 0x22, 0x22, 0x21, 0x20, 0x27,
- 0x27, 0x44, 0x28, 0x24, 0x27, 0x2F, 0x3C, 0x27,
- 0x27, 0x38, 0x24, 0x2C, 0x2C, 0x48, 0x49, 0x36,
- 0x27, 0x27, 0x27, 0x27, 0x27, 0x28, 0x29, 0x29,
- 0x4A, 0x20, 0x3A, 0x40, 0x47, 0x40, 0x47, 0x40,
- 0x40, 0x47, 0x40, 0x40, 0x39, 0x39, 0x39, 0x4A,
- 0x25, 0x24, 0x22, 0x2B, 0x28, 0x29, 0x2C, 0x2C,
- 0x29, 0x28, 0x2A, 0x2B, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x2B, 0x2B, 0x20, 0x20, 0x20, 0x21, 0x22, 0x22,
- 0x22, 0x22, 0x22, 0x21, 0x20, 0x2B, 0x2A, 0x27,
- 0x3D, 0x4B, 0x48, 0x4C, 0x2B, 0x3C, 0x27, 0x3C,
- 0x3C, 0x23, 0x4D, 0x4E, 0x4F, 0x50, 0x33, 0x27,
- 0x27, 0x27, 0x27, 0x27, 0x27, 0x39, 0x3F, 0x39,
- 0x51, 0x20, 0x39, 0x39, 0x47, 0x40, 0x4D, 0x4D,
- 0x40, 0x52, 0x4D, 0x40, 0x47, 0x40, 0x39, 0x39,
- 0x53, 0x54, 0x25, 0x24, 0x20, 0x2A, 0x29, 0x2C,
- 0x2C, 0x2C, 0x29, 0x2A, 0x2B, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x22, 0x22,
- 0x22, 0x21, 0x20, 0x2B, 0x28, 0x2A, 0x20, 0x27,
- 0x36, 0x4F, 0x55, 0x48, 0x56, 0x3D, 0x3C, 0x3C,
- 0x32, 0x57, 0x56, 0x58, 0x49, 0x56, 0x56, 0x27,
- 0x27, 0x27, 0x27, 0x27, 0x27, 0x22, 0x20, 0x20,
- 0x41, 0x39, 0x39, 0x3A, 0x59, 0x5A, 0x59, 0x5B,
- 0x5C, 0x3A, 0x4D, 0x5D, 0x57, 0x39, 0x39, 0x4A,
- 0x5E, 0x33, 0x54, 0x33, 0x24, 0x22, 0x2B, 0x28,
- 0x2C, 0x2C, 0x2C, 0x29, 0x28, 0x2B, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x21, 0x21, 0x21, 0x22, 0x22, 0x21,
- 0x20, 0x2B, 0x2A, 0x2A, 0x20, 0x22, 0x22, 0x27,
- 0x5F, 0x2D, 0x3C, 0x60, 0x56, 0x54, 0x61, 0x49,
- 0x35, 0x56, 0x34, 0x27, 0x62, 0x27, 0x56, 0x39,
- 0x27, 0x27, 0x27, 0x27, 0x27, 0x30, 0x63, 0x54,
- 0x40, 0x64, 0x65, 0x66, 0x67, 0x67, 0x68, 0x5F,
- 0x2E, 0x69, 0x6A, 0x67, 0x5F, 0x3A, 0x39, 0x2C,
- 0x53, 0x23, 0x25, 0x54, 0x33, 0x25, 0x23, 0x20,
- 0x2A, 0x29, 0x2C, 0x2C, 0x29, 0x28, 0x2B, 0x20,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x21, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20,
- 0x2B, 0x2A, 0x20, 0x22, 0x22, 0x21, 0x2B, 0x27,
- 0x62, 0x36, 0x27, 0x33, 0x6B, 0x54, 0x3D, 0x3C,
- 0x49, 0x57, 0x27, 0x27, 0x27, 0x27, 0x56, 0x57,
- 0x27, 0x27, 0x27, 0x27, 0x27, 0x6C, 0x31, 0x6D,
- 0x64, 0x51, 0x6E, 0x2E, 0x2E, 0x6F, 0x5A, 0x70,
- 0x70, 0x71, 0x72, 0x67, 0x67, 0x69, 0x73, 0x46,
- 0x4A, 0x2A, 0x21, 0x25, 0x33, 0x54, 0x33, 0x24,
- 0x20, 0x2A, 0x29, 0x2C, 0x2C, 0x29, 0x28, 0x2B,
- 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x21, 0x21, 0x21, 0x21, 0x20, 0x20, 0x2B,
- 0x2B, 0x22, 0x22, 0x22, 0x2B, 0x28, 0x2A, 0x27,
- 0x27, 0x39, 0x3C, 0x3D, 0x45, 0x74, 0x75, 0x76,
- 0x76, 0x45, 0x27, 0x27, 0x27, 0x27, 0x56, 0x77,
- 0x27, 0x27, 0x27, 0x27, 0x27, 0x78, 0x78, 0x5E,
- 0x79, 0x7A, 0x7B, 0x6E, 0x5A, 0x5A, 0x70, 0x7C,
- 0x70, 0x5B, 0x7D, 0x5A, 0x66, 0x7E, 0x7F, 0x79,
- 0x48, 0x6B, 0x2C, 0x20, 0x24, 0x33, 0x54, 0x33,
- 0x24, 0x21, 0x2A, 0x29, 0x2C, 0x2C, 0x29, 0x28,
- 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x21, 0x21, 0x21, 0x20, 0x20, 0x2B, 0x2B, 0x21,
- 0x22, 0x22, 0x20, 0x28, 0x2B, 0x20, 0x22, 0x27,
- 0x27, 0x80, 0x27, 0x81, 0x82, 0x83, 0x84, 0x85,
- 0x74, 0x85, 0x84, 0x27, 0x3C, 0x4F, 0x4F, 0x66,
- 0x27, 0x27, 0x27, 0x27, 0x27, 0x22, 0x23, 0x5E,
- 0x64, 0x86, 0x79, 0x73, 0x87, 0x88, 0x7C, 0x5A,
- 0x5A, 0x71, 0x7D, 0x71, 0x89, 0x79, 0x8A, 0x8A,
- 0x51, 0x8B, 0x48, 0x39, 0x2A, 0x22, 0x33, 0x54,
- 0x33, 0x25, 0x22, 0x2B, 0x29, 0x2C, 0x2C, 0x29,
- 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x21, 0x21, 0x20, 0x20, 0x2B, 0x2B, 0x22, 0x23,
- 0x21, 0x2A, 0x2A, 0x20, 0x21, 0x23, 0x25, 0x27,
- 0x27, 0x55, 0x8C, 0x8D, 0x8E, 0x83, 0x8F, 0x90,
- 0x91, 0x92, 0x92, 0x85, 0x85, 0x93, 0x51, 0x27,
- 0x27, 0x27, 0x27, 0x27, 0x27, 0x2A, 0x29, 0x51,
- 0x79, 0x79, 0x94, 0x89, 0x89, 0x89, 0x5A, 0x95,
- 0x64, 0x88, 0x96, 0x97, 0x7A, 0x73, 0x98, 0x98,
- 0x99, 0x50, 0x50, 0x48, 0x6B, 0x28, 0x21, 0x25,
- 0x54, 0x54, 0x25, 0x22, 0x2B, 0x29, 0x2C, 0x29,
- 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x2B, 0x20, 0x22, 0x22, 0x20,
- 0x2B, 0x2B, 0x20, 0x22, 0x24, 0x25, 0x33, 0x27,
- 0x27, 0x9A, 0x9B, 0x9C, 0x9D, 0x83, 0x9E, 0x85,
- 0x9F, 0x92, 0x85, 0x85, 0x85, 0x85, 0x92, 0xA0,
- 0x27, 0x27, 0x27, 0x27, 0x27, 0xA1, 0x47, 0xA2,
- 0xA2, 0x94, 0xA3, 0x94, 0x95, 0x95, 0x73, 0x73,
- 0x95, 0x87, 0xA4, 0x5B, 0x97, 0x7B, 0x88, 0x98,
- 0xA2, 0x50, 0x48, 0x48, 0x48, 0x8B, 0x29, 0x20,
- 0x25, 0x54, 0x54, 0x25, 0x22, 0x2B, 0x29, 0x29,
- 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x20, 0x21, 0x22, 0x22, 0x2B, 0x2B,
- 0x20, 0x21, 0x23, 0x24, 0x25, 0x25, 0x33, 0x27,
- 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0x8F, 0x90, 0x90,
- 0x9F, 0x90, 0x85, 0x90, 0x85, 0x74, 0xAA, 0x81,
- 0x27, 0x27, 0x27, 0x27, 0x27, 0xAB, 0x40, 0xAC,
- 0x79, 0xA3, 0x89, 0xAD, 0x95, 0x6F, 0xAE, 0xAE,
- 0xAE, 0x5B, 0x59, 0x88, 0x7B, 0x89, 0x79, 0xAF,
- 0xA2, 0x6B, 0x48, 0x48, 0x48, 0x48, 0x50, 0x2C,
- 0x20, 0x24, 0x33, 0x54, 0x25, 0x22, 0x2A, 0x2A,
- 0x21, 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x20, 0x21, 0x23, 0x22, 0x2B, 0x20, 0x20,
- 0x22, 0x23, 0x24, 0x25, 0x24, 0x24, 0x22, 0x27,
- 0xB0, 0x8C, 0xAA, 0xB1, 0xB2, 0x84, 0x85, 0x9F,
- 0x85, 0x85, 0x85, 0xB3, 0xB4, 0xAA, 0xAA, 0xA0,
- 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x2A, 0xB5,
- 0xA3, 0xA3, 0xAC, 0x5D, 0xB6, 0xAE, 0xB7, 0x69,
- 0x73, 0x5B, 0x88, 0x89, 0x95, 0x73, 0x99, 0x99,
- 0x59, 0x2A, 0x39, 0x48, 0x48, 0x50, 0x48, 0x50,
- 0x2C, 0x20, 0x24, 0x33, 0x54, 0x25, 0x21, 0x20,
- 0x21, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x21, 0x23, 0x21, 0x2B, 0x20, 0x20, 0x22,
- 0x22, 0x24, 0x24, 0x23, 0x22, 0x20, 0x2A, 0x27,
- 0x27, 0xB0, 0x8C, 0xA9, 0xB2, 0x9E, 0x91, 0x85,
- 0x85, 0x93, 0xB8, 0x75, 0xAA, 0xA7, 0x8C, 0x27,
- 0x27, 0x27, 0x33, 0x3C, 0x27, 0x27, 0x2C, 0x7B,
- 0x55, 0x79, 0xA3, 0x5D, 0xB9, 0x43, 0x7F, 0x7E,
- 0x5F, 0x5A, 0x5A, 0x95, 0x64, 0x73, 0x58, 0x64,
- 0x5C, 0x25, 0x2B, 0x3F, 0x48, 0x48, 0x8B, 0x48,
- 0x48, 0x2C, 0x20, 0x25, 0x54, 0x33, 0x24, 0x22,
- 0x2B, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
- 0x21, 0x23, 0x21, 0x20, 0x20, 0x20, 0x21, 0x22,
- 0x24, 0x23, 0x22, 0x21, 0x2B, 0x20, 0x54, 0x27,
- 0x27, 0x8B, 0x81, 0xA5, 0x93, 0x93, 0x74, 0xA5,
- 0xBA, 0x75, 0xBB, 0xBC, 0xB4, 0x6D, 0x50, 0x6B,
- 0x27, 0x27, 0x30, 0x33, 0x49, 0x27, 0x27, 0x5E,
- 0x6F, 0x73, 0x94, 0xBD, 0x4E, 0x5D, 0x7F, 0x7F,
- 0xB7, 0x68, 0x73, 0x6E, 0xB7, 0x7F, 0x95, 0x97,
- 0x47, 0x63, 0x25, 0x20, 0x3F, 0x48, 0x8B, 0x8B,
- 0x48, 0x48, 0x2C, 0x20, 0x25, 0x54, 0x33, 0x25,
- 0x2B, 0x2B, 0x2B, 0x20, 0x20, 0x20, 0x21, 0x21,
- 0x23, 0x21, 0x20, 0x20, 0x20, 0x20, 0x24, 0x24,
- 0x22, 0x21, 0x20, 0x2A, 0x33, 0x30, 0x30, 0x27,
- 0x27, 0x50, 0xBE, 0xBF, 0x9A, 0xB3, 0x9B, 0xBB,
- 0xBB, 0xC0, 0x8C, 0xC1, 0x8B, 0xC2, 0x47, 0x8B,
- 0x27, 0x27, 0x38, 0x63, 0x63, 0x27, 0x27, 0xC3,
- 0xB5, 0x95, 0x72, 0x95, 0x6F, 0x69, 0x7E, 0x66,
- 0x7E, 0x7F, 0x6E, 0x7E, 0x95, 0x95, 0x73, 0x70,
- 0x30, 0x30, 0x30, 0x33, 0x20, 0x3F, 0x48, 0x8B,
- 0x6B, 0x48, 0x50, 0x29, 0x21, 0x33, 0x54, 0x33,
- 0x2A, 0x2B, 0x2B, 0x20, 0x20, 0x21, 0x21, 0x23,
- 0x21, 0x20, 0x20, 0x20, 0x20, 0x24, 0x24, 0x22,
- 0x20, 0x2B, 0x21, 0xC4, 0x30, 0x60, 0x30, 0x27,
- 0x27, 0xC5, 0x8B, 0x39, 0xC6, 0xC7, 0xA6, 0xA6,
- 0xC8, 0x9A, 0x3B, 0x39, 0x50, 0x56, 0x56, 0x4F,
- 0x33, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x48,
- 0x59, 0x94, 0x73, 0xAE, 0xB7, 0xB7, 0x7E, 0x7E,
- 0x7E, 0x7E, 0x7E, 0x5A, 0x70, 0x7C, 0x71, 0xC3,
- 0x63, 0x30, 0x60, 0x78, 0x54, 0x20, 0x6B, 0x48,
- 0x6B, 0x6B, 0x50, 0x50, 0x29, 0x22, 0x33, 0x33,
- 0x2A, 0x2B, 0x20, 0x20, 0x21, 0x22, 0x22, 0x22,
- 0x21, 0x20, 0x20, 0x20, 0x24, 0x24, 0x20, 0x20,
- 0x2B, 0x24, 0x30, 0x60, 0x60, 0x30, 0xAB, 0x27,
- 0x27, 0x40, 0x4C, 0x50, 0x39, 0x87, 0xC3, 0x53,
- 0x37, 0x48, 0x37, 0x48, 0xC9, 0x56, 0xB9, 0x56,
- 0xCA, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x3C,
- 0x51, 0x5A, 0x6E, 0xB7, 0xB7, 0x7E, 0x7E, 0x7E,
- 0x7E, 0x7E, 0x7F, 0xB7, 0x5A, 0x7C, 0x5B, 0x37,
- 0x23, 0x63, 0x31, 0x6C, 0xCB, 0x63, 0x20, 0x6B,
- 0x50, 0x3F, 0x39, 0x50, 0x8B, 0x28, 0x24, 0x24,
- 0x2B, 0x2B, 0x20, 0x21, 0x22, 0x22, 0x22, 0x21,
- 0x20, 0x20, 0x20, 0x23, 0x23, 0x20, 0x20, 0x2B,
- 0x33, 0x78, 0xCB, 0x60, 0x30, 0x22, 0x3D, 0x27,
- 0x2F, 0x56, 0x4E, 0x8B, 0x6B, 0x39, 0x48, 0x8B,
- 0x6B, 0x8B, 0x80, 0xC9, 0xB9, 0xB9, 0x56, 0xB9,
- 0x56, 0x34, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
- 0x48, 0xB5, 0xB7, 0xB7, 0x7E, 0x7E, 0x2E, 0x7E,
- 0x7E, 0x7E, 0x7F, 0x7C, 0x65, 0x71, 0x3A, 0x48,
- 0x2C, 0x24, 0x30, 0x6C, 0x34, 0x6C, 0xC4, 0x20,
- 0x8B, 0x50, 0x39, 0x39, 0x48, 0x6B, 0x2B, 0x22,
- 0x2B, 0x20, 0x21, 0x22, 0x23, 0x23, 0x22, 0x21,
- 0x20, 0x2B, 0x23, 0x22, 0x20, 0x2B, 0x2B, 0x54,
- 0x60, 0x31, 0xCB, 0x54, 0x20, 0x3D, 0x36, 0x27,
- 0x4E, 0xB9, 0x56, 0x56, 0x8B, 0x6B, 0x50, 0x6B,
- 0x40, 0x56, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9,
- 0x56, 0x56, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
- 0x27, 0x7B, 0x6E, 0xB7, 0xB7, 0xB7, 0x7E, 0x7F,
- 0xB7, 0xB7, 0x7F, 0x7E, 0x6F, 0x5B, 0x29, 0x2C,
- 0x48, 0x39, 0x24, 0x60, 0x58, 0xAF, 0xCC, 0x63,
- 0x20, 0x8B, 0x8B, 0x39, 0x39, 0x48, 0x3F, 0x28,
- 0x20, 0x20, 0x22, 0x23, 0x23, 0x23, 0x22, 0x20,
- 0x2B, 0x22, 0x22, 0x2B, 0x2B, 0x20, 0x54, 0xCB,
- 0x31, 0xCB, 0x25, 0x20, 0x27, 0x27, 0x27, 0x48,
- 0xB9, 0x56, 0xB9, 0x56, 0x4F, 0x48, 0x47, 0x57,
- 0x56, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56,
- 0xB9, 0x56, 0x62, 0x27, 0x27, 0x27, 0x27, 0x27,
- 0x27, 0x48, 0x6F, 0x69, 0xB7, 0xB7, 0xB7, 0x7F,
- 0xB7, 0xB7, 0xB7, 0x73, 0x59, 0x50, 0x29, 0x2B,
- 0x28, 0x8B, 0x39, 0x25, 0x31, 0x55, 0xB6, 0x34,
- 0x63, 0x2B, 0x48, 0x6B, 0x2C, 0x39, 0x47, 0x6B,
- 0x22, 0x22, 0x23, 0x24, 0x23, 0x22, 0x20, 0x2B,
- 0x20, 0x22, 0x2A, 0x2B, 0x20, 0x33, 0xCB, 0x31,
- 0x78, 0x24, 0x21, 0xCD, 0x27, 0x27, 0x27, 0x56,
- 0x56, 0xB9, 0x56, 0xB9, 0x56, 0x56, 0x56, 0xB9,
- 0x56, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56,
- 0xB9, 0x56, 0xC9, 0x27, 0x27, 0x27, 0x27, 0x27,
- 0x27, 0x27, 0x41, 0x64, 0xB7, 0xB7, 0xB7, 0x7F,
- 0x68, 0xB7, 0xAE, 0xA3, 0x23, 0x39, 0x8B, 0x2A,
- 0x20, 0x20, 0x39, 0x6B, 0x25, 0xCC, 0x43, 0x43,
- 0x34, 0x63, 0x2A, 0x48, 0x3F, 0x39, 0x6B, 0x6B,
- 0x24, 0x23, 0x24, 0x24, 0x23, 0x21, 0x2B, 0x2B,
- 0x22, 0x2B, 0x2B, 0x20, 0x24, 0x78, 0x31, 0x30,
- 0x23, 0x21, 0x21, 0x27, 0x27, 0x27, 0x80, 0x56,
- 0x56, 0xB9, 0x56, 0xB9, 0x56, 0xB9, 0x56, 0xB9,
- 0x56, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9,
- 0x56, 0xB9, 0x56, 0x3C, 0x27, 0x27, 0x27, 0x27,
- 0x27, 0x27, 0x27, 0xCE, 0x8A, 0xAE, 0x6F, 0xB7,
- 0x6F, 0x89, 0x71, 0x78, 0x63, 0x23, 0x39, 0x6B,
- 0x2B, 0x20, 0x20, 0x2C, 0x6B, 0x25, 0x34, 0x42,
- 0x42, 0x34, 0x54, 0x29, 0x48, 0x3F, 0x39, 0x3F,
- 0x25, 0x24, 0x25, 0x24, 0x22, 0x20, 0x2A, 0x21,
- 0x2B, 0x2A, 0x20, 0x22, 0x30, 0x60, 0x30, 0x22,
- 0x21, 0x22, 0x27, 0x27, 0x27, 0x2D, 0x4C, 0x56,
- 0x56, 0xB9, 0xB9, 0x56, 0xB9, 0xB9, 0x56, 0x56,
- 0xB9, 0xB9, 0xB9, 0x56, 0x56, 0x56, 0xB9, 0xB9,
- 0xB9, 0xB9, 0x56, 0x2E, 0x27, 0x27, 0x27, 0x27,
- 0x27, 0x27, 0x27, 0x40, 0x97, 0x95, 0x5A, 0x71,
- 0x7C, 0xCE, 0x40, 0x60, 0x31, 0x30, 0x23, 0x3F,
- 0x3F, 0x20, 0x20, 0x20, 0x29, 0x8B, 0x33, 0x58,
- 0x66, 0x43, 0xCC, 0x25, 0x39, 0x50, 0x6B, 0x2C,
- 0x33, 0x25, 0x25, 0x23, 0x20, 0x2A, 0x2B, 0x20,
- 0x2A, 0x2B, 0x22, 0x54, 0x30, 0x30, 0x24, 0x22,
- 0x21, 0x27, 0x27, 0x27, 0x27, 0xAF, 0x29, 0x4E,
- 0x4F, 0xB9, 0x56, 0xB9, 0x4D, 0x4D, 0x77, 0xC9,
- 0xB9, 0xB9, 0xB9, 0x56, 0xC9, 0x4D, 0x4D, 0x80,
- 0x4C, 0x40, 0xC9, 0x4D, 0x27, 0x27, 0x27, 0x27,
- 0x27, 0x27, 0x27, 0x27, 0xCF, 0x97, 0x97, 0xCE,
- 0x86, 0xD0, 0x54, 0x6C, 0x58, 0x34, 0x60, 0x23,
- 0x6B, 0x39, 0x20, 0x20, 0x20, 0x28, 0x6B, 0x54,
- 0xD1, 0x66, 0xB6, 0x60, 0x22, 0x6B, 0x8B, 0x2C,
- 0x54, 0x33, 0x24, 0x22, 0x2B, 0x28, 0x20, 0x28,
- 0x2B, 0x20, 0x25, 0xC4, 0x30, 0x25, 0x22, 0x21,
- 0x26, 0x27, 0x27, 0x27, 0x27, 0x20, 0x4B, 0x52,
- 0x80, 0x4F, 0xB9, 0x56, 0xB9, 0x80, 0x56, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0x4D, 0x80, 0x50, 0x48,
- 0x50, 0x50, 0x50, 0x56, 0x3D, 0x27, 0x36, 0x27,
- 0x27, 0x27, 0x27, 0x3C, 0x46, 0xC3, 0x86, 0x86,
- 0xD0, 0x39, 0x24, 0x6C, 0xD1, 0x43, 0x43, 0x6C,
- 0x24, 0x6B, 0x2C, 0x20, 0x20, 0x20, 0x29, 0x39,
- 0x63, 0xD1, 0x42, 0x55, 0xC4, 0x2B, 0x8B, 0x39,
- 0x54, 0x25, 0x24, 0x20, 0x2A, 0x2A, 0x28, 0x28,
- 0x20, 0x22, 0x54, 0x63, 0x25, 0x24, 0x22, 0x22,
- 0x27, 0x27, 0x27, 0x27, 0x27, 0x28, 0x77, 0x56,
- 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0xC9, 0x56, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x4F,
- 0x77, 0x47, 0x8B, 0x40, 0x56, 0x27, 0x27, 0x49,
- 0x2D, 0x27, 0x27, 0x27, 0x39, 0x40, 0x39, 0x39,
- 0x28, 0x3F, 0x39, 0x33, 0x58, 0x66, 0x35, 0x2E,
- 0x58, 0x24, 0x8B, 0x29, 0x20, 0x20, 0x20, 0x39,
- 0x29, 0x30, 0x55, 0xB6, 0xCC, 0x25, 0x29, 0x39,
- 0x54, 0x25, 0x22, 0x2B, 0x29, 0x2A, 0x29, 0x2B,
- 0x22, 0x24, 0x54, 0x33, 0x25, 0x22, 0x2B, 0x54,
- 0x27, 0x27, 0x62, 0x27, 0x30, 0x80, 0xB9, 0x56,
- 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0x56, 0x4D, 0x8B, 0x77, 0x36, 0x27, 0x27,
- 0x3C, 0x2F, 0x27, 0x27, 0x39, 0x39, 0x39, 0x47,
- 0x20, 0x2B, 0x2C, 0x39, 0x33, 0xB6, 0x35, 0x35,
- 0x35, 0xAF, 0x24, 0x48, 0x2A, 0x20, 0x20, 0x20,
- 0x8B, 0x2B, 0x78, 0xAF, 0x58, 0x30, 0x21, 0x28,
- 0x33, 0x25, 0x21, 0x28, 0x29, 0x29, 0x28, 0x20,
- 0x24, 0x33, 0x54, 0x33, 0x23, 0x20, 0x24, 0xD2,
- 0x27, 0x49, 0x27, 0x27, 0x56, 0xB9, 0xB9, 0x56,
- 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0xB9, 0x56, 0xC9, 0x50, 0x56, 0x27, 0x27,
- 0x3D, 0x38, 0x3D, 0x27, 0x27, 0x47, 0x39, 0x39,
- 0x28, 0x20, 0x20, 0x2A, 0x39, 0x54, 0x43, 0x35,
- 0x35, 0x35, 0xAF, 0x23, 0x48, 0x2B, 0x20, 0x20,
- 0x2B, 0x48, 0x22, 0x60, 0x34, 0xCB, 0x25, 0x21,
- 0x33, 0x24, 0x2B, 0x29, 0x29, 0x29, 0x2B, 0x22,
- 0x25, 0x54, 0x54, 0x25, 0x22, 0x2B, 0x33, 0x27,
- 0x27, 0x32, 0x27, 0x30, 0x56, 0xB9, 0xB9, 0x56,
- 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0xB9, 0x56, 0x56, 0xC9, 0x4C, 0x36, 0x3C,
- 0x62, 0x2F, 0x2E, 0x27, 0x27, 0x54, 0x47, 0x47,
- 0x8B, 0x2B, 0x20, 0x20, 0x20, 0x3F, 0x54, 0x2E,
- 0x35, 0x35, 0x35, 0x34, 0x21, 0x8B, 0x2A, 0x20,
- 0x20, 0x2C, 0x6B, 0x25, 0x60, 0x60, 0x54, 0x23,
- 0x25, 0x22, 0x2A, 0x2C, 0x29, 0x28, 0x20, 0x24,
- 0x54, 0x63, 0x54, 0x24, 0x2B, 0x22, 0x24, 0x27,
- 0x36, 0x27, 0x27, 0x56, 0x56, 0xB9, 0xB9, 0x56,
- 0xB9, 0xB9, 0xB9, 0x56, 0x56, 0x56, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56, 0x4C, 0x36,
- 0x66, 0xD3, 0x27, 0x2F, 0x27, 0x54, 0x54, 0x27,
- 0x26, 0x6B, 0x20, 0x20, 0x20, 0x20, 0x6B, 0x63,
- 0x35, 0x35, 0x35, 0x62, 0xCB, 0x2A, 0x3F, 0x28,
- 0x2B, 0x2A, 0x50, 0x29, 0x33, 0x30, 0x54, 0x25,
- 0x24, 0x20, 0x29, 0x2C, 0x2C, 0x2A, 0x21, 0x33,
- 0xC4, 0xC4, 0x33, 0x21, 0x29, 0x22, 0x27, 0x27,
- 0x99, 0x27, 0x31, 0xB9, 0xB9, 0xB9, 0xB9, 0x56,
- 0xB9, 0xB9, 0xB9, 0x56, 0x56, 0x56, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56, 0x56, 0x3D,
- 0x3D, 0x3C, 0x3C, 0x55, 0x54, 0x54, 0x54, 0x20,
- 0x27, 0x2C, 0x39, 0x20, 0x20, 0x20, 0x20, 0x48,
- 0x30, 0x62, 0x35, 0x35, 0x42, 0x54, 0x39, 0x39,
- 0x2C, 0x28, 0x3F, 0x8B, 0x20, 0x33, 0x54, 0x24,
- 0x22, 0x2B, 0x2C, 0x2C, 0x2C, 0x2B, 0x24, 0x54,
- 0x30, 0xC4, 0x25, 0x2B, 0x28, 0x2B, 0x27, 0x3D,
- 0x27, 0x27, 0x56, 0xB9, 0xB9, 0xB9, 0xB9, 0x56,
- 0xB9, 0xB9, 0x56, 0x56, 0x4F, 0x56, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0x56, 0x56, 0x27,
- 0x20, 0x20, 0x20, 0x54, 0x54, 0x54, 0x54, 0x20,
- 0x20, 0x2D, 0x2D, 0x29, 0x20, 0x20, 0x20, 0x20,
- 0x48, 0x60, 0x66, 0x35, 0x62, 0x34, 0x22, 0x2C,
- 0x2C, 0x3F, 0x6B, 0x48, 0x2C, 0x22, 0x23, 0x23,
- 0x20, 0x2A, 0x2C, 0x29, 0x29, 0x20, 0x25, 0xC4,
- 0x30, 0x54, 0x22, 0x29, 0x28, 0xD2, 0x27, 0x35,
- 0x27, 0x49, 0x56, 0xB9, 0xB9, 0xB9, 0xB9, 0x56,
- 0xB9, 0xB9, 0x56, 0x4F, 0x56, 0x56, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0xB9, 0xB9, 0x56, 0x56, 0x56, 0x40, 0x20,
- 0x20, 0x54, 0x54, 0x54, 0x20, 0x20, 0x20, 0x20,
- 0x2D, 0x2D, 0x2D, 0x49, 0x20, 0x20, 0x20, 0x20,
- 0x20, 0x6B, 0x6C, 0x42, 0x2E, 0xB6, 0x54, 0x28,
- 0x29, 0x2C, 0x6B, 0x48, 0x3F, 0x2A, 0x20, 0x22,
- 0x2B, 0x28, 0x2C, 0x28, 0x29, 0x20, 0x33, 0x30,
- 0x30, 0x54, 0x20, 0x2C, 0x29, 0x27, 0x27, 0x3D,
- 0x27, 0x40, 0x56, 0xB9, 0x56, 0x56, 0xB9, 0x56,
- 0xB9, 0x56, 0x56, 0x4D, 0x56, 0x56, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0xB9, 0x56, 0x56, 0x63, 0x56, 0x54, 0x54,
- 0x54, 0x54, 0x20, 0xD3, 0x45, 0x51, 0x51, 0x49,
- 0x7C, 0x2D, 0x2D, 0x49, 0x49, 0x20, 0x20, 0x20,
- 0x20, 0x2A, 0x2A, 0xCC, 0xB6, 0x8A, 0x60, 0x22,
- 0x28, 0x29, 0x3F, 0x6B, 0x39, 0x29, 0x2B, 0x20,
- 0x28, 0x2C, 0x28, 0x2A, 0x2A, 0x24, 0xC4, 0x30,
- 0xC4, 0x33, 0x2B, 0x39, 0xCD, 0x27, 0x3C, 0x27,
- 0x27, 0x56, 0xB9, 0x56, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0x56, 0x56, 0x4D, 0x56, 0x56, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0xB9, 0x56, 0x63, 0x63, 0x49, 0x2D, 0x20,
- 0x20, 0x2D, 0xD3, 0x49, 0x66, 0x2D, 0x49, 0x49,
- 0x49, 0x49, 0x49, 0x49, 0x49, 0x8B, 0x2B, 0x20,
- 0x20, 0x20, 0x39, 0x23, 0x6C, 0xAF, 0xCB, 0x23,
- 0x28, 0x28, 0x29, 0x2A, 0x2A, 0x2A, 0x2A, 0x20,
- 0x29, 0x39, 0x2B, 0x2B, 0x2B, 0x25, 0x78, 0xC4,
- 0x63, 0x23, 0x29, 0x39, 0x27, 0x27, 0x3D, 0x27,
- 0x27, 0x56, 0xB9, 0x56, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0x56, 0x56, 0x80, 0x4F, 0x56, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0xB9, 0xB9, 0xB9, 0x2D, 0x49, 0x2D, 0x49,
- 0x49, 0x2D, 0x49, 0x2D, 0x49, 0x2D, 0x2D, 0x2D,
- 0x49, 0x49, 0x35, 0x49, 0x2D, 0x2D, 0x39, 0x28,
- 0x20, 0x20, 0x2A, 0x28, 0x33, 0x60, 0xC4, 0x22,
- 0x2C, 0x2A, 0x2A, 0x22, 0x23, 0x22, 0x20, 0x21,
- 0x2C, 0x29, 0x20, 0x2B, 0x2B, 0x54, 0x30, 0xC4,
- 0x63, 0x22, 0x2C, 0x27, 0x27, 0x27, 0x3D, 0x27,
- 0x27, 0x56, 0x56, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0x56, 0x56, 0x80, 0x56, 0x56, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0xB9, 0xB9, 0xB9, 0x2D, 0x49, 0x2D, 0x49,
- 0x61, 0x49, 0x2D, 0x49, 0x49, 0x2D, 0x2D, 0x49,
- 0x49, 0x49, 0x2F, 0x49, 0x2D, 0x78, 0x29, 0x28,
- 0x2C, 0x2A, 0x2B, 0x39, 0x2B, 0x25, 0x33, 0x20,
- 0x2C, 0x20, 0x2A, 0x24, 0x54, 0x54, 0x23, 0x23,
- 0x2C, 0x2A, 0x22, 0x2B, 0x20, 0x63, 0x30, 0x63,
- 0xC4, 0x21, 0x39, 0x27, 0x27, 0x27, 0x35, 0x36,
- 0x27, 0x56, 0x56, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0xB9, 0x56, 0x80, 0x56, 0x56, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0xB9, 0xB9, 0x56, 0x2D, 0x49, 0x49, 0x49,
- 0x49, 0x27, 0x27, 0x2D, 0x38, 0x27, 0x36, 0x36,
- 0x49, 0x27, 0x49, 0x2D, 0x2D, 0x44, 0x24, 0x2B,
- 0x20, 0x2C, 0x3F, 0x6B, 0x2A, 0x20, 0x21, 0x28,
- 0x2C, 0x20, 0x2B, 0x24, 0x30, 0xCB, 0x63, 0x54,
- 0x28, 0x20, 0x24, 0x2B, 0x23, 0x78, 0xC4, 0x63,
- 0x63, 0x2B, 0x3F, 0x27, 0x27, 0x27, 0x38, 0x33,
- 0x3D, 0xB9, 0x56, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0xB9, 0x56, 0x80, 0x56, 0x56, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0xB9, 0xB9, 0x56, 0x63, 0x49, 0x49, 0x49,
- 0x49, 0x49, 0x3D, 0x3D, 0x27, 0x27, 0x27, 0x2D,
- 0x49, 0x49, 0x49, 0x2D, 0x62, 0x5F, 0xC4, 0x20,
- 0x22, 0x2A, 0x6B, 0x8B, 0x2C, 0x2B, 0x2A, 0x3F,
- 0x3F, 0x2A, 0x21, 0x21, 0xCB, 0x58, 0x6C, 0x60,
- 0x20, 0x23, 0x24, 0x2A, 0x25, 0x78, 0x63, 0x63,
- 0x54, 0x2A, 0x28, 0x27, 0x27, 0x27, 0x27, 0x62,
- 0x3C, 0xB9, 0x56, 0x56, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0x56, 0x56, 0x80, 0x56, 0x56, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0x49, 0x2D, 0x2D,
- 0x2D, 0x3D, 0x2F, 0x3C, 0x2D, 0x3C, 0x27, 0x38,
- 0x2D, 0x49, 0x2D, 0x2D, 0xD1, 0x43, 0x30, 0x20,
- 0x24, 0x21, 0x21, 0x21, 0x2B, 0x2A, 0x29, 0x8B,
- 0x6B, 0x29, 0x2B, 0x2A, 0x30, 0x55, 0x55, 0x34,
- 0x22, 0x23, 0x24, 0x29, 0x54, 0x30, 0x63, 0x63,
- 0x25, 0x29, 0x22, 0x3C, 0xA5, 0xD4, 0xD5, 0x27,
- 0x31, 0x56, 0x56, 0x56, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0x56, 0x56, 0x80, 0xB9, 0x56, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0x56, 0x2D, 0x2E,
- 0x3E, 0x27, 0x27, 0x27, 0x27, 0x27, 0x36, 0x44,
- 0x3C, 0x27, 0x2D, 0xC4, 0x78, 0xCC, 0x54, 0x2B,
- 0x25, 0x24, 0x63, 0x60, 0x63, 0x24, 0x2A, 0x6B,
- 0x3F, 0x39, 0x28, 0x21, 0x33, 0xB6, 0x44, 0x58,
- 0x22, 0x23, 0x24, 0x2A, 0x30, 0x30, 0x63, 0x63,
- 0x24, 0x39, 0x22, 0xBB, 0x9C, 0xB2, 0x9D, 0xA8,
- 0x27, 0x8B, 0x56, 0x56, 0xB9, 0x56, 0xB9, 0xB9,
- 0x56, 0xB9, 0x56, 0x80, 0xB9, 0x56, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0xB9, 0xB9, 0x56, 0x56, 0xD6, 0xD6, 0xD7,
- 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x32,
- 0x3D, 0x27, 0x39, 0x33, 0xC4, 0xC4, 0x22, 0x28,
- 0x25, 0x54, 0x30, 0xD1, 0xD1, 0x60, 0x23, 0x6B,
- 0x3F, 0x39, 0x2C, 0x2B, 0x20, 0x58, 0x8A, 0x58,
- 0x22, 0x23, 0x23, 0x2B, 0x78, 0x30, 0xC4, 0xC4,
- 0x23, 0x29, 0xBB, 0xBB, 0xD8, 0xB2, 0x9D, 0xA9,
- 0xA9, 0x3C, 0x60, 0xB9, 0xB9, 0xB9, 0xB9, 0xB9,
- 0x56, 0xB9, 0x56, 0x80, 0xB9, 0x56, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0xB9, 0xB9, 0x56, 0xD9, 0x85, 0x85, 0x85,
- 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x2D,
- 0xA0, 0x83, 0x2C, 0x21, 0x30, 0x33, 0x29, 0x29,
- 0x21, 0x33, 0x54, 0x42, 0x66, 0x55, 0xC4, 0x29,
- 0x8B, 0x2C, 0x39, 0x28, 0x29, 0x31, 0x44, 0x58,
- 0x23, 0x23, 0x21, 0x20, 0x30, 0xC4, 0xC4, 0x30,
- 0x21, 0x20, 0xBB, 0xBC, 0xDA, 0xDB, 0xDC, 0xB2,
- 0x83, 0xB4, 0x3C, 0x2F, 0xB9, 0x56, 0x56, 0xB9,
- 0x56, 0xB9, 0x56, 0x80, 0x56, 0x56, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0x56, 0x56, 0x56, 0xA7, 0xD4, 0x85, 0x82,
- 0x3C, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x61,
- 0x9E, 0x90, 0xDD, 0x21, 0x33, 0x25, 0x2C, 0x39,
- 0x2A, 0x24, 0x24, 0x42, 0x62, 0x43, 0x34, 0x22,
- 0x50, 0x39, 0x2C, 0x2C, 0x2A, 0x54, 0xD1, 0x58,
- 0x22, 0x22, 0x2B, 0x22, 0x30, 0xC4, 0x30, 0x60,
- 0x20, 0xDE, 0xBB, 0xD9, 0x84, 0x84, 0xDF, 0xA9,
- 0xDB, 0xDB, 0x61, 0x27, 0x38, 0x4D, 0x56, 0x56,
- 0x56, 0xB9, 0x56, 0xB9, 0x56, 0x56, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0x56, 0x56, 0x56, 0x8D, 0xD9, 0xD5, 0xA6,
- 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0xBB,
- 0x85, 0xDB, 0xDD, 0x21, 0x22, 0x22, 0x3F, 0x39,
- 0x2C, 0x2B, 0x25, 0x34, 0x62, 0x66, 0xD1, 0xC4,
- 0x6B, 0x39, 0x2C, 0x39, 0x29, 0x21, 0x58, 0xCC,
- 0x22, 0x21, 0x29, 0x23, 0x30, 0x30, 0x30, 0x5E,
- 0x82, 0xBB, 0xE0, 0xB1, 0xE1, 0x9C, 0xD4, 0xDC,
- 0x9D, 0xA9, 0xE2, 0x27, 0x27, 0x27, 0x4D, 0x56,
- 0x56, 0xB9, 0x56, 0xB9, 0x56, 0x56, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0x56, 0x4C, 0x48, 0xA8, 0xA8, 0xE3, 0x8C,
- 0xC6, 0x3C, 0x27, 0x27, 0x27, 0xE4, 0xA6, 0xE5,
- 0x83, 0xA9, 0xE6, 0xAF, 0x54, 0x2B, 0x8B, 0x39,
- 0x39, 0x29, 0x20, 0x54, 0x42, 0x42, 0xB6, 0xCC,
- 0x2A, 0x29, 0x39, 0x39, 0x2C, 0x2C, 0xCC, 0xCC,
- 0x22, 0x20, 0x39, 0xE7, 0xC0, 0xD9, 0xA7, 0xBC,
- 0x8D, 0xAA, 0x9C, 0xE8, 0x9C, 0x9D, 0xD4, 0xD4,
- 0xD8, 0xA9, 0x84, 0xC7, 0x27, 0x27, 0x27, 0x2A,
- 0x56, 0x56, 0x56, 0xB9, 0x56, 0x56, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0x56, 0x56, 0x48, 0x50, 0xAA, 0xE3, 0xE3, 0xC0,
- 0xA6, 0x9A, 0xBA, 0xC8, 0x9A, 0xDE, 0x9B, 0xD5,
- 0xE8, 0xD8, 0xD5, 0x2E, 0x58, 0x33, 0x6B, 0x39,
- 0x2C, 0x39, 0x29, 0x28, 0xD1, 0x43, 0xB6, 0xAF,
- 0x23, 0x28, 0x2C, 0x39, 0x39, 0x8B, 0x30, 0x31,
- 0x21, 0x20, 0x3F, 0xBB, 0xDF, 0xDF, 0xD5, 0xA8,
- 0xD5, 0x9C, 0x8E, 0xB2, 0x9D, 0xE9, 0xD4, 0xD8,
- 0x90, 0xB2, 0xA9, 0x8F, 0x27, 0x27, 0x27, 0x27,
- 0x2F, 0x56, 0x56, 0xB9, 0x56, 0x56, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0x56, 0xB9, 0x48, 0x48, 0x75, 0xE3, 0xAA, 0xAA,
- 0xC0, 0xB4, 0xB4, 0xB4, 0x75, 0x9B, 0xD9, 0x83,
- 0x9D, 0x90, 0xDF, 0xDD, 0x8A, 0x31, 0x4B, 0x2C,
- 0x2C, 0x29, 0x2C, 0x3F, 0x6C, 0x55, 0xD1, 0x55,
- 0x54, 0x29, 0x28, 0x39, 0x39, 0x6B, 0x24, 0x60,
- 0x20, 0x2B, 0x3F, 0xA7, 0xB1, 0x9D, 0xA9, 0x8E,
- 0xE5, 0xE5, 0xDF, 0xE0, 0xA9, 0x9D, 0xDF, 0xDF,
- 0xEA, 0x9D, 0xB2, 0x84, 0xAA, 0x27, 0x27, 0x27,
- 0x27, 0x35, 0x56, 0x56, 0x56, 0x56, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0xB9, 0x48, 0x48, 0xA6, 0x9B, 0xE3, 0xAA,
- 0xAA, 0x9B, 0x9B, 0x9B, 0xAA, 0xE3, 0xD5, 0xD4,
- 0x9D, 0xA9, 0xA9, 0x9D, 0xEB, 0xAF, 0x23, 0x28,
- 0x2C, 0x29, 0x28, 0x39, 0x54, 0xCC, 0xAF, 0x55,
- 0x30, 0x29, 0x2B, 0x2C, 0x39, 0x39, 0x2B, 0xC4,
- 0x2B, 0x29, 0x39, 0xA7, 0x8E, 0x9D, 0x83, 0xE5,
- 0xB1, 0xDB, 0xDC, 0xE0, 0xDC, 0x84, 0xE9, 0x84,
- 0x83, 0xD4, 0xEC, 0x83, 0x8F, 0xE4, 0x27, 0x27,
- 0x27, 0x27, 0x56, 0x56, 0x56, 0x56, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0xB9, 0x56, 0x40, 0x50, 0x9A, 0x75, 0xE3, 0xE3,
- 0xE3, 0xD9, 0x8D, 0xAA, 0xD9, 0xA8, 0xB2, 0xDC,
- 0xB2, 0x8D, 0x84, 0xEA, 0xB1, 0xEB, 0x54, 0x29,
- 0x28, 0x2C, 0x2A, 0x28, 0x2B, 0x78, 0xCC, 0x58,
- 0xCB, 0x20, 0x20, 0x29, 0x39, 0x39, 0x2C, 0x25,
- 0x29, 0x2C, 0x39, 0xBB, 0xD9, 0xD9, 0x9D, 0x9D,
- 0xB2, 0xB1, 0xD4, 0xDB, 0xB1, 0x9D, 0xD4, 0xEA,
- 0xB1, 0x8D, 0xD8, 0x8E, 0x8F, 0xAA, 0x27, 0x27,
- 0x27, 0x3D, 0x56, 0xB9, 0x56, 0xB9, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0x56,
- 0x56, 0x56, 0x47, 0xE4, 0xA6, 0x75, 0xAA, 0xA8,
- 0x9C, 0x9C, 0xE1, 0x9C, 0x9C, 0x8E, 0xD8, 0x9D,
- 0xA9, 0xDB, 0xA9, 0xDC, 0xD8, 0xDA, 0xD4, 0x2B,
- 0x20, 0x2C, 0x28, 0x2A, 0x28, 0x63, 0x31, 0x58,
- 0xCB, 0x24, 0x20, 0x2B, 0x2C, 0x39, 0x6B, 0x21,
- 0x39, 0x6B, 0x2C, 0xC0, 0xE0, 0xB1, 0xB2, 0x9D,
- 0x8E, 0xD8, 0xE0, 0xD9, 0x84, 0xDB, 0xD8, 0xB1,
- 0x8E, 0xB2, 0xE2, 0x9C, 0x83, 0x9E, 0xBC, 0x3D,
- 0xD3, 0x56, 0x56, 0xB9, 0x56, 0xB9, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0xB9, 0xB9,
- 0x56, 0x4F, 0x27, 0x61, 0xA6, 0x9B, 0xE3, 0xA9,
- 0xE9, 0xD4, 0xDA, 0xDB, 0x8E, 0xE1, 0xE9, 0x8E,
- 0xD4, 0xA8, 0xE0, 0x84, 0xE8, 0xB1, 0xDC, 0x9D,
- 0x20, 0x29, 0x29, 0x2B, 0x2C, 0x54, 0x78, 0xCC,
- 0x78, 0x33, 0x2A, 0x20, 0x29, 0x39, 0x50, 0x2A,
- 0x6B, 0x8B, 0x39, 0xC0, 0x8D, 0xB1, 0xE9, 0xA9,
- 0xB2, 0xDC, 0x8E, 0xDC, 0xE1, 0xDA, 0xA9, 0x8E,
- 0xEA, 0xE2, 0x83, 0xE8, 0x8E, 0x83, 0xE2, 0xED,
- 0xB9, 0xB9, 0x56, 0xB9, 0x56, 0xB9, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0x56, 0x56, 0xB9,
- 0xC9, 0x27, 0x27, 0xE4, 0xA6, 0x9B, 0xD5, 0xA8,
- 0xD4, 0xB2, 0xD8, 0xDA, 0xD9, 0xE8, 0xE9, 0xE8,
- 0xD8, 0xB1, 0xDA, 0xB2, 0xE9, 0x8E, 0xEC, 0xDA,
- 0x22, 0x20, 0x39, 0x2B, 0x39, 0x24, 0xC4, 0x30,
- 0x30, 0x54, 0x22, 0x29, 0x29, 0x39, 0x48, 0x2C,
- 0x39, 0x6B, 0x39, 0xC0, 0x8D, 0xB1, 0xE9, 0xB2,
- 0xB2, 0x8E, 0xA9, 0xD8, 0xDA, 0xB1, 0xA9, 0xDA,
- 0x9C, 0xDC, 0x8E, 0xD4, 0xE8, 0xE8, 0x8F, 0x9B,
- 0x4F, 0xB9, 0x56, 0xB9, 0x56, 0xB9, 0xB9, 0xB9,
- 0xB9, 0xB9, 0xB9, 0xB9, 0x56, 0x56, 0x4F, 0x6B,
- 0x27, 0x27, 0x27, 0xD7, 0xDE, 0xAA, 0xE3, 0xA8,
- 0xB2, 0xD5, 0xE5, 0x90, 0xE2, 0xA9, 0xE9, 0xB2,
- 0xDA, 0xB2, 0xE1, 0xB2, 0xE9, 0x8E, 0xDA, 0xDF,
- 0x78, 0x2A, 0x2C, 0x2A, 0x6B, 0x28, 0x23, 0x54,
- 0x63, 0xC4, 0x33, 0x28, 0x2C, 0x39, 0x47, 0x39,
- 0x28, 0x2C, 0x29, 0xBB, 0x8D, 0x83, 0xE9, 0xD4,
- 0xB2, 0xE9, 0xE9, 0xE8, 0xD4, 0xD8, 0xD4, 0xA9,
- 0xDA, 0xB2, 0xE9, 0xA8, 0xB2, 0xA8, 0xD5, 0xAA,
- 0xC6, 0x56, 0x56, 0x56, 0x56, 0x56, 0xB9, 0x56,
- 0x56, 0x56, 0x56, 0x56, 0x56, 0xC9, 0x27, 0x27,
- 0x27, 0x27, 0x27, 0xB8, 0xB4, 0x9B, 0xE3, 0x8E,
- 0x9D, 0x8E, 0xB2, 0xE8, 0xE8, 0x8E, 0xB2, 0xDA,
- 0xB2, 0x8E, 0xEC, 0xB2, 0x8E, 0xB2, 0xBB, 0x58,
- 0xAF, 0x33, 0x50, 0x39, 0x6B, 0x39, 0x29, 0x20,
- 0x33, 0x30, 0x78, 0x23, 0x6B, 0x6B, 0x48, 0x6B,
- 0x2B, 0x2A, 0x29, 0xBB, 0xE5, 0x9C, 0xB1, 0xB2,
- 0xE5, 0x84, 0x8E, 0x9C, 0x84, 0xB2, 0xB2, 0x9D,
- 0x84, 0xDF, 0xA9, 0x84, 0x8E, 0xA8, 0xE3, 0x9B,
- 0xA6, 0xD7, 0x80, 0x4F, 0x56, 0x56, 0x56, 0x4F,
- 0x4F, 0x4F, 0x4F, 0x2A, 0x2D, 0x27, 0x27, 0x27,
- 0x27, 0x27, 0x27, 0xB8, 0xB4, 0xAA, 0xD5, 0xA9,
- 0x9D, 0xB2, 0x90, 0xEA, 0xE9, 0xE2, 0xE1, 0x8E,
- 0xB2, 0x9D, 0x8E, 0xB1, 0xA7, 0xEE, 0x63, 0xD1,
- 0x2E, 0xCC, 0x28, 0x48, 0x8B, 0x47, 0x6B, 0x28,
- 0x23, 0x78, 0x6C, 0x54, 0x29, 0x50, 0x50, 0x6B,
- 0x23, 0x20, 0xBB, 0xBC, 0xBB, 0x8D, 0xE3, 0xDF,
- 0x9C, 0xA9, 0x8D, 0xA8, 0xD9, 0x90, 0x9D, 0xA9,
- 0xDC, 0xA9, 0x83, 0xB2, 0xA9, 0xD4, 0xE3, 0x9B,
- 0x8C, 0xEF, 0x27, 0x27, 0x27, 0x3C, 0x27, 0x27,
- 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
- 0x27, 0x27, 0x27, 0xF0, 0xB4, 0x9B, 0xE3, 0x84,
- 0x9D, 0x84, 0x90, 0xB1, 0xA9, 0x9C, 0xD9, 0xB1,
- 0xB2, 0xEA, 0xBB, 0x51, 0x24, 0x30, 0x30, 0x42,
- 0x66, 0x58, 0x24, 0x48, 0x50, 0x3F, 0x20, 0x25,
- 0x22, 0x60, 0x34, 0x30, 0x20, 0x8B, 0x8B, 0x39,
- 0x54, 0x24, 0x2B, 0xC0, 0xC0, 0xC0, 0xBB, 0x9B,
- 0xBC, 0xAA, 0xAA, 0xE3, 0xE3, 0x9C, 0xB2, 0xD4,
- 0x83, 0xD8, 0xE8, 0x83, 0x84, 0xE8, 0xE5, 0x75,
- 0x9A, 0xF0, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
- 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
- 0x27, 0x27, 0x27, 0xF0, 0xB4, 0x9B, 0xE3, 0xA8,
- 0xA9, 0xD8, 0x8E, 0xEA, 0xA8, 0x9C, 0xD9, 0xE0,
- 0xC0, 0x5E, 0x2C, 0x20, 0x54, 0x60, 0x30, 0x66,
- 0xB6, 0xCC, 0x63, 0x3F, 0x8B, 0x28, 0x22, 0x33,
- 0x23, 0x31, 0xAF, 0x31, 0x22, 0x6B, 0x6B, 0x29,
- 0x30, 0x54, 0x22, 0x89, 0xBA, 0xED, 0xA6, 0x8C,
- 0xB4, 0xC0, 0xB4, 0x75, 0x75, 0x9B, 0x9B, 0xE5,
- 0xA9, 0xD5, 0x8E, 0x8E, 0x9C, 0xE3, 0x75, 0x8C,
- 0xC8, 0xF1, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
- 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
- 0x27, 0x27, 0x27, 0xF1, 0x9A, 0xB4, 0x9B, 0xE3,
- 0xE3, 0xA8, 0xE3, 0xE5, 0xAA, 0xBC, 0xC0, 0x9A,
- 0x26, 0x29, 0x20, 0x24, 0x63, 0x60, 0x54, 0x43,
- 0x34, 0xCB, 0x30, 0x39, 0x2C, 0x20, 0x24, 0x54,
- 0x22, 0x34, 0x34, 0x31, 0x24, 0x3F, 0x2C, 0x2B,
- 0x31, 0x30, 0x25, 0x2A, 0x6B, 0x29, 0x20, 0xF2,
- 0xBA, 0xBF, 0xC8, 0x9A, 0xA6, 0xA6, 0x8C, 0xB4,
- 0x9B, 0xAA, 0xAA, 0xAA, 0x9B, 0x75, 0xDE, 0xBF,
- 0x81, 0xEF, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
- 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27, 0x27,
- 0x27, 0x27, 0x27, 0xEF, 0xBA, 0x9A, 0xB4, 0x75,
- 0x9B, 0x9B, 0x9B, 0xC0, 0xB4, 0x9A, 0xA5, 0xC4,
- 0x30, 0x28, 0x22, 0x33, 0x30, 0x30, 0x23, 0x34,
- 0x31, 0x30, 0xC4, 0x2C, 0x2B, 0x22, 0x33, 0x63,
- 0x21, 0x58, 0x6C, 0x60, 0x25, 0x39, 0x28, 0x2B,
- 0xCC, 0x6C, 0x63, 0x20, 0x6B, 0x28, 0x2B, 0x20,
- 0x63, 0x43, 0xF3, 0xEF, 0xF0, 0x81, 0xBA, 0xF4,
- 0xF4, 0xA6, 0xDE, 0x8C, 0xA6, 0x9A, 0xBA, 0x81,
- 0xB0, 0xE4, 0xA1, 0x20, 0x20, 0x23, 0x31, 0xC4,
- 0x30, 0x24, 0x33, 0x31, 0x31, 0x60, 0x43, 0x35,
- 0x35, 0x55, 0x6C, 0xEF, 0x81, 0xC8, 0x9A, 0xA6,
- 0xB4, 0xB4, 0x8C, 0xA6, 0xBA, 0x68, 0x30, 0x30,
- 0x30, 0x2B, 0x25, 0x54, 0xC4, 0x54, 0x24, 0x78,
- 0x63, 0x63, 0x30, 0x29, 0x21, 0x24, 0x54, 0x63,
- 0x23, 0x34, 0xCB, 0x30, 0x25, 0x39, 0x20, 0x20,
- 0x58, 0x34, 0x60, 0x23, 0x6B, 0x29, 0x28, 0x20,
- 0x22, 0xB6, 0x42, 0xB6, 0x58, 0x54, 0xF5, 0xD7,
- 0xA5, 0xBA, 0xBA, 0xBA, 0xBA, 0x81, 0xA5, 0xF1,
- 0xE4, 0x2A, 0x39, 0x20, 0x20, 0x20, 0x31, 0x60,
- 0x54, 0x28, 0x2B, 0x22, 0x33, 0x30, 0x43, 0x35,
- 0x66, 0xD1, 0x34, 0xE4, 0xEF, 0x81, 0xC8, 0x9A,
- 0x9A, 0xC8, 0xC8, 0x81, 0xF6, 0x31, 0x63, 0x31,
- 0x78, 0x2B, 0x54, 0x63, 0x54, 0x24, 0x23, 0x54,
- 0x63, 0x54, 0x63, 0x2C, 0x23, 0x33, 0x63, 0x54,
- 0x25, 0x31, 0x78, 0x30, 0x25, 0x3F, 0x20, 0x20,
- 0xAF, 0x58, 0xCC, 0x33, 0x39, 0x29, 0x29, 0x2A,
- 0x29, 0x58, 0x43, 0x42, 0xD1, 0xCB, 0x2C, 0x2C,
- 0x37, 0xCD, 0xEF, 0xB0, 0xF0, 0xB0, 0xEF, 0xE4,
- 0x63, 0x20, 0x20, 0x2C, 0x2C, 0x21, 0xCB, 0x78,
- 0x54, 0x39, 0x39, 0x28, 0x2B, 0x28, 0x2B, 0xCB,
- 0x55, 0xB6, 0xD1, 0x28, 0xE4, 0xD7, 0xB8, 0xF0,
- 0xA5, 0xB0, 0xEF, 0x26, 0x23, 0x54, 0x31, 0x58,
- 0xCB, 0x20, 0x63, 0x63, 0x25, 0x2B, 0x54, 0x78,
- 0x30, 0x63, 0x54, 0x28, 0x33, 0x63, 0x63, 0x33,
- 0x54, 0x78, 0xC4, 0x30, 0x24, 0x2C, 0x22, 0x22,
- 0x55, 0x55, 0x34, 0x30, 0x28, 0x2C, 0x29, 0x29,
- 0x28, 0x30, 0xB6, 0x42, 0x43, 0x55, 0x22, 0x29,
- 0x2C, 0x2B, 0x2B, 0x3F, 0xE4, 0xE4, 0x43, 0x66,
- 0x30, 0x23, 0x24, 0x2A, 0x28, 0x2B, 0x54, 0x63,
- 0x33, 0x39, 0x28, 0x20, 0x20, 0x20, 0x2B, 0x31,
- 0x30, 0xD1, 0x43, 0x30, 0x39, 0x28, 0xE4, 0xE4,
- 0xD7, 0xF5, 0x2B, 0x6B, 0x20, 0x30, 0x34, 0xD1,
- 0x60, 0x23, 0x63, 0x54, 0x22, 0x47, 0x60, 0xCB,
- 0xC4, 0xC4, 0x25, 0x22, 0x54, 0xC4, 0x63, 0x23,
- 0xC4, 0xC4, 0x63, 0xC4, 0x23, 0x2A, 0x24, 0x22,
- 0x55, 0x55, 0xAF, 0x6C, 0x22, 0x39, 0x2C, 0x39,
- 0x28, 0x23, 0xD1, 0x43, 0x42, 0x8A, 0x63, 0x39,
- 0x39, 0x2A, 0x20, 0x6B, 0x33, 0xCC, 0xD1, 0xB6,
- 0x30, 0x24, 0x54, 0x63, 0x31, 0xCC, 0xCC, 0xCB,
- 0xC4, 0x2A, 0x39, 0x20, 0x20, 0x20, 0x39, 0x30,
- 0x30, 0x6C, 0x43, 0x43, 0x6C, 0x63, 0x25, 0x24,
- 0x63, 0x63, 0x63, 0x25, 0x63, 0xCC, 0xD1, 0x34,
- 0x63, 0x25, 0x54, 0x25, 0x2A, 0x28, 0x31, 0xCB,
- 0x63, 0x78, 0x24, 0x33, 0xC4, 0xC4, 0x33, 0x2C,
- 0xC4, 0x54, 0x54, 0x30, 0x21, 0x22, 0x25, 0x23,
- 0x55, 0x55, 0xD1, 0x58, 0x33, 0x6B, 0x2C, 0x39,
- 0x39, 0x39, 0x34, 0x43, 0x42, 0x43, 0xCC, 0x2B,
- 0x28, 0x29, 0x20, 0x28, 0x21, 0x30, 0xCC, 0xAF,
- 0x54, 0x23, 0xC4, 0x54, 0x58, 0x2E, 0x35, 0x42,
- 0x55, 0x54, 0x8B, 0x2A, 0x20, 0x20, 0x28, 0x22,
- 0x78, 0x30, 0xD1, 0x43, 0x44, 0x6C, 0xC4, 0xC4,
- 0x60, 0x31, 0x31, 0x63, 0x6C, 0xAF, 0xCC, 0xCB,
- 0x24, 0x25, 0x33, 0x23, 0x2C, 0x24, 0x31, 0x30,
- 0x63, 0xC4, 0x21, 0x54, 0x30, 0x63, 0x24, 0x2A,
- 0x54, 0x63, 0x54, 0xC4, 0x2B, 0x24, 0x33, 0x24,
- 0x34, 0x55, 0xD1, 0x55, 0x30, 0x28, 0x29, 0x39,
- 0x39, 0x8B, 0x63, 0x55, 0x42, 0x66, 0xB6, 0x25,
- 0x29, 0x29, 0x29, 0x28, 0x2A, 0x54, 0x78, 0x6C,
- 0x23, 0x20, 0x25, 0x30, 0xCB, 0x62, 0x35, 0x35,
- 0x35, 0x44, 0x24, 0x6B, 0x29, 0x20, 0x2A, 0x39,
- 0x28, 0x63, 0x34, 0xB6, 0x34, 0xCB, 0x63, 0x30,
- 0x31, 0x31, 0x30, 0x30, 0xCC, 0x60, 0x63, 0xC4,
- 0x20, 0x33, 0x25, 0x20, 0x48, 0x33, 0x30, 0x54,
- 0x78, 0x54, 0x2B, 0x63, 0x30, 0x63, 0x23, 0x22,
- 0x63, 0x63, 0x63, 0x33, 0x28, 0x25, 0x54, 0x24,
- 0x78, 0xAF, 0xD1, 0xD1, 0xCC, 0x22, 0x39, 0x39,
- 0x2C, 0x3F, 0x2B, 0x34, 0xB6, 0x43, 0x43, 0xC4,
- 0x2B, 0x28, 0x39, 0x50, 0x2C, 0x24, 0x63, 0x78,
- 0x21, 0x2C, 0x2A, 0x23, 0x54, 0xD1, 0x35, 0x35,
- 0x35, 0x35, 0x55, 0x22, 0x39, 0x2C, 0x2C, 0x2C,
- 0x20, 0x30, 0xCC, 0x6C, 0xCB, 0x30, 0x54, 0x30,
- 0x78, 0x63, 0x78, 0x30, 0x54, 0x78, 0x30, 0x23,
- 0x2B, 0x33, 0x24, 0x28, 0x39, 0x24, 0x54, 0x30,
- 0x78, 0x33, 0x25, 0xC4, 0xC4, 0x33, 0x39, 0x25,
- 0xC4, 0x63, 0xC4, 0x24, 0x20, 0x54, 0x54, 0x25,
- 0x63, 0xCC, 0xD1, 0xB6, 0x55, 0x54, 0x39, 0x29,
- 0x39, 0x2C, 0x6B, 0x30, 0xAF, 0xB6, 0xB6, 0x60,
- 0x22, 0x2A, 0x2C, 0x39, 0x2C, 0x21, 0x54, 0x63,
- 0x21, 0x50, 0x2C, 0x2C, 0x2B, 0x25, 0x62, 0x35,
- 0x35, 0x35, 0x35, 0xCC, 0x2B, 0x29, 0x2B, 0x20,
- 0x23, 0x25, 0xC4, 0x30, 0xC4, 0x63, 0x63, 0x63,
- 0x63, 0x33, 0x24, 0x31, 0x31, 0x31, 0x54, 0x28,
- 0x24, 0x25, 0x22, 0x6B, 0x28, 0x24, 0xC4, 0x78,
- 0x30, 0x24, 0x63, 0xC4, 0x54, 0x23, 0x29, 0x63,
- 0xC4, 0x54, 0xC4, 0x21, 0x24, 0x54, 0x54, 0x25,
- 0x30, 0xCB, 0xD1, 0xB6, 0x55, 0x63, 0x28, 0x29,
- 0x39, 0x39, 0x48, 0x33, 0x58, 0x44, 0xB6, 0x60,
- 0x24, 0x20, 0x2B, 0x28, 0x2A, 0x22, 0x54, 0x63,
- 0x21, 0x48, 0x2A, 0x2B, 0x39, 0x21, 0xB6, 0x35,
- 0x35, 0x35, 0x35, 0x42, 0x23, 0x29, 0x2A, 0x2B,
- 0x23, 0x25, 0x54, 0x54, 0x54, 0x63, 0x63, 0x30,
- 0x25, 0x2B, 0x31, 0x31, 0x31, 0x31, 0x21, 0x2C,
- 0x33, 0x25, 0x21, 0x39, 0x20, 0x25, 0x30, 0x78,
- 0xC4, 0x23, 0xC4, 0x30, 0x54, 0x20, 0x28, 0x63,
- 0x63, 0x63, 0x63, 0x20, 0x25, 0x54, 0x54, 0x20,
+ 0x20, 0x4B, 0xC5, 0x7D, 0x24, 0xEE, 0x67, 0x30,
+ 0x30, 0x8D, 0x67, 0x8E, 0xF9, 0xF7, 0x97, 0xDD,
+ 0x2F, 0x2F, 0x51, 0x89, 0x89, 0x2F, 0x55, 0x2A,
+ 0xA5, 0x8F, 0x66, 0xA3, 0x2F, 0xB2, 0xB2, 0xB2,
+ 0xDD, 0xA3, 0x66, 0x98, 0x66, 0x2F, 0xB2, 0xB2,
+ 0xA3, 0xA3, 0xB2, 0x51, 0x89, 0x44, 0xE0, 0x5E,
+ 0x91, 0x9F, 0x9F, 0x7D, 0x7D, 0xD9, 0x24, 0xF0,
+ 0x79, 0x8E, 0xEE, 0x8E, 0x24, 0x40, 0x65, 0x35,
+ 0x69, 0x2E, 0x98, 0xA3, 0x2F, 0x2F, 0x2F, 0x2F,
+ 0x2F, 0xB2, 0xB2, 0xB2, 0x2F, 0x2F, 0x2F, 0x98,
+ 0xA5, 0xA7, 0x95, 0xD7, 0x8C, 0xF0, 0x8E, 0x8E,
+ 0xEE, 0x79, 0xF0, 0xED, 0x50, 0xE8, 0x89, 0x2F,
+ 0xA3, 0xA3, 0xB2, 0x89, 0xB2, 0x66, 0xA0, 0x55,
+ 0x8F, 0x98, 0x66, 0xA3, 0xB2, 0x51, 0x51, 0xB2,
+ 0x74, 0xA0, 0xA0, 0x98, 0x66, 0xB2, 0xB2, 0xB2,
+ 0xA3, 0xA3, 0x2F, 0xB2, 0xB2, 0xB2, 0xA3, 0x2F,
+ 0x51, 0x83, 0xE4, 0x87, 0xB8, 0xFA, 0xA9, 0xC6,
+ 0x40, 0x64, 0x64, 0x50, 0xD7, 0x65, 0x35, 0x60,
+ 0x98, 0xB2, 0x66, 0x66, 0xA3, 0x2F, 0xA3, 0xA3,
+ 0xA3, 0x2F, 0x2F, 0x2F, 0x2F, 0xA3, 0x2F, 0xB2,
+ 0x89, 0xDD, 0x9B, 0xC0, 0x7D, 0x50, 0x8C, 0xED,
+ 0xED, 0x8C, 0x40, 0x9F, 0x4E, 0x51, 0xB2, 0x2F,
+ 0x2F, 0x2F, 0xB2, 0x51, 0xA3, 0x98, 0xA0, 0x55,
+ 0xA0, 0xA0, 0x8F, 0x66, 0x2F, 0x51, 0xB2, 0xA3,
+ 0xA3, 0x2A, 0x55, 0x98, 0xA3, 0x2F, 0xB2, 0x2F,
+ 0x66, 0x66, 0x2F, 0xB2, 0xD1, 0x2F, 0x2F, 0xA3,
+ 0xB2, 0xB2, 0xA3, 0x8F, 0xA3, 0x2F, 0xD1, 0x94,
+ 0xEC, 0x65, 0x65, 0xC0, 0xC0, 0x35, 0x95, 0xC2,
+ 0xA3, 0x98, 0x66, 0xA3, 0x2F, 0x2F, 0x2F, 0xA3,
+ 0xA3, 0x2F, 0xB2, 0x2F, 0x2F, 0x2F, 0x2F, 0x51,
+ 0x89, 0x44, 0xD1, 0x60, 0x35, 0xA9, 0x32, 0xC6,
+ 0xD7, 0x32, 0x94, 0x44, 0x2F, 0xB2, 0xB2, 0xB2,
+ 0xA3, 0x2F, 0xB2, 0x2F, 0xA3, 0x8F, 0xA0, 0xA0,
+ 0x55, 0xA0, 0x8F, 0xA3, 0x51, 0x51, 0x2F, 0xA3,
+ 0x8F, 0x2A, 0x55, 0x66, 0xA3, 0x2F, 0x2F, 0xB2,
+ 0xA3, 0x66, 0x2F, 0xB2, 0x51, 0xB2, 0x2F, 0x66,
+ 0xA3, 0xA3, 0x66, 0x8F, 0x8F, 0x8F, 0xA0, 0x2F,
+ 0x5E, 0xDF, 0xB9, 0x60, 0x95, 0xD3, 0x89, 0x2F,
+ 0xA3, 0x66, 0xA3, 0x2F, 0xB2, 0x2F, 0xA3, 0xA3,
+ 0xA3, 0xA3, 0x2F, 0x2F, 0x2F, 0x2F, 0x2F, 0xB2,
+ 0x51, 0x2F, 0x8F, 0x2F, 0xC4, 0xB9, 0x9B, 0xEC,
+ 0x53, 0xB3, 0x4E, 0xA3, 0x2F, 0xB2, 0xB2, 0xB2,
+ 0xA3, 0x66, 0xA3, 0xA3, 0x66, 0x8F, 0x8F, 0x8F,
+ 0x8F, 0x8F, 0xA3, 0x51, 0x89, 0x51, 0xA3, 0x66,
+ 0xA0, 0x55, 0x8F, 0xA3, 0x2F, 0x2F, 0x2F, 0xB2,
+ 0x2F, 0xA3, 0x2F, 0x51, 0x51, 0xB2, 0xA3, 0x66,
+ 0x66, 0xA3, 0x66, 0x66, 0x66, 0x66, 0x66, 0xA3,
+ 0xB2, 0xC2, 0x74, 0xD8, 0xB2, 0xA3, 0xA3, 0xA3,
+ 0x66, 0x66, 0x2F, 0x2F, 0xA3, 0x66, 0x66, 0x66,
+ 0xA3, 0xA3, 0xB2, 0xB2, 0xB2, 0xB2, 0x2F, 0xB2,
+ 0x2F, 0x66, 0xA0, 0x55, 0x98, 0x2F, 0x89, 0x89,
+ 0x89, 0xB2, 0x2F, 0xA3, 0x2F, 0x51, 0x51, 0xB2,
+ 0x2F, 0x66, 0xA3, 0xA3, 0x66, 0x66, 0x66, 0x66,
+ 0x66, 0xA3, 0xB2, 0x89, 0xD8, 0x51, 0xA3, 0x98,
+ 0x66, 0x98, 0x66, 0x2F, 0x2F, 0x2F, 0x2F, 0xB2,
+ 0xB2, 0xA3, 0xA3, 0xB2, 0xB2, 0xB2, 0x2F, 0xA3,
+ 0x66, 0xA3, 0xA3, 0xA3, 0x2F, 0x2F, 0x2F, 0xB2,
+ 0x89, 0xD8, 0x89, 0x2F, 0x66, 0x66, 0xA3, 0xA3,
+ 0x98, 0x98, 0x66, 0x66, 0x98, 0x98, 0x66, 0xA3,
+ 0x2F, 0xA3, 0xB2, 0xB2, 0xB2, 0xB2, 0x2F, 0x2F,
+ 0xB2, 0x2F, 0x66, 0x98, 0x66, 0xA3, 0x2F, 0x2F,
+ 0x2F, 0xB2, 0x2F, 0xA3, 0xA3, 0xB2, 0xB2, 0x2F,
+ 0x2F, 0x66, 0x66, 0xA3, 0xA3, 0xA3, 0x2F, 0x2F,
+ 0x2F, 0xB2, 0x89, 0xD8, 0x44, 0x2F, 0x66, 0x66,
+ 0xA3, 0xA3, 0xA3, 0xA3, 0x2F, 0x2F, 0x2F, 0x2F,
+ 0x2F, 0xA3, 0xA3, 0xA3, 0x2F, 0x2F, 0x2F, 0xA3,
+ 0x66, 0xA3, 0x2F, 0xB2, 0xB2, 0xB2, 0x51, 0x51,
+ 0x89, 0x89, 0xB2, 0xA3, 0x98, 0x66, 0xA3, 0x66,
+ 0x98, 0x98, 0x98, 0x98, 0x98, 0x66, 0xA3, 0x2F,
+ 0xA3, 0x2F, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2, 0xB2,
+ 0xB2, 0x2F, 0xA3, 0xA3, 0xA3, 0x2F, 0x2F, 0x2F,
+ 0x2F, 0xB2, 0xB2, 0xA3, 0xA3, 0x2F, 0x2F, 0x2F,
+ 0x2F, 0xA3, 0x66, 0xA3, 0x2F, 0xB2, 0xB2, 0xB2,
+ 0x51, 0x51, 0x89, 0x89, 0xB2, 0xA3, 0x98, 0x66
};
unsigned char linux_logo_bw[] __initdata = {
@@ -1021,22 +1026,22 @@ unsigned char linux_logo_bw[] __initdata = {
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
};
-/* Painted by Johnny Stenback <jst@uwasa.fi> */
+unsigned char linux_logo16_red[0];
+unsigned char linux_logo16_green[0];
+unsigned char linux_logo16_blue[0];
+unsigned char linux_logo16[0];
+
+#else
+
+/* prototypes only */
+extern unsigned char linux_logo_red[];
+extern unsigned char linux_logo_green[];
+extern unsigned char linux_logo_blue[];
+extern unsigned char linux_logo[];
+extern unsigned char linux_logo_bw[];
+extern unsigned char linux_logo16_red[];
+extern unsigned char linux_logo16_green[];
+extern unsigned char linux_logo16_blue[];
+extern unsigned char linux_logo16[];
-unsigned char *linux_serial_image __initdata = "\n"
-" .u$e.\n"
-" .$$$$$:S\n"
-" $\"*$/\"*$$\n"
-" $.`$ . ^F\n"
-" 4k+#+T.$F\n"
-" 4P+++\"$\"$\n"
-" :R\"+ t$$B\n"
-" ___# $$$\n"
-" | | R$$k\n"
-" dd. | Linux $!$\n"
-" ddd | Sparc $9$F\n"
-" '!!!!!$ !!#!`\n"
-" !!!!!* .!!!!!`\n"
-"'!!!!!!!W..e$$!!!!!!` %s\n"
-" \"~^^~ ^~~^\n"
-"\n";
+#endif
diff --git a/include/asm-sparc64/mmu_context.h b/include/asm-sparc64/mmu_context.h
index 44209a120..1d8a9f7ee 100644
--- a/include/asm-sparc64/mmu_context.h
+++ b/include/asm-sparc64/mmu_context.h
@@ -1,4 +1,4 @@
-/* $Id: mmu_context.h,v 1.20 1997/09/18 10:42:08 rth Exp $ */
+/* $Id: mmu_context.h,v 1.26 1998/07/31 10:42:38 jj Exp $ */
#ifndef __SPARC64_MMU_CONTEXT_H
#define __SPARC64_MMU_CONTEXT_H
@@ -6,70 +6,80 @@
#include <asm/system.h>
#include <asm/spitfire.h>
+#include <asm/spinlock.h>
#define NO_CONTEXT 0
#ifndef __ASSEMBLY__
extern unsigned long tlb_context_cache;
+extern spinlock_t scheduler_lock;
+extern unsigned long mmu_context_bmap[];
-#define CTX_VERSION_SHIFT PAGE_SHIFT
+#define CTX_VERSION_SHIFT (PAGE_SHIFT - 3)
#define CTX_VERSION_MASK ((~0UL) << CTX_VERSION_SHIFT)
#define CTX_FIRST_VERSION ((1UL << CTX_VERSION_SHIFT) + 1UL)
-extern void get_new_mmu_context(struct mm_struct *mm, unsigned long *ctx);
+extern void get_new_mmu_context(struct mm_struct *mm);
/* Initialize/destroy the context related info for a new mm_struct
* instance.
*/
#define init_new_context(mm) ((mm)->context = NO_CONTEXT)
-#define destroy_context(mm) ((mm)->context = NO_CONTEXT)
-
-#ifdef __SMP__
-#define LOCAL_FLUSH_PENDING(cpu) \
- ((cpu_data[(cpu)].last_tlbversion_seen ^ tlb_context_cache) & CTX_VERSION_MASK)
-#define DO_LOCAL_FLUSH(cpu) do { __flush_tlb_all(); \
- cpu_data[cpu].last_tlbversion_seen = \
- tlb_context_cache & CTX_VERSION_MASK; \
- } while(0)
-#else
-#define LOCAL_FLUSH_PENDING(cpu) 0
-#define DO_LOCAL_FLUSH(cpu) do { __flush_tlb_all(); } while(0)
-#endif
-
-extern void __flush_tlb_all(void);
+#define destroy_context(mm) do { \
+ if ((mm)->context != NO_CONTEXT) { \
+ spin_lock(&scheduler_lock); \
+ if (!(((mm)->context ^ tlb_context_cache) & CTX_VERSION_MASK)) \
+ clear_bit((mm)->context & ~(CTX_VERSION_MASK), \
+ mmu_context_bmap); \
+ spin_unlock(&scheduler_lock); \
+ (mm)->context = NO_CONTEXT; \
+ } \
+} while (0)
extern __inline__ void get_mmu_context(struct task_struct *tsk)
{
register unsigned long paddr asm("o5");
+ register unsigned long pgd_cache asm("o4");
struct mm_struct *mm = tsk->mm;
flushw_user();
- if(LOCAL_FLUSH_PENDING(current->processor))
- DO_LOCAL_FLUSH(current->processor);
if(!(tsk->tss.flags & SPARC_FLAG_KTHREAD) &&
!(tsk->flags & PF_EXITING)) {
unsigned long ctx = tlb_context_cache;
if((mm->context ^ ctx) & CTX_VERSION_MASK)
- get_new_mmu_context(mm, &tlb_context_cache);
-
+ get_new_mmu_context(mm);
+ if(!(mm->cpu_vm_mask & (1UL<<smp_processor_id()))) {
+ spitfire_set_secondary_context(mm->context & 0x3ff);
+ __asm__ __volatile__("flush %g6");
+ spitfire_flush_dtlb_secondary_context();
+ spitfire_flush_itlb_secondary_context();
+ __asm__ __volatile__("flush %g6");
+ }
/* Don't worry, set_fs() will restore it... */
/* Sigh, damned include loops... just poke seg directly. */
tsk->tss.ctx = (tsk->tss.current_ds.seg ?
- (mm->context & 0x1fff) : 0);
+ (mm->context & 0x3ff) : 0);
} else
tsk->tss.ctx = 0;
spitfire_set_secondary_context(tsk->tss.ctx);
__asm__ __volatile__("flush %g6");
paddr = __pa(mm->pgd);
+ if(tsk->tss.flags & SPARC_FLAG_32BIT)
+ pgd_cache = (unsigned long) mm->pgd[0];
+ else
+ pgd_cache = 0;
__asm__ __volatile__("
- rdpr %%pstate, %%o4
- wrpr %%o4, %1, %%pstate
+ rdpr %%pstate, %%o3
+ wrpr %%o3, %2, %%pstate
+ mov %4, %%g4
mov %0, %%g7
- wrpr %%o4, 0x0, %%pstate
+ stxa %1, [%%g4] %3
+ wrpr %%o3, 0x0, %%pstate
" : /* no outputs */
- : "r" (paddr), "i" (PSTATE_MG|PSTATE_IE)
- : "o4");
+ : "r" (paddr), "r" (pgd_cache), "i" (PSTATE_MG|PSTATE_IE),
+ "i" (ASI_DMMU), "i" (TSB_REG)
+ : "o3");
}
/*
diff --git a/include/asm-sparc64/page.h b/include/asm-sparc64/page.h
index 86ec1477d..fe33651cf 100644
--- a/include/asm-sparc64/page.h
+++ b/include/asm-sparc64/page.h
@@ -1,4 +1,4 @@
-/* $Id: page.h,v 1.17 1998/01/14 17:16:28 jj Exp $ */
+/* $Id: page.h,v 1.23 1998/06/12 14:54:33 jj Exp $ */
#ifndef _SPARC64_PAGE_H
#define _SPARC64_PAGE_H
@@ -13,12 +13,12 @@
#define PAGE_MASK (~(PAGE_SIZE-1))
+
#ifdef __KERNEL__
#ifndef __ASSEMBLY__
-#define clear_page(page) memset((void *)(page), 0, PAGE_SIZE)
-
+#define clear_page(page) memset((void *)(page), 0, PAGE_SIZE)
extern void copy_page(unsigned long to, unsigned long from);
/* GROSS, defining this makes gcc pass these types as aggregates,
@@ -82,8 +82,7 @@ typedef unsigned long iopgprot_t;
#endif /* (STRICT_MM_TYPECHECKS) */
#define TASK_UNMAPPED_BASE ((current->tss.flags & SPARC_FLAG_32BIT) ? \
- (0x0000000070000000UL) : \
- (0xfffff80000000000UL))
+ (0x0000000070000000UL) : (PAGE_OFFSET))
#endif /* !(__ASSEMBLY__) */
diff --git a/include/asm-sparc64/pbm.h b/include/asm-sparc64/pbm.h
index 3adcc9583..adb1e10bf 100644
--- a/include/asm-sparc64/pbm.h
+++ b/include/asm-sparc64/pbm.h
@@ -1,4 +1,4 @@
-/* $Id: pbm.h,v 1.12 1998/04/10 12:29:55 ecd Exp $
+/* $Id: pbm.h,v 1.14 1998/05/29 06:00:40 ecd Exp $
* pbm.h: U2P PCI bus module pseudo driver software state.
*
* Copyright (C) 1997 David S. Miller (davem@caip.rutgers.edu)
@@ -74,46 +74,13 @@ struct pcidev_cookie {
int prom_node;
};
-extern struct linux_psycho *psycho_root;
-extern struct linux_psycho **psycho_index_map;
-extern int linux_num_psycho;
-static __inline__ struct linux_psycho *
-psycho_by_index(int index)
-{
- if (index >= linux_num_psycho)
- return NULL;
- return psycho_index_map[index];
-}
+#define PCI_IRQ_IGN 0x000007c0 /* PSYCHO "Int Group Number". */
+#define PCI_IRQ_INO 0x0000003f /* PSYCHO INO. */
-/* Special PCI IRQ encoding, this just makes life easier for the generic
- * irq registry layer, there is already enough crap in there due to sbus,
- * fhc, and dcookies.
- */
-#define PCI_IRQ_IDENT 0x80000000 /* This tells irq.c what we are */
-#define PCI_IRQ_IMAP_OFF 0x7ff00000 /* Offset from first PSYCHO imap */
-#define PCI_IRQ_IMAP_OFF_SHFT 20
-#define PCI_IRQ_BUSNO 0x000fc000 /* PSYCHO instance */
-#define PCI_IRQ_BUSNO_SHFT 14
-#define PCI_IRQ_IGN 0x000007c0 /* PSYCHO "Int Group Number" */
-#define PCI_IRQ_INO 0x0000003f /* PSYCHO INO */
-
-#define PCI_IRQ_P(__irq) (((__irq) & PCI_IRQ_IDENT) != 0)
-
-extern __inline__ unsigned int pci_irq_encode(unsigned long imap_off,
- unsigned long psycho_instance,
- unsigned long ign,
- unsigned long ino)
-{
- unsigned int irq;
-
- irq = PCI_IRQ_IDENT;
- irq |= ((imap_off << PCI_IRQ_IMAP_OFF_SHFT) & PCI_IRQ_IMAP_OFF);
- irq |= ((psycho_instance << PCI_IRQ_BUSNO_SHFT) & PCI_IRQ_BUSNO);
- irq |= ((ign << 6) & PCI_IRQ_IGN);
- irq |= (ino & PCI_IRQ_INO);
-
- return irq;
-}
+/* Used by EBus */
+extern unsigned int psycho_irq_build(struct linux_pbm_info *pbm,
+ struct pci_dev *pdev,
+ unsigned int full_ino);
#endif /* !(__SPARC64_PBM_H) */
diff --git a/include/asm-sparc64/pgtable.h b/include/asm-sparc64/pgtable.h
index c57eb06cf..2bc6695b7 100644
--- a/include/asm-sparc64/pgtable.h
+++ b/include/asm-sparc64/pgtable.h
@@ -1,4 +1,4 @@
-/* $Id: pgtable.h,v 1.64 1998/02/16 14:06:44 jj Exp $
+/* $Id: pgtable.h,v 1.85 1998/08/04 20:51:33 davem Exp $
* pgtable.h: SpitFire page table operations.
*
* Copyright 1996,1997 David S. Miller (davem@caip.rutgers.edu)
@@ -41,10 +41,20 @@
/* Entries per page directory level. */
#define PTRS_PER_PTE (1UL << (PAGE_SHIFT-3))
-#define PTRS_PER_PMD (1UL << (PAGE_SHIFT-2))
-/* We cannot use the top 16G because a half of mm/ would break, so why to check it */
+
+/* We the first one in this file, what we export to the kernel
+ * is different so we can optimize correctly for 32-bit tasks.
+ */
+#define REAL_PTRS_PER_PMD (1UL << (PAGE_SHIFT-2))
+#define PTRS_PER_PMD ((const int)((current->tss.flags & SPARC_FLAG_32BIT) ? \
+ (REAL_PTRS_PER_PMD >> 2) : (REAL_PTRS_PER_PMD)))
+
+/* We cannot use the top 16G because VPTE table lives there. */
#define PTRS_PER_PGD ((1UL << (PAGE_SHIFT-3))-1)
-#define USER_PTRS_PER_PGD PTRS_PER_PGD /* Kernel has a separate 44bit address space */
+
+/* Kernel has a separate 44bit address space. */
+#define USER_PTRS_PER_PGD ((const int)((current->tss.flags & SPARC_FLAG_32BIT) ? \
+ (1) : (PTRS_PER_PGD)))
#define PTE_TABLE_SIZE 0x2000 /* 1024 entries 8 bytes each */
#define PMD_TABLE_SIZE 0x2000 /* 2048 entries 4 bytes each */
@@ -54,8 +64,9 @@
#define PTRS_PER_PAGE (1UL << (PAGE_SHIFT-3))
/* NOTE: TLB miss handlers depend heavily upon where this is. */
-#define VMALLOC_START 0x0000000800000000UL
+#define VMALLOC_START 0x0000000140000000UL
#define VMALLOC_VMADDR(x) ((unsigned long)(x))
+#define VMALLOC_END 0x0000000200000000UL
#endif /* !(__ASSEMBLY__) */
@@ -93,8 +104,7 @@
#define __ACCESS_BITS (_PAGE_ACCESSED | _PAGE_READ | _PAGE_R)
#define __PRIV_BITS _PAGE_P
-#define PAGE_NONE __pgprot (_PAGE_PRESENT | _PAGE_VALID | _PAGE_CACHE | \
- __PRIV_BITS | __ACCESS_BITS)
+#define PAGE_NONE __pgprot (_PAGE_PRESENT | _PAGE_ACCESSED)
#define PAGE_SHARED __pgprot (_PAGE_PRESENT | _PAGE_VALID | _PAGE_CACHE | \
__ACCESS_BITS | _PAGE_W | _PAGE_WRITE)
@@ -137,11 +147,7 @@
#ifndef __ASSEMBLY__
extern pte_t __bad_page(void);
-extern pmd_t *__bad_pmd(void);
-extern pte_t *__bad_pte(void);
-#define BAD_PMD __bad_pmd()
-#define BAD_PTE __bad_pte()
#define BAD_PAGE __bad_page()
/* First physical page can be anywhere, the following is needed so that
@@ -151,12 +157,9 @@ extern pte_t *__bad_pte(void);
extern unsigned long phys_base;
#define ZERO_PAGE ((unsigned long)__va(phys_base))
-/* This is for making TLB miss faster to process. */
-#define null_pmd_table (null_pte_table - PAGE_SIZE)
-extern unsigned int null_pte_table;
-
/* Allocate a block of RAM which is aligned to its size.
- This procedure can be used until the call to mem_init(). */
+ * This procedure can be used until the call to mem_init().
+ */
extern void *sparc_init_alloc(unsigned long *kbrk, unsigned long size);
/* Cache and TLB flush operations. */
@@ -173,36 +176,38 @@ extern void *sparc_init_alloc(unsigned long *kbrk, unsigned long size);
extern void __flush_cache_all(void);
extern void __flush_tlb_all(void);
-extern void __flush_tlb_mm(unsigned long context);
+extern void __flush_tlb_mm(unsigned long context, unsigned long r);
extern void __flush_tlb_range(unsigned long context, unsigned long start,
- unsigned long end);
-extern void __flush_tlb_page(unsigned long context, unsigned long page);
+ unsigned long r, unsigned long end,
+ unsigned long pgsz, unsigned long size);
+extern void __flush_tlb_page(unsigned long context, unsigned long page, unsigned long r);
#ifndef __SMP__
#define flush_cache_all() __flush_cache_all()
#define flush_tlb_all() __flush_tlb_all()
-extern __inline__ void flush_tlb_mm(struct mm_struct *mm)
-{
- if(mm->context != NO_CONTEXT)
- __flush_tlb_mm(mm->context & 0x1fff);
-}
-
-extern __inline__ void flush_tlb_range(struct mm_struct *mm, unsigned long start,
- unsigned long end)
-{
- if(mm->context != NO_CONTEXT)
- __flush_tlb_range(mm->context & 0x1fff, start, end);
-}
-
-extern __inline__ void flush_tlb_page(struct vm_area_struct *vma, unsigned long page)
-{
- struct mm_struct *mm = vma->vm_mm;
-
- if(mm->context != NO_CONTEXT)
- __flush_tlb_page(mm->context & 0x1fff, page & PAGE_MASK);
-}
+#define flush_tlb_mm(mm) \
+do { if((mm)->context != NO_CONTEXT) \
+ __flush_tlb_mm((mm)->context & 0x3ff, SECONDARY_CONTEXT); \
+} while(0)
+
+#define flush_tlb_range(mm, start, end) \
+do { if((mm)->context != NO_CONTEXT) { \
+ unsigned long __start = (start)&PAGE_MASK; \
+ unsigned long __end = (end)&PAGE_MASK; \
+ __flush_tlb_range((mm)->context & 0x3ff, __start, \
+ SECONDARY_CONTEXT, __end, PAGE_SIZE, \
+ (__end - __start)); \
+ } \
+} while(0)
+
+#define flush_tlb_page(vma, page) \
+do { struct mm_struct *__mm = (vma)->vm_mm; \
+ if(__mm->context != NO_CONTEXT) \
+ __flush_tlb_page(__mm->context & 0x3ff, (page)&PAGE_MASK, \
+ SECONDARY_CONTEXT); \
+} while(0)
#else /* __SMP__ */
@@ -239,105 +244,74 @@ extern __inline__ void flush_tlb_page(struct vm_area_struct *vma, unsigned long
#endif
-extern inline pte_t mk_pte(unsigned long page, pgprot_t pgprot)
-{ return __pte(__pa(page) | pgprot_val(pgprot)); }
-
-extern inline pte_t mk_pte_phys(unsigned long physpage, pgprot_t pgprot)
-{ return __pte(physpage | pgprot_val(pgprot)); }
-
-extern inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
-{ pte_val(pte) = (pte_val(pte) & _PAGE_CHG_MASK) | pgprot_val(newprot); return pte; }
-
-extern inline void pmd_set(pmd_t *pmdp, pte_t *ptep)
-{ pmd_val(*pmdp) = __pa((unsigned long) ptep); }
-
-extern inline void pgd_set(pgd_t *pgdp, pmd_t *pmdp)
-{ pgd_val(*pgdp) = __pa((unsigned long) pmdp); }
-
-extern inline unsigned long pte_page(pte_t pte)
-{ return (unsigned long) __va((pte_val(pte) & _PFN_MASK)); }
-
-extern inline unsigned long pmd_page(pmd_t pmd)
-{ return (unsigned long) __va(pmd_val(pmd)); }
-
-extern inline unsigned long pgd_page(pgd_t pgd)
-{ return (unsigned long) __va(pgd_val(pgd)); }
-
-#define PMD_NONE_MAGIC 0x40
-#define PGD_NONE_MAGIC 0x40
-
-extern inline int pte_none(pte_t pte) { return !pte_val(pte); }
-extern inline int pte_present(pte_t pte) { return pte_val(pte) & _PAGE_PRESENT; }
-extern inline void pte_clear(pte_t *pte) { pte_val(*pte) = 0; }
-
-extern inline int pmd_none(pmd_t pmd) { return pmd_val(pmd)&PMD_NONE_MAGIC; }
-extern inline int pmd_bad(pmd_t pmd) { return 0; }
-extern inline int pmd_present(pmd_t pmd) { return !(pmd_val(pmd)&PMD_NONE_MAGIC);}
-extern inline void pmd_clear(pmd_t *pmdp) { pmd_val(*pmdp) = null_pte_table; }
-
-extern inline int pgd_none(pgd_t pgd) { return pgd_val(pgd) & PGD_NONE_MAGIC; }
-extern inline int pgd_bad(pgd_t pgd) { return 0; }
-extern inline int pgd_present(pgd_t pgd) { return !(pgd_val(pgd)&PGD_NONE_MAGIC);}
-extern inline void pgd_clear(pgd_t *pgdp) { pgd_val(*pgdp) = null_pmd_table; }
+#define mk_pte(page, pgprot) (__pte(__pa(page) | pgprot_val(pgprot)))
+#define mk_pte_phys(physpage, pgprot) (__pte((physpage) | pgprot_val(pgprot)))
+#define pte_modify(_pte, newprot) \
+ (pte_val(_pte) = ((pte_val(_pte) & _PAGE_CHG_MASK) | pgprot_val(newprot)))
+#define pmd_set(pmdp, ptep) (pmd_val(*(pmdp)) = __pa((unsigned long) (ptep)))
+#define pgd_set(pgdp, pmdp) (pgd_val(*(pgdp)) = __pa((unsigned long) (pmdp)))
+#define pte_page(pte) ((unsigned long) __va(((pte_val(pte)&~PAGE_OFFSET)&~(0xfffUL))))
+#define pmd_page(pmd) ((unsigned long) __va(pmd_val(pmd)))
+#define pgd_page(pgd) ((unsigned long) __va(pgd_val(pgd)))
+#define pte_none(pte) (!pte_val(pte))
+#define pte_present(pte) (pte_val(pte) & _PAGE_PRESENT)
+#define pte_clear(pte) (pte_val(*(pte)) = 0UL)
+#define pmd_none(pmd) (!pmd_val(pmd))
+#define pmd_bad(pmd) (0)
+#define pmd_present(pmd) (pmd_val(pmd) != 0UL)
+#define pmd_clear(pmdp) (pmd_val(*(pmdp)) = 0UL)
+#define pgd_none(pgd) (!pgd_val(pgd))
+#define pgd_bad(pgd) (0)
+#define pgd_present(pgd) (pgd_val(pgd) != 0UL)
+#define pgd_clear(pgdp) (pgd_val(*(pgdp)) = 0UL)
/* The following only work if pte_present() is true.
* Undefined behaviour if not..
*/
-extern inline int pte_read(pte_t pte) { return pte_val(pte) & _PAGE_READ; }
-extern inline int pte_write(pte_t pte) { return pte_val(pte) & _PAGE_WRITE; }
-extern inline int pte_dirty(pte_t pte) { return pte_val(pte) & _PAGE_MODIFIED; }
-extern inline int pte_young(pte_t pte) { return pte_val(pte) & _PAGE_ACCESSED; }
-
-extern inline pte_t pte_wrprotect(pte_t pte)
-{ return __pte(pte_val(pte) & ~(_PAGE_WRITE|_PAGE_W)); }
-
-extern inline pte_t pte_rdprotect(pte_t pte)
-{ return __pte(pte_val(pte) & ~(_PAGE_READ|_PAGE_R)); }
-
-extern inline pte_t pte_mkclean(pte_t pte)
-{ return __pte(pte_val(pte) & ~(_PAGE_MODIFIED | _PAGE_W)); }
-
-extern inline pte_t pte_mkold(pte_t pte)
-{ return __pte(pte_val(pte) & ~(_PAGE_ACCESSED | _PAGE_R)); }
-
-extern inline pte_t pte_mkwrite(pte_t pte)
-{
- if(pte_val(pte) & _PAGE_MODIFIED)
- return __pte(pte_val(pte) | (_PAGE_WRITE | _PAGE_W));
+#define pte_read(pte) (pte_val(pte) & _PAGE_READ)
+#define pte_write(pte) (pte_val(pte) & _PAGE_WRITE)
+#define pte_dirty(pte) (pte_val(pte) & _PAGE_MODIFIED)
+#define pte_young(pte) (pte_val(pte) & _PAGE_ACCESSED)
+#define pte_wrprotect(pte) (__pte(pte_val(pte) & ~(_PAGE_WRITE|_PAGE_W)))
+#define pte_rdprotect(pte) (__pte(((pte_val(pte)<<1UL)>>1UL) & ~_PAGE_READ))
+#define pte_mkclean(pte) (__pte(pte_val(pte) & ~(_PAGE_MODIFIED|_PAGE_W)))
+#define pte_mkold(pte) (__pte(((pte_val(pte)<<1UL)>>1UL) & ~_PAGE_ACCESSED))
+
+/* Be very careful when you change these three, they are delicate. */
+static __inline__ pte_t pte_mkyoung(pte_t _pte)
+{ if(pte_val(_pte) & _PAGE_READ)
+ return __pte(pte_val(_pte)|(_PAGE_ACCESSED|_PAGE_R));
else
- return __pte(pte_val(pte) | (_PAGE_WRITE));
+ return __pte(pte_val(_pte)|(_PAGE_ACCESSED));
}
-extern inline pte_t pte_mkdirty(pte_t pte)
-{
- if(pte_val(pte) & _PAGE_WRITE)
- return __pte(pte_val(pte) | (_PAGE_MODIFIED | _PAGE_W));
+static __inline__ pte_t pte_mkwrite(pte_t _pte)
+{ if(pte_val(_pte) & _PAGE_MODIFIED)
+ return __pte(pte_val(_pte)|(_PAGE_WRITE|_PAGE_W));
else
- return __pte(pte_val(pte) | (_PAGE_MODIFIED));
+ return __pte(pte_val(_pte)|(_PAGE_WRITE));
}
-extern inline pte_t pte_mkyoung(pte_t pte)
-{
- if(pte_val(pte) & _PAGE_READ)
- return __pte(pte_val(pte) | (_PAGE_ACCESSED | _PAGE_R));
+static __inline__ pte_t pte_mkdirty(pte_t _pte)
+{ if(pte_val(_pte) & _PAGE_WRITE)
+ return __pte(pte_val(_pte)|(_PAGE_MODIFIED|_PAGE_W));
else
- return __pte(pte_val(pte) | (_PAGE_ACCESSED));
+ return __pte(pte_val(_pte)|(_PAGE_MODIFIED));
}
/* to find an entry in a page-table-directory. */
-extern inline pgd_t *pgd_offset(struct mm_struct *mm, unsigned long address)
-{ return mm->pgd + ((address >> PGDIR_SHIFT) & (PTRS_PER_PGD)); }
+#define pgd_offset(mm, address) ((mm)->pgd + ((address >> PGDIR_SHIFT) & (PTRS_PER_PGD)))
/* to find an entry in a kernel page-table-directory */
#define pgd_offset_k(address) pgd_offset(&init_mm, address)
/* Find an entry in the second-level page table.. */
-extern inline pmd_t *pmd_offset(pgd_t *dir, unsigned long address)
-{ return (pmd_t *) pgd_page(*dir) + ((address >> PMD_SHIFT) & (PTRS_PER_PMD - 1)); }
+#define pmd_offset(dir, address) ((pmd_t *) pgd_page(*(dir)) + \
+ ((address >> PMD_SHIFT) & (REAL_PTRS_PER_PMD-1)))
/* Find an entry in the third-level page table.. */
-extern inline pte_t *pte_offset(pmd_t *dir, unsigned long address)
-{ return (pte_t *) pmd_page(*dir) + ((address >> PAGE_SHIFT) & (PTRS_PER_PTE - 1)); }
+#define pte_offset(dir, address) ((pte_t *) pmd_page(*(dir)) + \
+ ((address >> PAGE_SHIFT) & (PTRS_PER_PTE - 1)))
/* Very stupidly, we used to get new pgd's and pmd's, init their contents
* to point to the NULL versions of the next level page table, later on
@@ -352,31 +326,68 @@ extern inline pte_t *pte_offset(pmd_t *dir, unsigned long address)
#else
extern struct pgtable_cache_struct {
unsigned long *pgd_cache;
- unsigned long *pmd_cache;
unsigned long *pte_cache;
unsigned long pgcache_size;
+ unsigned long pgdcache_size;
} pgt_quicklists;
#endif
#define pgd_quicklist (pgt_quicklists.pgd_cache)
-#define pmd_quicklist (pgt_quicklists.pmd_cache)
+#define pmd_quicklist ((unsigned long *)0)
#define pte_quicklist (pgt_quicklists.pte_cache)
#define pgtable_cache_size (pgt_quicklists.pgcache_size)
+#define pgd_cache_size (pgt_quicklists.pgdcache_size)
-extern pgd_t *get_pgd_slow(void);
+#ifndef __SMP__
-extern __inline__ pgd_t *get_pgd_fast(void)
+extern __inline__ void free_pgd_fast(pgd_t *pgd)
{
- unsigned long *ret;
+ struct page *page = mem_map + MAP_NR(pgd);
- if((ret = pgd_quicklist) != NULL) {
- pgd_quicklist = (unsigned long *)(*ret);
- ret[0] = ret[1];
- pgtable_cache_size--;
- } else
- ret = (unsigned long *)get_pgd_slow();
- return (pgd_t *)ret;
+ if (!page->pprev_hash) {
+ (unsigned long *)page->next_hash = pgd_quicklist;
+ pgd_quicklist = (unsigned long *)page;
+ }
+ (unsigned long)page->pprev_hash |=
+ (((unsigned long)pgd & (PAGE_SIZE / 2)) ? 2 : 1);
+ pgd_cache_size++;
}
+extern __inline__ pgd_t *get_pgd_fast(void)
+{
+ struct page *ret;
+
+ if ((ret = (struct page *)pgd_quicklist) != NULL) {
+ unsigned long mask = (unsigned long)ret->pprev_hash;
+ unsigned long off = 0;
+
+ if (mask & 1)
+ mask &= ~1;
+ else {
+ off = PAGE_SIZE / 2;
+ mask &= ~2;
+ }
+ (unsigned long)ret->pprev_hash = mask;
+ if (!mask)
+ pgd_quicklist = (unsigned long *)ret->next_hash;
+ ret = (struct page *)(PAGE_OFFSET + (ret->map_nr << PAGE_SHIFT) + off);
+ pgd_cache_size--;
+ } else {
+ ret = (struct page *) __get_free_page(GFP_KERNEL);
+ if(ret) {
+ struct page *page = mem_map + MAP_NR(ret);
+
+ clear_page(ret);
+ (unsigned long)page->pprev_hash = 2;
+ (unsigned long *)page->next_hash = pgd_quicklist;
+ pgd_quicklist = (unsigned long *)page;
+ pgd_cache_size++;
+ }
+ }
+ return (pgd_t *)ret;
+}
+
+#else /* __SMP__ */
+
extern __inline__ void free_pgd_fast(pgd_t *pgd)
{
*(unsigned long *)pgd = (unsigned long) pgd_quicklist;
@@ -384,20 +395,38 @@ extern __inline__ void free_pgd_fast(pgd_t *pgd)
pgtable_cache_size++;
}
+extern __inline__ pgd_t *get_pgd_fast(void)
+{
+ unsigned long *ret;
+
+ if((ret = pgd_quicklist) != NULL) {
+ pgd_quicklist = (unsigned long *)(*ret);
+ ret[0] = 0;
+ pgtable_cache_size--;
+ } else {
+ ret = (unsigned long *) __get_free_page(GFP_KERNEL);
+ if(ret)
+ clear_page(ret);
+ }
+ return (pgd_t *)ret;
+}
+
extern __inline__ void free_pgd_slow(pgd_t *pgd)
{
free_page((unsigned long)pgd);
}
+#endif /* __SMP__ */
+
extern pmd_t *get_pmd_slow(pgd_t *pgd, unsigned long address_premasked);
extern __inline__ pmd_t *get_pmd_fast(void)
{
unsigned long *ret;
- if((ret = (unsigned long *)pmd_quicklist) != NULL) {
- pmd_quicklist = (unsigned long *)(*ret);
- ret[0] = ret[1];
+ if((ret = (unsigned long *)pte_quicklist) != NULL) {
+ pte_quicklist = (unsigned long *)(*ret);
+ ret[0] = 0;
pgtable_cache_size--;
}
return (pmd_t *)ret;
@@ -405,8 +434,8 @@ extern __inline__ pmd_t *get_pmd_fast(void)
extern __inline__ void free_pmd_fast(pgd_t *pmd)
{
- *(unsigned long *)pmd = (unsigned long) pmd_quicklist;
- pmd_quicklist = (unsigned long *) pmd;
+ *(unsigned long *)pmd = (unsigned long) pte_quicklist;
+ pte_quicklist = (unsigned long *) pmd;
pgtable_cache_size++;
}
@@ -423,7 +452,7 @@ extern __inline__ pte_t *get_pte_fast(void)
if((ret = (unsigned long *)pte_quicklist) != NULL) {
pte_quicklist = (unsigned long *)(*ret);
- ret[0] = ret[1];
+ ret[0] = 0;
pgtable_cache_size--;
}
return (pte_t *)ret;
@@ -464,7 +493,7 @@ extern inline pte_t * pte_alloc(pmd_t *pmd, unsigned long address)
extern inline pmd_t * pmd_alloc(pgd_t *pgd, unsigned long address)
{
- address = (address >> PMD_SHIFT) & (PTRS_PER_PMD - 1);
+ address = (address >> PMD_SHIFT) & (REAL_PTRS_PER_PMD - 1);
if (pgd_none(*pgd)) {
pmd_t *page = get_pmd_fast();
@@ -479,12 +508,12 @@ extern inline pmd_t * pmd_alloc(pgd_t *pgd, unsigned long address)
#define pte_alloc_kernel(pmd, addr) pte_alloc(pmd, addr)
#define pmd_alloc_kernel(pgd, addr) pmd_alloc(pgd, addr)
-extern inline void set_pgdir(unsigned long address, pgd_t entry)
-{
- /* Nothing to do on sparc64 :) */
-}
+extern int do_check_pgt_cache(int, int);
-extern pgd_t swapper_pg_dir[1024];
+/* Nothing to do on sparc64 :) */
+#define set_pgdir(address, entry) do { } while(0)
+
+extern pgd_t swapper_pg_dir[1];
extern inline void SET_PAGE_DIR(struct task_struct *tsk, pgd_t *pgdir)
{
@@ -526,35 +555,26 @@ extern void mmu_release_scsi_sgl(struct mmu_sglist *sg, int sz, struct linux_sbu
#define mmu_lockarea(vaddr, len) (vaddr)
#define mmu_unlockarea(vaddr, len) do { } while(0)
-extern __inline__ void update_mmu_cache(struct vm_area_struct *vma,
- unsigned long address, pte_t pte)
-{
- struct mm_struct *mm = vma->vm_mm;
- unsigned long ctx = mm->context & 0x1fff;
- unsigned long tag_access;
-
- tag_access = address | ctx;
-
- __asm__ __volatile__("
- rdpr %%pstate, %%g1
- wrpr %%g1, %0, %%pstate
- brz,pt %1, 1f
- mov %2, %%g2
- stxa %3, [%%g2] %5
- b,pt %%xcc, 2f
- stxa %4, [%%g0] %6
-1:
- stxa %3, [%%g2] %7
- stxa %4, [%%g0] %8
-2:
- wrpr %%g1, 0x0, %%pstate
-" : /* no outputs */
- : "i" (PSTATE_IE), "r" (vma->vm_flags & VM_EXEC),
- "i" (TLB_TAG_ACCESS), "r" (tag_access), "r" (pte_val(pte)),
- "i" (ASI_IMMU), "i" (ASI_ITLB_DATA_IN),
- "i" (ASI_DMMU), "i" (ASI_DTLB_DATA_IN)
- : "g1", "g2");
-}
+#define update_mmu_cache(__vma, __address, _pte) \
+__asm__ __volatile__( \
+ "rdpr %%pstate, %%g1\n\t" \
+ "wrpr %%g1, %0, %%pstate\n\t" \
+ "brz,pt %1, 1f\n\t" \
+ " mov %2, %%g2\n\t" \
+ "stxa %3, [%%g2] %5\n\t" \
+ "ba,pt %%xcc, 2f\n\t" \
+ " stxa %4, [%%g0] %6\n\t" \
+"1: stxa %3, [%%g2] %7\n\t" \
+" stxa %4, [%%g0] %8\n\t" \
+"2: wrpr %%g1, 0x0, %%pstate\n" \
+ : /* no outputs */ \
+ : "i" (PSTATE_IE), \
+ "r" (((__vma)->vm_flags&(VM_READ|VM_WRITE|VM_EXEC))==(VM_READ|VM_EXEC)), \
+ "i" (TLB_TAG_ACCESS), \
+ "r" ((__address) | ((__vma)->vm_mm->context & 0x3ff)), \
+ "r" (pte_val(_pte)), "i" (ASI_IMMU), "i" (ASI_ITLB_DATA_IN), \
+ "i" (ASI_DMMU), "i" (ASI_DTLB_DATA_IN) \
+ : "g1", "g2")
/* Make a non-present pseudo-TTE. */
extern inline pte_t mk_swap_pte(unsigned long type, unsigned long offset)
@@ -596,7 +616,6 @@ __get_iospace (unsigned long addr)
extern void * module_map (unsigned long size);
extern void module_unmap (void *addr);
-extern void module_shrink (void *addr, unsigned long size);
/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
#define PageSkip(page) (test_bit(PG_skip, &(page)->flags))
diff --git a/include/asm-sparc64/posix_types.h b/include/asm-sparc64/posix_types.h
index dd09cb516..98b4125a6 100644
--- a/include/asm-sparc64/posix_types.h
+++ b/include/asm-sparc64/posix_types.h
@@ -7,7 +7,11 @@
* assume GCC is being used.
*/
+#if __GNUC_MINOR__ > 7
+typedef unsigned long int __kernel_size_t;
+#else
typedef unsigned long long __kernel_size_t;
+#endif
typedef long long __kernel_ssize_t;
typedef long __kernel_ptrdiff_t;
diff --git a/include/asm-sparc64/processor.h b/include/asm-sparc64/processor.h
index fd1a5fc9a..ab4348216 100644
--- a/include/asm-sparc64/processor.h
+++ b/include/asm-sparc64/processor.h
@@ -1,4 +1,4 @@
-/* $Id: processor.h,v 1.42 1998/01/28 10:00:04 ecd Exp $
+/* $Id: processor.h,v 1.49 1998/07/31 10:42:40 jj Exp $
* include/asm-sparc64/processor.h
*
* Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
@@ -31,22 +31,9 @@
#define TASK_SIZE 0xfffffffc00000000
#endif
-#define COPY_TASK_STRUCT(dst, src) \
-do { \
- if (src->tss.w_saved) \
- *dst = *src; \
- else { \
- memcpy (dst, src, ((const unsigned long)(&((struct task_struct *)0)->tss.reg_window))); \
- memcpy ((char *)dst + ((const unsigned long)(&((struct task_struct *)0)->tss.sig_address)), \
- (char *)src + ((const unsigned long)(&((struct task_struct *)0)->tss.sig_address)), \
- sizeof(struct task_struct) - \
- ((const unsigned long)(&((struct task_struct *)0)->tss.sig_address))); \
- } \
-} while (0)
-
#ifndef __ASSEMBLY__
-#define NSWINS 8
+#define NSWINS 7
typedef struct {
unsigned long seg;
@@ -55,14 +42,14 @@ typedef struct {
/* The Sparc processor specific thread struct. */
struct thread_struct {
/*DC1*/ unsigned long ksp __attribute__ ((aligned(16)));
- unsigned int kpc;
unsigned short wstate;
unsigned short cwp;
-
-/*DC2*/ unsigned short flags;
+ unsigned short flags;
unsigned short ctx;
- unsigned short w_saved;
+
+/*DC2*/ unsigned short w_saved;
unsigned short new_signal;
+ unsigned int ___pad;
mm_segment_t current_ds;
/*DC3*/ struct pt_regs *kregs;
@@ -73,35 +60,39 @@ struct thread_struct {
unsigned long sig_address __attribute__ ((aligned (8)));
unsigned long sig_desc;
- struct sigstack sstk_info;
+
+ unsigned char fpdepth;
+ unsigned char fpsaved[7];
+ unsigned char gsr[7];
+ unsigned long xfsr[7];
};
#endif /* !(__ASSEMBLY__) */
-#define SPARC_FLAG_USEDFPUL 0x01 /* Used f0-f31 */
-#define SPARC_FLAG_USEDFPUU 0x02 /* Used f32-f62 */
-#define SPARC_FLAG_USEDFPU 0x04 /* If ever FEF bit was set while TSTATE_PEF */
-#define SPARC_FLAG_KTHREAD 0x10 /* task is a kernel thread */
-#define SPARC_FLAG_UNALIGNED 0x20 /* is allowed to do unaligned accesses */
-#define SPARC_FLAG_NEWSIGNALS 0x40 /* task wants new-style signals */
-#define SPARC_FLAG_32BIT 0x80 /* task is older 32-bit binary */
+#define SPARC_FLAG_KTHREAD 0x010 /* task is a kernel thread */
+#define SPARC_FLAG_UNALIGNED 0x020 /* is allowed to do unaligned accesses */
+#define SPARC_FLAG_NEWSIGNALS 0x040 /* task wants new-style signals */
+#define SPARC_FLAG_32BIT 0x080 /* task is older 32-bit binary */
+#define SPARC_FLAG_NEWCHILD 0x100 /* task is just-spawned child process */
#define INIT_MMAP { &init_mm, 0xfffff80000000000, 0xfffff80001000000, \
PAGE_SHARED , VM_READ | VM_WRITE | VM_EXEC, NULL, &init_mm.mmap }
#define INIT_TSS { \
-/* ksp, kpc, wstate, cwp */ \
- 0, 0, 0, 0, \
-/* flags, ctx, w_saved, new_signal, current_ds, */ \
- SPARC_FLAG_KTHREAD, 0, 0, 0, KERNEL_DS, \
+/* ksp, wstate, cwp, flags, ctx, */ \
+ 0, 0, 0, SPARC_FLAG_KTHREAD, 0, \
+/* w_saved, new_signal, padding, current_ds, */ \
+ 0, 0, 0, KERNEL_DS, \
/* kregs, utraps, */ \
0, 0, \
/* reg_window */ \
{ { { 0, }, { 0, } }, }, \
/* rwbuf_stkptrs */ \
- { 0, 0, 0, 0, 0, 0, 0, 0, }, \
-/* sig_address, sig_desc, sstk_info */ \
- 0, 0, { 0, 0, }, \
+ { 0, 0, 0, 0, 0, 0, 0, }, \
+/* sig_address, sig_desc */ \
+ 0, 0, \
+/* fpdepth, fpsaved, gsr, xfsr */ \
+ 0, { 0 }, { 0 }, { 0 }, \
}
#ifndef __ASSEMBLY__
@@ -109,7 +100,10 @@ struct thread_struct {
/* Return saved PC of a blocked thread. */
extern __inline__ unsigned long thread_saved_pc(struct thread_struct *t)
{
- return t->kpc;
+ unsigned long *sp = (unsigned long *)(t->ksp + STACK_BIAS);
+ unsigned long *fp = (unsigned long *)(sp[14] + STACK_BIAS);
+
+ return fp[15];
}
/* On Uniprocessor, even in RMO processes see TSO semantics */
@@ -160,8 +154,6 @@ do { \
#define start_thread32(regs, pc, sp) \
do { \
- register unsigned int zero asm("g1"); \
-\
pc &= 0x00000000ffffffffUL; \
sp &= 0x00000000ffffffffUL; \
\
@@ -178,8 +170,8 @@ do { \
(*(current->tss.utraps))--; \
current->tss.utraps = NULL; \
} \
- zero = 0; \
__asm__ __volatile__( \
+ "stxa %3, [%4] %5\n\t" \
"stx %%g0, [%0 + %2 + 0x00]\n\t" \
"stx %%g0, [%0 + %2 + 0x08]\n\t" \
"stx %%g0, [%0 + %2 + 0x10]\n\t" \
@@ -200,12 +192,15 @@ do { \
: \
: "r" (regs), "r" (sp - REGWIN32_SZ), \
"i" ((const unsigned long)(&((struct pt_regs *)0)->u_regs[0])), \
- "r" (zero)); \
+ "r" (current->mm->pgd[0]), "r" (TSB_REG), "i" (ASI_DMMU)); \
} while(0)
/* Free all resources held by a thread. */
#define release_thread(tsk) do { } while(0)
+#define copy_segments(nr, tsk, mm) do { } while (0)
+#define release_segments(mm) do { } while (0)
+
#ifdef __KERNEL__
/* Allocation and freeing of task_struct and kernel stack. */
#define alloc_task_struct() ((struct task_struct *)__get_free_pages(GFP_KERNEL, 1))
diff --git a/include/asm-sparc64/sbus.h b/include/asm-sparc64/sbus.h
index 95aa09ede..ea2f85132 100644
--- a/include/asm-sparc64/sbus.h
+++ b/include/asm-sparc64/sbus.h
@@ -1,4 +1,4 @@
-/* $Id: sbus.h,v 1.6 1998/03/09 14:05:03 jj Exp $
+/* $Id: sbus.h,v 1.7 1998/05/22 14:33:40 jj Exp $
* sbus.h: Defines for the Sun SBus.
*
* Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
@@ -54,7 +54,7 @@ struct linux_sbus_device {
struct linux_prom_registers reg_addrs[PROMREG_MAX];
int num_registers, ranges_applied;
- struct linux_prom_irqs irqs[PROMINTR_MAX];
+ unsigned int irqs[4];
int num_irqs;
unsigned long sbus_addr; /* Absolute base address for device. */
diff --git a/include/asm-sparc64/siginfo.h b/include/asm-sparc64/siginfo.h
index cd0611f89..ff2534c66 100644
--- a/include/asm-sparc64/siginfo.h
+++ b/include/asm-sparc64/siginfo.h
@@ -51,6 +51,7 @@ typedef struct siginfo {
/* SIGCHLD */
struct {
pid_t _pid; /* which child */
+ uid_t _uid; /* sender's uid */
int _status; /* exit code */
clock_t _utime;
clock_t _stime;
diff --git a/include/asm-sparc64/signal.h b/include/asm-sparc64/signal.h
index 42382c42c..ba179564b 100644
--- a/include/asm-sparc64/signal.h
+++ b/include/asm-sparc64/signal.h
@@ -1,4 +1,4 @@
-/* $Id: signal.h,v 1.4 1997/12/11 15:16:06 jj Exp $ */
+/* $Id: signal.h,v 1.8 1998/07/29 16:32:39 jj Exp $ */
#ifndef _ASMSPARC64_SIGNAL_H
#define _ASMSPARC64_SIGNAL_H
@@ -75,6 +75,7 @@
#define SIGPROF 27
#define SIGWINCH 28
#define SIGLOST 29
+#define SIGPWR SIGLOST
#define SIGUSR1 30
#define SIGUSR2 31
@@ -148,6 +149,7 @@ struct sigstack {
*/
#define SA_NOCLDSTOP SV_IGNCHILD
#define SA_STACK SV_SSTACK
+#define SA_ONSTACK SV_SSTACK
#define SA_RESTART SV_INTR
#define SA_ONESHOT SV_RESET
#define SA_INTERRUPT 0x10
@@ -161,6 +163,15 @@ struct sigstack {
#define SIG_UNBLOCK 0x02 /* for unblocking signals */
#define SIG_SETMASK 0x04 /* for setting the signal mask */
+/*
+ * sigaltstack controls
+ */
+#define SS_ONSTACK 1
+#define SS_DISABLE 2
+
+#define MINSIGSTKSZ 4096
+#define SIGSTKSZ 16384
+
#ifdef __KERNEL__
/*
* These values of sa_flags are used only by the kernel as part of the
@@ -233,6 +244,12 @@ typedef struct sigaltstack {
__kernel_size_t ss_size;
} stack_t;
+typedef struct sigaltstack32 {
+ u32 ss_sp;
+ int ss_flags;
+ __kernel_size_t32 ss_size;
+} stack_t32;
+
#endif /* !(__ASSEMBLY__) */
#endif /* !(_ASMSPARC64_SIGNAL_H) */
diff --git a/include/asm-sparc64/smp.h b/include/asm-sparc64/smp.h
index 53121ff1c..1a07cd850 100644
--- a/include/asm-sparc64/smp.h
+++ b/include/asm-sparc64/smp.h
@@ -36,28 +36,18 @@ struct cpuinfo_sparc {
unsigned long irq_count;
unsigned int multiplier;
unsigned int counter;
- unsigned long last_tlbversion_seen;
unsigned long pgcache_size;
+ unsigned long pgdcache_size;
/* Dcache line 2 */
unsigned long *pgd_cache;
- unsigned long *pmd_cache;
unsigned long *pte_cache;
unsigned long udelay_val;
+ unsigned long dummy;
};
extern struct cpuinfo_sparc cpu_data[NR_CPUS];
-struct klock_info {
- unsigned char kernel_flag;
- unsigned char akp;
-};
-
-extern struct klock_info klock_info;
-
-#define KLOCK_HELD 0xff
-#define KLOCK_CLEAR 0x00
-
/*
* Private routines/data
*/
@@ -95,18 +85,15 @@ extern __inline__ int hard_smp_processor_id(void)
extern void smp_message_pass(int target, int msg, unsigned long data, int wait);
+/* As idle task checks need_resched in a tight loop, it is not necessary to
+ wake it up. -jj */
+#define smp_send_reschedule(cpu) do {} while (0)
+
#endif /* !(__ASSEMBLY__) */
#define PROC_CHANGE_PENALTY 20
#else /* !(__SMP__) */
-#ifndef __ASSEMBLY__
-extern __inline__ int cpu_logical_map(int cpu)
-{
- return cpu;
-}
-#endif
-#endif /* !(__SMP__) */
#define NO_PROC_ID 0xFF
diff --git a/include/asm-sparc64/smp_lock.h b/include/asm-sparc64/smp_lock.h
deleted file mode 100644
index a01d9ec35..000000000
--- a/include/asm-sparc64/smp_lock.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/* smp_lock.h: Locking and unlocking the kernel on the 64-bit Sparc.
- *
- * Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
- */
-
-#ifndef __SPARC64_SMPLOCK_H
-#define __SPARC64_SMPLOCK_H
-
-#include <asm/smp.h>
-#include <asm/bitops.h>
-#include <asm/pgtable.h>
-
-#ifndef __SMP__
-
-#define lock_kernel() do { } while(0)
-#define unlock_kernel() do { } while(0)
-#define release_kernel_lock(task, cpu, depth) ((depth) = 1)
-#define reacquire_kernel_lock(task, cpu, depth) do { } while(0)
-
-#else
-
-#include <asm/hardirq.h>
-
-/* Release global kernel lock and global interrupt lock */
-#define release_kernel_lock(task, cpu, depth) \
-do { \
- if((depth = (task)->lock_depth) != 0) { \
- __cli(); \
- (task)->lock_depth = 0; \
- klock_info.akp = NO_PROC_ID; \
- membar("#LoadStore | #StoreStore"); \
- klock_info.kernel_flag = 0; \
- } \
- release_irqlock(cpu); \
- __sti(); \
-} while(0)
-
-/* Do not fuck with this without consulting arch/sparc64/lib/locks.S first! */
-#define reacquire_kernel_lock(task, cpu, depth) \
-do { \
- if(depth) { \
- register struct klock_info *klip asm("g1"); \
- klip = &klock_info; \
- __asm__ __volatile__("mov %%o7, %%g5\n\t" \
- "call ___lock_reacquire_kernel\n\t" \
- " mov %1, %%g2" \
- : /* No outputs. */ \
- : "r" (klip), "r" (depth) \
- : "g2", "g3", "g5", "memory", "cc"); \
- } \
-} while(0)
-
-/* The following acquire and release the master kernel global lock,
- * the idea is that the usage of this mechanmism becomes less and less
- * as time goes on, to the point where they are no longer needed at all
- * and can thus disappear.
- */
-
-/* Do not fuck with this without consulting arch/sparc64/lib/locks.S first! */
-extern __inline__ void lock_kernel(void)
-{
- register struct klock_info *klip asm("g1");
- klip = &klock_info;
- __asm__ __volatile__("
- mov %%o7, %%g5
- call ___lock_kernel
- lduw [%%g6 + %0], %%g2
-" : : "i" (AOFF_task_lock_depth), "r" (klip)
- : "g2", "g3", "g5", "memory", "cc");
-}
-
-/* Release kernel global lock. */
-extern __inline__ void unlock_kernel(void)
-{
- register struct klock_info *klip asm("g1");
- klip = &klock_info;
- __asm__ __volatile__("
- mov %%o7, %%g5
- call ___unlock_kernel
- lduw [%%g6 + %0], %%g2
-" : : "i" (AOFF_task_lock_depth), "r" (klip)
- : "g2", "g3", "g5", "memory", "cc");
-}
-
-#endif /* (__SMP__) */
-
-#endif /* !(__SPARC64_SMPLOCK_H) */
diff --git a/include/asm-sparc64/smplock.h b/include/asm-sparc64/smplock.h
new file mode 100644
index 000000000..e62326a10
--- /dev/null
+++ b/include/asm-sparc64/smplock.h
@@ -0,0 +1,49 @@
+/*
+ * <asm/smplock.h>
+ *
+ * Default SMP lock implementation
+ */
+#include <linux/interrupt.h>
+#include <asm/spinlock.h>
+
+extern spinlock_t kernel_flag;
+
+/*
+ * Release global kernel lock and global interrupt lock
+ */
+#define release_kernel_lock(task, cpu) \
+do { \
+ if (task->lock_depth >= 0) \
+ spin_unlock(&kernel_flag); \
+ release_irqlock(cpu); \
+ __sti(); \
+} while (0)
+
+/*
+ * Re-acquire the kernel lock
+ */
+#define reacquire_kernel_lock(task) \
+do { \
+ if (task->lock_depth >= 0) \
+ spin_lock(&kernel_flag); \
+} while (0)
+
+
+/*
+ * Getting the big kernel lock.
+ *
+ * This cannot happen asynchronously,
+ * so we only need to worry about other
+ * CPU's.
+ */
+extern __inline__ void lock_kernel(void)
+{
+ if (!++current->lock_depth)
+ spin_lock(&kernel_flag);
+}
+
+extern __inline__ void unlock_kernel(void)
+{
+ if (--current->lock_depth < 0)
+ spin_unlock(&kernel_flag);
+}
diff --git a/include/asm-sparc64/socket.h b/include/asm-sparc64/socket.h
index 3c110baeb..0f25b82c1 100644
--- a/include/asm-sparc64/socket.h
+++ b/include/asm-sparc64/socket.h
@@ -1,4 +1,4 @@
-/* $Id: socket.h,v 1.4 1997/10/19 00:19:23 davem Exp $ */
+/* $Id: socket.h,v 1.5 1998/07/22 22:06:49 davem Exp $ */
#ifndef _ASM_SOCKET_H
#define _ASM_SOCKET_H
@@ -37,6 +37,9 @@
#define SO_BINDTODEVICE 0x000d
+#define SO_ATTACH_FILTER 0x001a
+#define SO_DETACH_FILTER 0x001b
+
/* Security levels - as per NRL IPv6 - don't actually do anything */
#define SO_SECURITY_AUTHENTICATION 0x5001
#define SO_SECURITY_ENCRYPTION_TRANSPORT 0x5002
diff --git a/include/asm-sparc64/softirq.h b/include/asm-sparc64/softirq.h
index 1357489b4..0e1a6b589 100644
--- a/include/asm-sparc64/softirq.h
+++ b/include/asm-sparc64/softirq.h
@@ -23,6 +23,7 @@ extern int __sparc64_bh_counter;
#define softirq_trylock(cpu) (__sparc64_bh_counter ? 0 : (__sparc64_bh_counter=1))
#define softirq_endlock(cpu) (__sparc64_bh_counter = 0)
#define clear_active_bhs(x) (bh_active &= ~(x))
+#define synchronize_bh() do { } while (0) /* XXX implement SMP version -DaveM */
#define init_bh(nr, routine) \
do { int ent = nr; \
diff --git a/include/asm-sparc64/spinlock.h b/include/asm-sparc64/spinlock.h
index 65880b033..4e2dd6b8c 100644
--- a/include/asm-sparc64/spinlock.h
+++ b/include/asm-sparc64/spinlock.h
@@ -10,8 +10,13 @@
#ifndef __SMP__
-typedef struct { } spinlock_t;
-#define SPIN_LOCK_UNLOCKED { }
+#if (__GNUC__ > 2) || (__GNUC_MINOR__ >= 8)
+ typedef struct { } spinlock_t;
+ #define SPIN_LOCK_UNLOCKED { }
+#else
+ typedef unsigned char spinlock_t;
+ #define SPIN_LOCK_UNLOCKED 0
+#endif
#define spin_lock_init(lock) do { } while(0)
#define spin_lock(lock) do { } while(0)
diff --git a/include/asm-sparc64/spitfire.h b/include/asm-sparc64/spitfire.h
index 76232c227..04667b185 100644
--- a/include/asm-sparc64/spitfire.h
+++ b/include/asm-sparc64/spitfire.h
@@ -1,4 +1,4 @@
-/* $Id: spitfire.h,v 1.8 1997/05/18 04:16:56 davem Exp $
+/* $Id: spitfire.h,v 1.9 1998/04/28 08:23:33 davem Exp $
* spitfire.h: SpitFire/BlackBird/Cheetah inline MMU operations.
*
* Copyright (C) 1996 David S. Miller (davem@caip.rutgers.edu)
@@ -85,7 +85,7 @@ extern __inline__ void spitfire_set_primary_context(unsigned long ctx)
{
__asm__ __volatile__("stxa %0, [%1] %2"
: /* No outputs */
- : "r" (ctx & 0x1fff),
+ : "r" (ctx & 0x3ff),
"r" (PRIMARY_CONTEXT), "i" (ASI_DMMU));
membar("#Sync");
}
@@ -104,7 +104,7 @@ extern __inline__ void spitfire_set_secondary_context(unsigned long ctx)
{
__asm__ __volatile__("stxa %0, [%1] %2"
: /* No outputs */
- : "r" (ctx & 0x1fff),
+ : "r" (ctx & 0x3ff),
"r" (SECONDARY_CONTEXT), "i" (ASI_DMMU));
membar("#Sync");
}
diff --git a/include/asm-sparc64/stat.h b/include/asm-sparc64/stat.h
index 05853d3b5..f726bd5a0 100644
--- a/include/asm-sparc64/stat.h
+++ b/include/asm-sparc64/stat.h
@@ -1,4 +1,4 @@
-/* $Id: stat.h,v 1.4 1998/02/06 12:52:14 jj Exp $ */
+/* $Id: stat.h,v 1.5 1998/07/26 05:24:41 davem Exp $ */
#ifndef _SPARC64_STAT_H
#define _SPARC64_STAT_H
@@ -42,54 +42,4 @@ struct stat {
unsigned long __unused4[2];
};
-typedef __u64 __new_dev_t;
-
-struct stat64 {
- __new_dev_t st_dev;
- __u64 st_ino;
- __u32 st_mode;
- __u32 st_nlink;
- __s32 st_uid;
- __s32 st_gid;
- __new_dev_t st_rdev;
- __s64 st_size;
- struct timespec st_atim;
- struct timespec st_mtim;
- struct timespec st_ctim;
- int st_blksize;
- long st_blocks;
- char st_fstype[16];
-};
-
-struct stat64_32 {
- __new_dev_t st_dev;
- __u64 st_ino;
- __u32 st_mode;
- __u32 st_nlink;
- __s32 st_uid;
- __s32 st_gid;
- __new_dev_t st_rdev;
- __s64 st_size;
- __u64 st_blocks;
- __s32 st_atime;
- __u32 __unused1;
- __s32 st_mtime;
- __u32 __unused2;
- __s32 st_ctime;
- __u32 __unused3;
- __u32 st_blksize;
- __u32 __unused4;
-};
-
-#define __XSTAT_VER_1 1
-#define __XSTAT_VER_2 2
-#define __XSTAT_VER_MASK 0xff
-
-#define __XSTAT_VER_XSTAT 0x000
-#define __XSTAT_VER_LXSTAT 0x100
-#define __XSTAT_VER_FXSTAT 0x200
-#define __XSTAT_VER_TYPEMASK 0xff00
-
-#define __XMKNOD_VER_1 1
-
#endif
diff --git a/include/asm-sparc64/string.h b/include/asm-sparc64/string.h
index 545e1285d..b5293acd9 100644
--- a/include/asm-sparc64/string.h
+++ b/include/asm-sparc64/string.h
@@ -1,4 +1,4 @@
-/* $Id: string.h,v 1.8 1997/11/19 07:57:50 jj Exp $
+/* $Id: string.h,v 1.11 1998/06/12 14:54:35 jj Exp $
* string.h: External definitions for optimized assembly string
* routines for the Linux Kernel.
*
@@ -67,8 +67,8 @@ extern inline void *__nonconstant_memcpy(void *to, const void *from, __kernel_si
extern inline void *__constant_c_and_count_memset(void *s, char c, __kernel_size_t count)
{
- extern void *__bzero_1page(void *);
extern __kernel_size_t __bzero(void *, __kernel_size_t);
+ extern void *__bzero_1page(void *);
if(!c) {
if (count == 8192)
diff --git a/include/asm-sparc64/svr4.h b/include/asm-sparc64/svr4.h
index 2e624a94b..fbf94c2e2 100644
--- a/include/asm-sparc64/svr4.h
+++ b/include/asm-sparc64/svr4.h
@@ -81,7 +81,7 @@ typedef struct {
/* flags for stack_t.flags */
enum svr4_stack_flags {
- SS_ONSTACK,
+ SVR4_SS_ONSTACK,
SVR4_SS_DISABLE,
};
diff --git a/include/asm-sparc64/system.h b/include/asm-sparc64/system.h
index 5bec88028..55072c93b 100644
--- a/include/asm-sparc64/system.h
+++ b/include/asm-sparc64/system.h
@@ -1,10 +1,11 @@
-/* $Id: system.h,v 1.38 1998/01/30 11:00:11 jj Exp $ */
+/* $Id: system.h,v 1.42 1998/07/29 01:32:51 davem Exp $ */
#ifndef __SPARC64_SYSTEM_H
#define __SPARC64_SYSTEM_H
#include <asm/ptrace.h>
#include <asm/processor.h>
#include <asm/asm_offsets.h>
+#include <asm/visasm.h>
#ifndef __ASSEMBLY__
/*
@@ -28,8 +29,6 @@ enum sparc_cpu {
#define ARCH_SUN4 0
extern unsigned long empty_bad_page;
-extern unsigned long empty_bad_pmd_table;
-extern unsigned long empty_bad_pte_table;
extern unsigned long empty_zero_page;
#endif
@@ -43,10 +42,10 @@ extern unsigned long empty_zero_page;
__asm__ __volatile__("wrpr 0, %%pil" : : : "memory")
#define getipl() \
-({ int retval; __asm__ __volatile__("rdpr %%pil, %0" : "=r" (retval)); retval; })
+({ unsigned long retval; __asm__ __volatile__("rdpr %%pil, %0" : "=r" (retval)); retval; })
#define swap_pil(__new_pil) \
-({ int retval; \
+({ unsigned long retval; \
__asm__ __volatile__("rdpr %%pil, %0\n\t" \
"wrpr %1, %%pil" \
: "=r" (retval) \
@@ -56,7 +55,7 @@ extern unsigned long empty_zero_page;
})
#define read_pil_and_cli() \
-({ int retval; \
+({ unsigned long retval; \
__asm__ __volatile__("rdpr %%pil, %0\n\t" \
"wrpr 15, %%pil" \
: "=r" (retval) \
@@ -126,12 +125,10 @@ extern __inline__ void flushw_user(void)
#define flush_user_windows flushw_user
/* See what happens when you design the chip correctly?
- * NOTE NOTE NOTE this is extremely non-trivial what I
- * am doing here. GCC needs only one register to stuff
- * things into ('next' in particular) So I "claim" that
- * I do not clobber it, when in fact I do. Please,
- * when modifying this code inspect output of sched.s very
- * carefully to make sure things still work. -DaveM
+ *
+ * XXX What we are doing here assumes a lot about gcc reload
+ * XXX internals, it heavily risks compiler aborts due to
+ * XXX forbidden registers being spilled. Rewrite me... -DaveM
*
* SMP NOTE: At first glance it looks like there is a tiny
* race window here at the end. The possible problem
@@ -144,48 +141,48 @@ extern __inline__ void flushw_user(void)
* not reference %g6.
*/
#define switch_to(prev, next) \
-do { __label__ switch_continue; \
- register unsigned long task_pc asm("o7"); \
- (prev)->tss.kregs->tstate &= ~TSTATE_PEF; \
- task_pc = ((unsigned long) &&switch_continue) - 0x8; \
+do { save_and_clear_fpu(); \
(next)->mm->cpu_vm_mask |= (1UL << smp_processor_id()); \
__asm__ __volatile__( \
"rdpr %%pstate, %%g2\n\t" \
"wrpr %%g2, 0x3, %%pstate\n\t" \
"flushw\n\t" \
+ "stx %%l0, [%%sp + 2047 + 0x60]\n\t" \
+ "stx %%l1, [%%sp + 2047 + 0x68]\n\t" \
"stx %%i6, [%%sp + 2047 + 0x70]\n\t" \
"stx %%i7, [%%sp + 2047 + 0x78]\n\t" \
"rdpr %%wstate, %%o5\n\t" \
- "stx %%o6, [%%g6 + %3]\n\t" \
- "stw %%o7, [%%g6 + %4]\n\t" \
- "sth %%o5, [%%g6 + %2]\n\t" \
+ "stx %%o6, [%%g6 + %2]\n\t" \
+ "sth %%o5, [%%g6 + %1]\n\t" \
"rdpr %%cwp, %%o5\n\t" \
- "sth %%o5, [%%g6 + %5]\n\t" \
- "membar #Sync\n\t" \
+ "sth %%o5, [%%g6 + %4]\n\t" \
"mov %0, %%g6\n\t" \
- "lduh [%0 + %5], %%g1\n\t" \
+ "lduh [%0 + %4], %%g1\n\t" \
"wrpr %%g1, %%cwp\n\t" \
- "ldx [%%g6 + %3], %%o6\n\t" \
- "lduw [%%g6 + %4], %%o7\n\t" \
- "lduh [%%g6 + %2], %%o5\n\t" \
- "mov %%g6, %0\n\t" \
+ "ldx [%%g6 + %2], %%o6\n\t" \
+ "lduh [%%g6 + %1], %%o5\n\t" \
+ "lduh [%%g6 + %3], %%o7\n\t" \
+ "mov %%g6, %%l2\n\t" \
"wrpr %%o5, 0x0, %%wstate\n\t" \
+ "ldx [%%sp + 2047 + 0x60], %%l0\n\t" \
+ "ldx [%%sp + 2047 + 0x68], %%l1\n\t" \
"ldx [%%sp + 2047 + 0x70], %%i6\n\t" \
"ldx [%%sp + 2047 + 0x78], %%i7\n\t" \
"wrpr %%g0, 0x96, %%pstate\n\t" \
- "jmpl %%o7 + 0x8, %%g0\n\t" \
- " mov %0, %%g6\n\t" \
- : /* No outputs */ \
- : "r" (next), "r" (task_pc), \
+ "andcc %%o7, 0x100, %%g0\n\t" \
+ "bne,pn %%icc, ret_from_syscall\n\t" \
+ " mov %%l2, %%g6\n\t" \
+ : \
+ : "r" (next), \
"i" ((const unsigned long)(&((struct task_struct *)0)->tss.wstate)), \
"i" ((const unsigned long)(&((struct task_struct *)0)->tss.ksp)), \
- "i" ((const unsigned long)(&((struct task_struct *)0)->tss.kpc)), \
+ "i" ((const unsigned long)(&((struct task_struct *)0)->tss.flags)), \
"i" ((const unsigned long)(&((struct task_struct *)0)->tss.cwp)) \
: "cc", "g1", "g2", "g3", "g5", "g7", \
- "l1", "l2", "l3", "l4", "l5", "l6", "l7", \
+ "l2", "l3", "l4", "l5", "l6", "l7", \
"i0", "i1", "i2", "i3", "i4", "i5", \
- "o0", "o1", "o2", "o3", "o4", "o5"); \
-switch_continue: } while(0)
+ "o0", "o1", "o2", "o3", "o4", "o5", "o7"); \
+} while(0)
extern __inline__ unsigned long xchg32(__volatile__ unsigned int *m, unsigned int val)
{
diff --git a/include/asm-sparc64/termios.h b/include/asm-sparc64/termios.h
index 622158d24..8a972984b 100644
--- a/include/asm-sparc64/termios.h
+++ b/include/asm-sparc64/termios.h
@@ -1,4 +1,4 @@
-/* $Id: termios.h,v 1.4 1997/03/14 21:05:26 jj Exp $ */
+/* $Id: termios.h,v 1.5 1998/04/12 06:27:22 davem Exp $ */
#ifndef _SPARC64_TERMIOS_H
#define _SPARC64_TERMIOS_H
diff --git a/include/asm-sparc64/timex.h b/include/asm-sparc64/timex.h
new file mode 100644
index 000000000..80210c259
--- /dev/null
+++ b/include/asm-sparc64/timex.h
@@ -0,0 +1,15 @@
+/*
+ * linux/include/asm-sparc64/timex.h
+ *
+ * sparc64 architecture timex specifications
+ */
+#ifndef _ASMsparc64_TIMEX_H
+#define _ASMsparc64_TIMEX_H
+
+#define CLOCK_TICK_RATE 1193180 /* Underlying HZ */
+#define CLOCK_TICK_FACTOR 20 /* Factor of both 1000000 and CLOCK_TICK_RATE */
+#define FINETUNE ((((((long)LATCH * HZ - CLOCK_TICK_RATE) << SHIFT_HZ) * \
+ (1000000/CLOCK_TICK_FACTOR) / (CLOCK_TICK_RATE/CLOCK_TICK_FACTOR)) \
+ << (SHIFT_SCALE-SHIFT_HZ)) / HZ)
+
+#endif
diff --git a/include/asm-sparc64/ttable.h b/include/asm-sparc64/ttable.h
index 82e360042..9d2434618 100644
--- a/include/asm-sparc64/ttable.h
+++ b/include/asm-sparc64/ttable.h
@@ -1,4 +1,4 @@
-/* $Id: ttable.h,v 1.6 1998/03/15 17:23:54 ecd Exp $ */
+/* $Id: ttable.h,v 1.8 1998/06/12 14:54:32 jj Exp $ */
#ifndef _SPARC64_TTABLE_H
#define _SPARC64_TTABLE_H
@@ -66,7 +66,7 @@
#define SYSCALL_TRAP(routine, systbl) \
sethi %hi(109f), %g7; \
- ba,pt %xcc, etrap; \
+ ba,pt %xcc, scetrap; \
109: or %g7, %lo(109b), %g7; \
call routine; \
sethi %hi(systbl), %l7; \
@@ -133,6 +133,16 @@
call routine; \
add %sp, STACK_BIAS + REGWIN_SZ, %o1; \
ba,a,pt %xcc, rtrap_clr_l6;
+
+#define TICK_SMP_IRQ \
+ rdpr %pil, %g2; \
+ wrpr %g0, 15, %pil; \
+ sethi %hi(109f), %g7; \
+ b,pt %xcc, etrap_irq; \
+109: or %g7, %lo(109b), %g7; \
+ call smp_percpu_timer_interrupt; \
+ add %sp, STACK_BIAS + REGWIN_SZ, %o0; \
+ ba,a,pt %xcc, rtrap_clr_l6;
#define TRAP_IVEC TRAP_NOSAVE(do_ivec)
diff --git a/include/asm-sparc64/uaccess.h b/include/asm-sparc64/uaccess.h
index e2d59cf23..ec80bb5dc 100644
--- a/include/asm-sparc64/uaccess.h
+++ b/include/asm-sparc64/uaccess.h
@@ -1,4 +1,4 @@
-/* $Id: uaccess.h,v 1.24 1997/12/15 15:05:14 jj Exp $ */
+/* $Id: uaccess.h,v 1.25 1998/04/28 08:23:34 davem Exp $ */
#ifndef _ASM_UACCESS_H
#define _ASM_UACCESS_H
@@ -52,7 +52,7 @@ do { \
flushw_user (); \
current->tss.ctx = 0; \
} else { \
- current->tss.ctx = (current->mm->context & 0x1fff); \
+ current->tss.ctx = (current->mm->context & 0x3ff); \
} \
spitfire_set_secondary_context(current->tss.ctx); \
__asm__ __volatile__("flush %g6"); \
diff --git a/include/asm-sparc64/unistd.h b/include/asm-sparc64/unistd.h
index ca749ffd9..960d3a01b 100644
--- a/include/asm-sparc64/unistd.h
+++ b/include/asm-sparc64/unistd.h
@@ -1,4 +1,4 @@
-/* $Id: unistd.h,v 1.17 1998/03/29 12:57:54 ecd Exp $ */
+/* $Id: unistd.h,v 1.20 1998/07/28 13:08:40 jj Exp $ */
#ifndef _SPARC64_UNISTD_H
#define _SPARC64_UNISTD_H
@@ -29,22 +29,22 @@
#define __NR_unlink 10 /* Common */
#define __NR_execv 11 /* SunOS Specific */
#define __NR_chdir 12 /* Common */
-#define __NR_xstat 13 /* Linux Specific */
+/* #define __NR_ni_syscall 13 ENOSYS under SunOS */
#define __NR_mknod 14 /* Common */
#define __NR_chmod 15 /* Common */
#define __NR_chown 16 /* Common */
#define __NR_brk 17 /* Common */
-#define __NR_xmknod 18 /* Linux Specific */
+/* #define __NR_ni_syscall 18 ENOSYS under SunOS */
#define __NR_lseek 19 /* Common */
#define __NR_getpid 20 /* Common */
-/* #define __NR_ni_syscall 21 ENOSYS under SunOS */
-/* #define __NR_ni_syscall 22 ENOSYS under SunOS */
+#define __NR_capget 21 /* Linux Specific */
+#define __NR_capset 22 /* Linux Specific */
#define __NR_setuid 23 /* Implemented via setreuid in SunOS */
#define __NR_getuid 24 /* Common */
/* #define __NR_time alias 25 ENOSYS under SunOS */
#define __NR_ptrace 26 /* Common */
#define __NR_alarm 27 /* Implemented via setitimer in SunOS */
-/* #define __NR_ni_syscall 28 ENOSYS under SunOS */
+#define __NR_sigaltstack 28 /* Common */
#define __NR_pause 29 /* Is sigblock(0)->sigpause() in SunOS */
#define __NR_utime 30 /* Implemented via utimes() under SunOS */
#define __NR_stty 31 /* Implemented via ioctl() under SunOS */
@@ -55,7 +55,7 @@
#define __NR_sync 36 /* Common */
#define __NR_kill 37 /* Common */
#define __NR_stat 38 /* Common */
-/* #define __NR_ni_syscall 39 ENOSYS under SunOS */
+#define __NR_sendfile 39 /* Linux Specific */
#define __NR_lstat 40 /* Common */
#define __NR_dup 41 /* Common */
#define __NR_pipe 42 /* Common */
@@ -135,7 +135,7 @@
#define __NR_gettimeofday 116 /* Common */
#define __NR_getrusage 117 /* Common */
#define __NR_getsockopt 118 /* Common */
-/* #define __NR_ni_syscall 119 ENOSYS under SunOS */
+#define __NR_getcwd 119 /* Linux Specific */
#define __NR_readv 120 /* Common */
#define __NR_writev 121 /* Common */
#define __NR_settimeofday 122 /* Common */
diff --git a/include/asm-sparc64/vaddrs.h b/include/asm-sparc64/vaddrs.h
index b88085668..04a265680 100644
--- a/include/asm-sparc64/vaddrs.h
+++ b/include/asm-sparc64/vaddrs.h
@@ -1,4 +1,4 @@
-/* $Id: vaddrs.h,v 1.8 1997/06/27 14:55:13 jj Exp $ */
+/* $Id: vaddrs.h,v 1.10 1998/05/14 13:36:01 jj Exp $ */
#ifndef _SPARC64_VADDRS_H
#define _SPARC64_VADDRS_H
@@ -7,19 +7,13 @@
* For instance the timer register virtual address
* is defined here.
*
- * Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu)
+ * Copyright (C) 1995,1998 David S. Miller (davem@caip.rutgers.edu)
*/
-/* I can see only one reason why we should have statically defined
- * mappings for devices and is the speedup improvements of not loading
- * a pointer and then the value in the assembly code
- */
-#define IOBASE_VADDR 0x0000006000000000ULL /* Base for mapping pages */
-#define IOBASE_LEN 0x0000001000000000ULL /* Length of the IO area */
-#define IOBASE_END 0x0000007000000000ULL
-#define DVMA_VADDR 0x0000007000000000ULL /* Base area of the DVMA on suns */
-#define DVMA_LEN 0x0000001000000000ULL /* Size of the DVMA address space */
-#define DVMA_END 0x0000008000000000ULL
+/* Everything here must be in the first kernel PGD. */
+#define DVMA_VADDR 0x0000000100000000ULL /* Base area of the DVMA on suns */
+#define DVMA_LEN 0x0000000040000000ULL /* Size of the DVMA address space */
+#define DVMA_END 0x0000000140000000ULL
#define MODULES_VADDR 0x0000000001000000ULL /* Where to map modules */
#define MODULES_LEN 0x000000007f000000ULL
#define MODULES_END 0x0000000080000000ULL
diff --git a/include/asm-sparc64/vga.h b/include/asm-sparc64/vga.h
new file mode 100644
index 000000000..14ae757a4
--- /dev/null
+++ b/include/asm-sparc64/vga.h
@@ -0,0 +1,30 @@
+/*
+ * Access to VGA videoram
+ *
+ * (c) 1998 Martin Mares <mj@ucw.cz>
+ */
+
+#ifndef _LINUX_ASM_VGA_H_
+#define _LINUX_ASM_VGA_H_
+
+#define VT_BUF_HAVE_RW
+
+static inline void scr_writew(u16 val, u16 *addr)
+{
+ if ((long) addr < 0)
+ *addr = val;
+ else
+ writew(val, (unsigned long) addr);
+}
+
+static inline u16 scr_readw(u16 *addr)
+{
+ if ((long) addr < 0)
+ return *addr;
+ else
+ return readw((unsigned long) addr);
+}
+
+#define VGA_MAP_MEM(x) (x)
+
+#endif
diff --git a/include/asm-sparc64/visasm.h b/include/asm-sparc64/visasm.h
new file mode 100644
index 000000000..e1de6a384
--- /dev/null
+++ b/include/asm-sparc64/visasm.h
@@ -0,0 +1,62 @@
+/* $Id: visasm.h,v 1.2 1998/06/19 12:14:47 jj Exp $ */
+#ifndef _SPARC64_VISASM_H
+#define _SPARC64_VISASM_H
+
+/* visasm.h: FPU saving macros for VIS routines
+ *
+ * Copyright (C) 1998 Jakub Jelinek (jj@ultra.linux.cz)
+ */
+
+#include <asm/pstate.h>
+#include <asm/ptrace.h>
+
+#define AOFF_task_fpregs ((AOFF_task_sigmask_lock + 285)&~255)
+
+/* Clobbers %o5, %g1, %g2, %g3, %g7, %icc, %xcc */
+
+#define VISEntry \
+ rd %fprs, %o5; \
+ andcc %o5, (FPRS_FEF|FPRS_DU), %g0; \
+ be,pt %icc, 297f; \
+ sethi %hi(297f), %g7; \
+ ba,pt %xcc, VISenter; \
+ or %g7, %lo(297f), %g7; \
+297: wr %g0, FPRS_FEF, %fprs; \
+
+#define VISExit \
+ wr %g0, 0, %fprs;
+
+/* Clobbers %o5, %g1, %g2, %g3, %g7, %icc, %xcc.
+ * Must preserve %o5 between VISEntryHalf and VISExitHalf */
+
+#define VISEntryHalf \
+ rd %fprs, %o5; \
+ andcc %o5, FPRS_FEF, %g0; \
+ be,pt %icc, 297f; \
+ sethi %hi(298f), %g7; \
+ ba,pt %xcc, VISenterhalf; \
+ or %g7, %lo(298f), %g7; \
+ clr %o5; \
+297: wr %o5, FPRS_FEF, %fprs; \
+298:
+
+#define VISExitHalf \
+ wr %o5, 0, %fprs;
+
+#ifndef __ASSEMBLY__
+extern __inline__ void save_and_clear_fpu(void) {
+ __asm__ __volatile__ ("
+ rd %%fprs, %%o5
+ andcc %%o5, %0, %%g0
+ be,pt %%icc, 299f
+ sethi %%hi(298f), %%g7
+ ba VISenter ! Note. This cannot be bp, as it may be too far from VISenter.
+ or %%g7, %%lo(298f), %%g7
+ 298: wr %%g0, 0, %%fprs
+ 299:
+ " : : "i" (FPRS_FEF|FPRS_DU) :
+ "o5", "g1", "g2", "g3", "g7", "cc");
+}
+#endif
+
+#endif /* _SPARC64_ASI_H */
diff --git a/include/asm-sparc64/xstat.h b/include/asm-sparc64/xstat.h
deleted file mode 100644
index f73a1b967..000000000
--- a/include/asm-sparc64/xstat.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/* $Id: xstat.h,v 1.1 1998/02/06 12:52:18 jj Exp $
- * xstat.h: sys_xstat/xmknod architecture dependent stuff.
- *
- * Copyright (C) 1998 Jakub Jelinek (jj@sunsite.mff.cuni.cz)
- */
-
-extern __inline__ int cp_xstat32(struct inode *inode, struct stat64_32 *s, unsigned long blocks, int blksize)
-{
- struct stat64_32 tmp;
-
- memset (&tmp, 0, sizeof(tmp));
- tmp.st_dev = (((__u64)MAJOR(inode->i_dev)) << 32) | MINOR(inode->i_dev);
- tmp.st_ino = inode->i_ino;
- tmp.st_mode = inode->i_mode;
- tmp.st_nlink = inode->i_nlink;
- tmp.st_uid = inode->i_uid;
- tmp.st_gid = inode->i_gid;
- tmp.st_rdev = (((__u64)MAJOR(inode->i_rdev)) << 32) | MINOR(inode->i_rdev);
- tmp.st_size = inode->i_size;
- tmp.st_blocks = blocks;
- tmp.st_atime = inode->i_atime;
- tmp.st_mtime = inode->i_mtime;
- tmp.st_ctime = inode->i_ctime;
- tmp.st_blksize = blksize;
- return copy_to_user(s,&tmp,sizeof(tmp));
-}
-
-extern __inline__ int cp_xstat(struct inode *inode, struct stat64 *s, unsigned long blocks, int blksize)
-{
- struct stat64 tmp;
- if (current->tss.flags & SPARC_FLAG_32BIT)
- return cp_xstat32(inode, (struct stat64_32 *)s, blocks, blksize);
- memset (&tmp, 0, sizeof(tmp));
- tmp.st_dev = (((__u64)MAJOR(inode->i_dev)) << 32) | MINOR(inode->i_dev);
- tmp.st_ino = inode->i_ino;
- tmp.st_mode = inode->i_mode;
- tmp.st_nlink = inode->i_nlink;
- tmp.st_uid = inode->i_uid;
- tmp.st_gid = inode->i_gid;
- tmp.st_rdev = (((__u64)MAJOR(inode->i_rdev)) << 32) | MINOR(inode->i_rdev);
- tmp.st_size = inode->i_size;
- tmp.st_atim.tv_sec = inode->i_atime;
- tmp.st_mtim.tv_sec = inode->i_mtime;
- tmp.st_ctim.tv_sec = inode->i_ctime;
- tmp.st_blksize = blksize;
- tmp.st_blocks = blocks;
- /* Should I check if all fs names are < 16? All in the kernel tree are */
- if (inode->i_sb)
- strcpy(tmp.st_fstype, inode->i_sb->s_type->name);
- return copy_to_user(s,&tmp,sizeof(tmp));
-}
-
-extern __inline__ int get_user_new_dev_t(kdev_t *kdev, __new_dev_t *udev) {
- __new_dev_t ndev;
- if (copy_from_user (&ndev, udev, sizeof(__new_dev_t))) return -EFAULT;
- *kdev = MKDEV((ndev >> 32), (__u32)ndev);
- return 0;
-}