Files | |
file | arch.h |
file | arg.h |
file | asm.h |
file | atomic.h |
file | barrier.h |
file | boot.h |
file | byteorder.h |
file | console.h |
file | context.h |
file | cpu.h |
file | fb.h |
file | i8042.h |
file | tick.h |
file | elf.h |
file | faddr.h |
file | fpu_context.h |
file | memstr.h |
file | register.h |
file | stack.h |
file | types.h |
file | console.c |
file | cpu.c |
file | i8042.c |
file | tick.c |
file | sparc64.c |
Data Structures | |
struct | context |
struct | cpu_arch |
struct | fpu_context |
union | ver_reg |
union | pstate_reg |
union | tick_reg |
union | tick_compare_reg |
union | softint_reg |
Defines | |
#define | CS_ENTER_BARRIER() __asm__ volatile ("" ::: "memory") |
#define | CS_LEAVE_BARRIER() __asm__ volatile ("" ::: "memory") |
#define | memory_barrier() |
#define | read_barrier() |
#define | write_barrier() |
#define | VMA 0x400000 |
#define | LMA 0x4000 |
#define | SP_DELTA STACK_WINDOW_SAVE_AREA_SIZE |
#define | context_set(c, _pc, stack, size) |
#define | MANUF_FUJITSU 0x04 |
#define | MANUF_ULTRASPARC 0x17 |
#define | MANUF_SUN 0x3e |
#define | IMPL_ULTRASPARCI 0x10 |
#define | IMPL_ULTRASPARCII 0x11 |
#define | IMPL_ULTRASPARCII_I 0x12 |
#define | IMPL_ULTRASPARCII_E 0x13 |
#define | IMPL_ULTRASPARCIII 0x15 |
#define | IMPL_ULTRASPARCIV_PLUS 0x19 |
#define | IMPL_SPARC64V 0x5 |
#define | FB_PHYS_ADDRESS 0x1c901000000ULL |
#define | FB_X_RES 1152 |
#define | FB_Y_RES 900 |
#define | FB_COLOR_DEPTH 8 |
#define | KBD_PHYS_ADDRESS 0x1fff8904000ULL |
#define | STATUS_REG 4 |
#define | COMMAND_REG 4 |
#define | DATA_REG 6 |
#define | LAST_REG DATA_REG |
#define | TICK_DELTA 500000 |
#define | ELF_MACHINE EM_SPARCV9 |
#define | ELF_DATA_ENCODING ELFDATA2MSB |
#define | ELF_CLASS ELFCLASS64 |
#define | FADDR(fptr) ((__address) (fptr)) |
#define | memcpy(dst, src, cnt) __builtin_memcpy((dst), (src), (cnt)) |
#define | STACK_ITEM_SIZE 8 |
#define | STACK_ALIGNMENT 16 |
#define | STACK_WINDOW_SAVE_AREA_SIZE (16*STACK_ITEM_SIZE) |
#define | STACK_BIAS 2047 |
#define | NULL 0 |
#define | KEYBOARD_POLL_PAUSE 50000 |
Typedefs | |
typedef ver_reg | ver_reg_t |
typedef pstate_reg | pstate_reg_t |
typedef tick_reg | tick_reg_t |
typedef tick_compare_reg | tick_compare_reg_t |
typedef softint_reg | softint_reg_t |
typedef signed char | __s8 |
typedef signed short | __s16 |
typedef signed int | __s32 |
typedef signed long | __s64 |
typedef unsigned char | __u8 |
typedef unsigned short | __u16 |
typedef unsigned int | __u32 |
typedef unsigned long | __u64 |
typedef __u64 | __address |
typedef __u64 | pfn_t |
typedef __u64 | ipl_t |
typedef __u64 | __native |
typedef __s64 | __snative |
typedef pte | pte_t |
typedef __u8 | asi_t |
Functions | |
static __u64 | pstate_read (void) |
static void | pstate_write (__u64 v) |
static __u64 | tick_compare_read (void) |
static void | tick_compare_write (__u64 v) |
static __u64 | tick_read (void) |
static void | tick_write (__u64 v) |
static __u64 | softint_read (void) |
static void | softint_write (__u64 v) |
static void | clear_softint_write (__u64 v) |
static ipl_t | interrupts_enable (void) |
static ipl_t | interrupts_disable (void) |
static void | interrupts_restore (ipl_t ipl) |
static ipl_t | interrupts_read (void) |
static __address | get_stack_base (void) |
static __u64 | ver_read (void) |
static __u64 | tba_read (void) |
static __u64 | tpc_read (void) |
static __u64 | tl_read (void) |
static void | tba_write (__u64 v) |
static __u64 | asi_u64_read (asi_t asi, __address va) |
static void | asi_u64_write (asi_t asi, __address va, __u64 v) |
void | cpu_halt (void) |
void | cpu_sleep (void) |
void | asm_delay_loop (__u32 t) |
static long | atomic_add (atomic_t *val, int i) |
static long | atomic_preinc (atomic_t *val) |
static long | atomic_postinc (atomic_t *val) |
static long | atomic_predec (atomic_t *val) |
static long | atomic_postdec (atomic_t *val) |
static void | atomic_inc (atomic_t *val) |
static void | atomic_dec (atomic_t *val) |
static void | flush (void) |
static void | membar (void) |
static __u64 | __u64_le2host (__u64 n) |
static __native | __native_le2host (__native n) |
void | kofwinput (void *arg) |
void | kkbdpoll (void *arg) |
void | ofw_sparc64_console_init (void) |
void | standalone_sparc64_console_init (void) |
static void | i8042_data_write (__u8 data) |
static __u8 | i8042_data_read (void) |
static __u8 | i8042_status_read (void) |
static void | i8042_command_write (__u8 command) |
void | kbd_init (void) |
void | tick_init (void) |
void | tick_interrupt (int n, istate_t *istate) |
void | memsetw (__address dst, size_t cnt, __u16 x) |
void | memsetb (__address dst, size_t cnt, __u8 x) |
int | memcmp (__address src, __address dst, int cnt) |
static void | ofw_sparc64_putchar (chardev_t *d, const char ch) |
static char | ofw_sparc64_getchar (chardev_t *d) |
static void | ofw_sparc64_suspend (chardev_t *d) |
static void | ofw_sparc64_resume (chardev_t *d) |
void | cpu_arch_init (void) |
void | cpu_identify (void) |
void | cpu_print_report (cpu_t *m) |
void | arch_pre_mm_init (void) |
void | arch_post_mm_init (void) |
void | arch_pre_smp_init (void) |
void | arch_post_smp_init (void) |
void | calibrate_delay_loop (void) |
void | arch_grab_console (void) |
void | arch_release_console (void) |
Variables | |
volatile __u8 * | kbd_virt_address |
mutex_t | canwork |
static volatile int | ofw_console_active |
static chardev_t | ofw_sparc64_console |
static chardev_operations_t | ofw_sparc64_console_ops |
volatile __u8 * | kbd_virt_address = NULL |
|
Definition at line 43 of file i8042.h. Referenced by i8042_command_write(). |
|
Value: (c)->pc = ((__address) _pc) - 8; \ (c)->sp = ((__address) stack) + ALIGN_UP((size), STACK_ALIGNMENT) - (STACK_BIAS + SP_DELTA); \ (c)->fp = -STACK_BIAS; \ (c)->cleanwin = 0 |
|
Definition at line 41 of file barrier.h. Referenced by spinlock_trylock(). |
|
Definition at line 42 of file barrier.h. Referenced by spinlock_unlock(). |
|
Definition at line 44 of file i8042.h. Referenced by i8042_data_read(), and i8042_data_write(). |
|
Definition at line 40 of file elf.h. Referenced by elf_load(). |
|
Definition at line 39 of file elf.h. Referenced by elf_load(). |
|
Definition at line 38 of file elf.h. Referenced by elf_load(). |
|
Definition at line 40 of file faddr.h. Referenced by main_ap(), scheduler(), and thread_create(). |
|
Definition at line 43 of file fb.h. Referenced by standalone_sparc64_console_init(). |
|
Definition at line 38 of file fb.h. Referenced by standalone_sparc64_console_init(). |
|
Definition at line 40 of file fb.h. Referenced by standalone_sparc64_console_init(). |
|
Definition at line 41 of file fb.h. Referenced by standalone_sparc64_console_init(). |
|
Definition at line 51 of file cpu.h. Referenced by cpu_print_report(). |
|
Definition at line 44 of file cpu.h. Referenced by cpu_print_report(). |
|
Definition at line 45 of file cpu.h. Referenced by cpu_print_report(). |
|
Definition at line 47 of file cpu.h. Referenced by cpu_print_report(). |
|
Definition at line 46 of file cpu.h. Referenced by cpu_print_report(). |
|
Definition at line 48 of file cpu.h. Referenced by cpu_print_report(). |
|
Definition at line 49 of file cpu.h. Referenced by cpu_print_report(). |
|
Definition at line 40 of file i8042.h. Referenced by kbd_init(). |
|
Definition at line 51 of file console.c. Referenced by kkbdpoll(), and kofwinput(). |
|
Definition at line 46 of file i8042.h. Referenced by kbd_init(). |
|
|
|
Definition at line 40 of file cpu.h. Referenced by cpu_print_report(). |
|
Definition at line 42 of file cpu.h. Referenced by cpu_print_report(). |
|
UltraSPARC I, UltraSPARC II Definition at line 41 of file cpu.h. Referenced by cpu_print_report(). |
|
Definition at line 38 of file memstr.h. Referenced by _bubblesort(), _qsort(), clear_screen(), scroll_screen(), sys_ipc_answer(), sys_ipc_answer_fast(), thread_create(), and vsnprintf_write(). |
|
Definition at line 44 of file barrier.h. Referenced by preemption_disable(), and preemption_enable(). |
|
|
|
|
|
|
According to SPARC Compliance Definition, every stack frame is 16-byte aligned. |
|
By convention, the actual top of the stack is sp + STACK_BIAS. |
|
|
|
16-extended-word save area for i[0-7] and l[0-7] registers. |
|
Definition at line 42 of file i8042.h. Referenced by i8042_status_read(). |
|
Definition at line 40 of file tick.h. Referenced by tick_init(). |
|
|
|
Definition at line 46 of file barrier.h. Referenced by clock_update_counters(). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Definition at line 73 of file register.h. |
|
|
|
Definition at line 105 of file register.h. |
|
Definition at line 93 of file register.h. |
|
Definition at line 83 of file register.h. |
|
Definition at line 53 of file register.h. |
|
Definition at line 46 of file byteorder.h. References __u64_byteorder_swap(). Here is the call graph for this function: |
|
Definition at line 41 of file byteorder.h. References __u64_byteorder_swap(). Referenced by get_symbol_addr(), get_symtab_entry(), and symtab_print_search(). Here is the call graph for this function: |
|
Acquire console back for kernel Definition at line 88 of file sparc64.c. Referenced by sys_debug_enable_console(). |
|
Definition at line 51 of file sparc64.c. References standalone_sparc64_console_init(). Referenced by main_ap(), and main_bsp_separated_stack(). Here is the call graph for this function: |
|
Definition at line 60 of file sparc64.c. References kkbdpoll(), kofwinput(), NULL, panic, TASK, thread_create(), and thread_ready(). Here is the call graph for this function: |
|
Definition at line 43 of file sparc64.c. References interrupts_disable(), ofw_sparc64_console_init(), tick_init(), and trap_init(). Referenced by main_ap(), and main_bsp_separated_stack(). Here is the call graph for this function: |
|
Definition at line 56 of file sparc64.c. Referenced by main_bsp_separated_stack(). |
|
Return console to userspace Definition at line 94 of file sparc64.c. Referenced by cmd_continue(). |
|
Load __u64 from alternate space.
Definition at line 287 of file asm.h. Referenced by dmmu_set(), dtlb_data_access_read(), dtlb_sfar_read(), dtlb_sfsr_read(), dtlb_tag_access_read(), dtlb_tag_read_read(), immu_set(), itlb_data_access_read(), itlb_sfsr_read(), itlb_tag_access_read(), itlb_tag_read_read(), mmu_primary_context_read(), and mmu_secondary_context_read(). |
|
Store __u64 to alternate space.
Definition at line 302 of file asm.h. Referenced by dmmu_set(), dtlb_data_access_write(), dtlb_data_in_write(), dtlb_demap(), dtlb_sfsr_write(), dtlb_tag_access_write(), immu_set(), itlb_data_access_write(), itlb_data_in_write(), itlb_demap(), itlb_sfsr_write(), itlb_tag_access_write(), mmu_primary_context_write(), and mmu_secondary_context_write(). |
|
Referenced by delay(). |
|
Atomic add operation. Use atomic compare and swap operation to atomically add signed value.
Definition at line 50 of file atomic.h. References atomic::count. Referenced by atomic_dec(), atomic_inc(), atomic_postdec(), atomic_postinc(), atomic_predec(), and atomic_preinc(). |
|
Definition at line 95 of file atomic.h. References atomic_add(). Referenced by _slab_free(), check_call_limit(), get_mag_from_cache(), ipc_wait_for_call(), kcpulb(), magazine_destroy(), magazine_obj_get(), slab_space_free(), and sys_ipc_wait_for_call(). Here is the call graph for this function: |
|
Definition at line 90 of file atomic.h. References atomic_add(). Referenced by _ipc_call(), ipc_backsend_err(), magazine_obj_put(), put_mag_to_cache(), slab_alloc(), slab_space_alloc(), and thread_ready(). Here is the call graph for this function: |
|
Definition at line 85 of file atomic.h. References atomic_add(). Here is the call graph for this function: |
|
Definition at line 75 of file atomic.h. References atomic_add(). Here is the call graph for this function: |
|
Definition at line 80 of file atomic.h. References atomic_add(). Here is the call graph for this function: |
|
Definition at line 70 of file atomic.h. References atomic_add(). Referenced by check_call_limit(), ipc_irq_send_msg(), and ipc_irq_send_notif(). Here is the call graph for this function: |
|
Definition at line 81 of file sparc64.c. Referenced by main_ap(), and main_bsp_separated_stack(). |
|
Write CLEAR_SOFTINT Register. Bits set in CLEAR_SOFTINT register will be cleared in SOFTINT register.
Definition at line 137 of file asm.h. Referenced by tick_interrupt(). |
|
|
|
Referenced by _getc(), halt(), and ofw_done(). |
|
Definition at line 45 of file cpu.c. References CPU, and ver_read(). Here is the call graph for this function: |
|
Definition at line 50 of file cpu.c. References CPU, IMPL_SPARC64V, IMPL_ULTRASPARCI, IMPL_ULTRASPARCII, IMPL_ULTRASPARCII_E, IMPL_ULTRASPARCII_I, IMPL_ULTRASPARCIII, IMPL_ULTRASPARCIV_PLUS, MANUF_FUJITSU, MANUF_SUN, MANUF_ULTRASPARC, and printf(). Referenced by cpu_list(). Here is the call graph for this function: |
|
Referenced by find_best_thread(). |
|
Flush Instruction Memory instruction. Definition at line 49 of file barrier.h. Referenced by dtlb_data_access_write(), dtlb_data_in_write(), dtlb_demap(), dtlb_sfsr_write(), dtlb_tag_access_write(), itlb_data_access_write(), itlb_data_in_write(), itlb_demap(), itlb_sfsr_write(), itlb_tag_access_write(), mmu_primary_context_write(), and mmu_secondary_context_write(). |
|
Return base address of current stack. Return the base address of the current stack. The stack is assumed to be STACK_SIZE bytes long. The stack must start on page boundary. Definition at line 210 of file asm.h. References STACK_SIZE. |
|
Definition at line 65 of file i8042.h. References COMMAND_REG, and kbd_virt_address. Referenced by i8042_grab(). |
|
Definition at line 55 of file i8042.h. References DATA_REG, and kbd_virt_address. Referenced by i8042_init(), i8042_interrupt(), i8042_poll(), and key_read(). |
|
Definition at line 50 of file i8042.h. References DATA_REG, and kbd_virt_address. Referenced by i8042_grab(). |
|
Definition at line 60 of file i8042.h. References kbd_virt_address, and STATUS_REG. Referenced by i8042_init(), i8042_poll(), i8042_wait(), and key_read(). |
|
Disable interrupts. Disable interrupts and return previous value of IPL.
Definition at line 168 of file asm.h. References pstate_reg::ie, pstate_read(), pstate_write(), and pstate_reg::value. Here is the call graph for this function: |
|
Enable interrupts. Enable interrupts and return previous value of IPL.
Definition at line 149 of file asm.h. References pstate_reg::ie, pstate_read(), pstate_write(), and pstate_reg::value. Here is the call graph for this function: |
|
Return interrupt priority level. Return IPL.
Definition at line 200 of file asm.h. References pstate_read(). Here is the call graph for this function: |
|
Restore interrupt priority level. Restore IPL.
Definition at line 186 of file asm.h. References pstate_reg::ie, pstate_read(), pstate_write(), and pstate_reg::value. Here is the call graph for this function: |
|
Definition at line 42 of file i8042.c. References hw_map(), i8042_init(), KBD_PHYS_ADDRESS, kbd_virt_address, and LAST_REG. Referenced by standalone_sparc64_console_init(). Here is the call graph for this function: |
|
Kernel thread for polling keyboard.
Definition at line 178 of file console.c. References i8042_poll(), KEYBOARD_POLL_PAUSE, and thread_usleep(). Referenced by arch_post_smp_init(). Here is the call graph for this function: |
|
Kernel thread for pushing characters read from OFW to input buffer.
Definition at line 155 of file console.c. References canwork, chardev_push_character(), KEYBOARD_POLL_PAUSE, mutex_lock, mutex_unlock(), NULL, ofw_console_active, ofw_sparc64_console, ofw_sparc64_getchar(), and thread_usleep(). Referenced by arch_post_smp_init(). Here is the call graph for this function: |
|
Memory Barrier instruction. Definition at line 65 of file barrier.h. Referenced by dmmu_set(), and immu_set(). |
|
|
|
Referenced by _ipc_call_init(), _slab_cache_create(), anon_page_fault(), as_area_create(), cpu_init(), hash_table_create(), make_magcache(), and thread_create(). |
|
|
|
Initialize kernel console to use OpenFirmware services. Definition at line 71 of file console.c. References canwork, chardev_initialize(), mutex_initialize(), ofw_console_active, ofw_sparc64_console, ofw_sparc64_console_ops, stdin, and stdout. Referenced by arch_pre_mm_init(). Here is the call graph for this function: |
|
Read one character using OpenFirmware. The call is non-blocking.
Definition at line 121 of file console.c. References pstate_reg::am, ofw_getchar(), pstate_read(), pstate_write(), and pstate_reg::value. Referenced by kofwinput(). Here is the call graph for this function: |
|
Write one character using OpenFirmware.
Definition at line 95 of file console.c. References pstate_reg::am, ofw_putchar(), pstate_read(), pstate_write(), and pstate_reg::value. Here is the call graph for this function: |
|
Definition at line 146 of file console.c. References canwork, and mutex_unlock(). Here is the call graph for this function: |
|
Definition at line 141 of file console.c. References canwork, and mutex_lock. |
|
Read Processor State register.
Definition at line 47 of file asm.h. Referenced by interrupts_disable(), interrupts_enable(), interrupts_read(), interrupts_restore(), ofw_sparc64_getchar(), and ofw_sparc64_putchar(). |
|
Write Processor State register.
Definition at line 60 of file asm.h. Referenced by interrupts_disable(), interrupts_enable(), interrupts_restore(), ofw_sparc64_getchar(), and ofw_sparc64_putchar(). |
|
Read SOFTINT Register.
Definition at line 113 of file asm.h. Referenced by tick_interrupt(). |
|
Write SOFTINT Register.
|
|
Initialize kernel console to use framebuffer and keyboard directly. Definition at line 81 of file console.c. References FB_COLOR_DEPTH, fb_init(), FB_PHYS_ADDRESS, FB_X_RES, FB_Y_RES, kbd_init(), NULL, ofw_console_active, and stdin. Referenced by arch_post_mm_init(). Here is the call graph for this function: |
|
Read Trap Base Address register.
|
|
Write Trap Base Address register.
Definition at line 275 of file asm.h. Referenced by trap_switch_trap_table(). |
|
Read TICK_compare Register.
|
|
Write TICK_compare Register.
Definition at line 82 of file asm.h. Referenced by tick_init(). |
|
Initialize tick interrupt. Definition at line 44 of file tick.c. References compare(), interrupt_register(), tick_compare_write(), TICK_DELTA, tick_interrupt(), and tick_write(). Referenced by arch_pre_mm_init(). Here is the call graph for this function: |
|
Process tick interrupt.
Definition at line 60 of file tick.c. References ASSERT, clear_softint_write(), clock(), softint_read(), softint_reg::tick_int, tick_write(), and softint_reg::value. Referenced by tick_init(). Here is the call graph for this function: |
|
Read TICK Register.
|
|
Write TICK Register.
Definition at line 104 of file asm.h. Referenced by tick_init(), and tick_interrupt(). |
|
Read Trap Level register.
|
|
Read Trap Program Counter register.
Definition at line 249 of file asm.h. Referenced by do_data_access_error(), do_illegal_instruction(), and fast_data_access_mmu_miss(). |
|
Read Version Register.
Definition at line 223 of file asm.h. Referenced by cpu_identify(). |
|
Definition at line 58 of file console.c. Referenced by kofwinput(), ofw_sparc64_console_init(), ofw_sparc64_resume(), and ofw_sparc64_suspend(). |
|
Definition at line 40 of file i8042.c. Referenced by i8042_command_write(), i8042_data_read(), i8042_data_write(), i8042_status_read(), and kbd_init(). |
|
Definition at line 40 of file i8042.c. Referenced by i8042_command_write(), i8042_data_read(), i8042_data_write(), i8042_status_read(), and kbd_init(). |
|
Definition at line 60 of file console.c. Referenced by kofwinput(), ofw_sparc64_console_init(), and standalone_sparc64_console_init(). |
|
Definition at line 62 of file console.c. Referenced by kofwinput(), and ofw_sparc64_console_init(). |
|
Initial value: { .write = ofw_sparc64_putchar, .read = ofw_sparc64_getchar, .resume = ofw_sparc64_resume, .suspend = ofw_sparc64_suspend } Definition at line 63 of file console.c. Referenced by ofw_sparc64_console_init(). |