Changeset 7bb6b06 in mainline


Ignore:
Timestamp:
2006-09-10T21:21:39Z (19 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
9a5b556
Parents:
208fa65
Message:

Small improvements here and there.

Files:
14 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/sparc64/_link.ld.in

    r208fa65 r7bb6b06  
    4444       
    4545        /DISCARD/ : {
    46                 *(.comment);
    47                 *(.note*);
     46                *(*);
    4847        }
    4948
  • kernel/arch/sparc64/include/asm.h

    r208fa65 r7bb6b06  
    223223        uintptr_t v;
    224224       
    225         __asm__ volatile ("and %%sp, %1, %0\n" : "=r" (v) : "r" (~(STACK_SIZE-1)));
     225        __asm__ volatile ("andn %%sp, %1, %0\n" : "=r" (v) : "r" (STACK_SIZE-1));
    226226       
    227227        return v;
  • kernel/arch/sparc64/include/trap/exception.h

    r208fa65 r7bb6b06  
    5151#include <typedefs.h>
    5252
     53extern void dump_istate(istate_t *istate);
     54
    5355extern void instruction_access_exception(int n, istate_t *istate);
    5456extern void instruction_access_error(int n, istate_t *istate);
  • kernel/arch/sparc64/src/asm.S

    r208fa65 r7bb6b06  
    228228
    229229.macro WRITE_ALTERNATE_REGISTER reg, bit
    230         save %sp, -STACK_WINDOW_SAVE_AREA_SIZE, %sp
    231         rdpr %pstate, %l0
    232         wrpr %l0, \bit, %pstate
    233         mov %i0, \reg
    234         wrpr %l0, 0, %pstate
    235         ret
    236         restore
     230        wrpr %g0, (\bit | PSTATE_PRIV_BIT), %pstate
     231        mov %o0, \reg
     232        retl
     233        wrpr %g0, PSTATE_PRIV_BIT, %pstate
    237234.endm
    238235
    239236.macro READ_ALTERNATE_REGISTER reg, bit
    240         save %sp, -STACK_WINDOW_SAVE_AREA_SIZE, %sp
    241         rdpr %pstate, %l0
    242         wrpr %l0, \bit, %pstate
    243         mov \reg, %i0
    244         wrpr %l0, 0, %pstate
    245         ret
    246         restore
     237        wrpr %g0, (\bit | PSTATE_PRIV_BIT), %pstate
     238        mov \reg, %o0
     239        retl
     240        wrpr %g0, PSTATE_PRIV_BIT, %pstate
    247241.endm
    248242
     
    306300       
    307301        done                            ! jump to userspace
     302
  • kernel/arch/sparc64/src/console.c

    r208fa65 r7bb6b06  
    5454#include <arch/mm/tlb.h>
    5555#include <arch/boot/boot.h>
     56#include <arch.h>
    5657
    5758#define KEYBOARD_POLL_PAUSE     50000   /* 50ms */
     
    8081void kkbdpoll(void *arg)
    8182{
     83        thread_detach(THREAD);
     84
    8285        if (!bootinfo.keyboard.addr)
    8386                return;
  • kernel/arch/sparc64/src/mm/tlb.c

    r208fa65 r7bb6b06  
    4848#include <config.h>
    4949#include <arch/trap/trap.h>
     50#include <arch/trap/exception.h>
    5051#include <panic.h>
    5152#include <arch/asm.h>
    52 #include <symtab.h>
    5353
    5454static void dtlb_pte_copy(pte_t *t, bool ro);
     
    308308void do_fast_instruction_access_mmu_miss_fault(istate_t *istate, const char *str)
    309309{
    310         char *tpc_str = get_symtab_entry(istate->tpc);
    311 
    312310        fault_if_from_uspace(istate, "%s\n", str);
    313         printf("TPC=%p, (%s)\n", istate->tpc, tpc_str);
     311        dump_istate(istate);
    314312        panic("%s\n", str);
    315313}
     
    318316{
    319317        uintptr_t va;
    320         char *tpc_str = get_symtab_entry(istate->tpc);
     318
     319        va = tag.vpn << PAGE_WIDTH;
     320
     321        fault_if_from_uspace(istate, "%s, Page=%p (ASID=%d)\n", str, va, tag.context);
     322        dump_istate(istate);
     323        printf("Faulting page: %p, ASID=%d\n", va, tag.context);
     324        panic("%s\n", str);
     325}
     326
     327void do_fast_data_access_protection_fault(istate_t *istate, tlb_tag_access_reg_t tag, const char *str)
     328{
     329        uintptr_t va;
    321330
    322331        va = tag.vpn << PAGE_WIDTH;
     
    324333        fault_if_from_uspace(istate, "%s, Page=%p (ASID=%d)\n", str, va, tag.context);
    325334        printf("Faulting page: %p, ASID=%d\n", va, tag.context);
    326         printf("TPC=%p, (%s)\n", istate->tpc, tpc_str);
    327         panic("%s\n", str);
    328 }
    329 
    330 void do_fast_data_access_protection_fault(istate_t *istate, tlb_tag_access_reg_t tag, const char *str)
    331 {
    332         uintptr_t va;
    333         char *tpc_str = get_symtab_entry(istate->tpc);
    334 
    335         va = tag.vpn << PAGE_WIDTH;
    336 
    337         fault_if_from_uspace(istate, "%s, Page=%p (ASID=%d)\n", str, va, tag.context);
    338         printf("Faulting page: %p, ASID=%d\n", va, tag.context);
    339         printf("TPC=%p, (%s)\n", istate->tpc, tpc_str);
     335        dump_istate(istate);
    340336        panic("%s\n", str);
    341337}
  • kernel/arch/sparc64/src/start.S

    r208fa65 r7bb6b06  
    7777        mov %o1, %o2
    7878        mov %o0, %o1
    79         set bootinfo, %o0
     79        sethi %hi(bootinfo), %o0
    8080        call memcpy
    81         nop
     81        or %o0, %lo(bootinfo), %o0
    8282
    8383        /*
    8484         * Switch to kernel trap table.
    8585         */
    86         set trap_table, %g1
    87         wrpr %g1, 0, %tba
     86        sethi %hi(trap_table), %g1
     87        wrpr %g1, %lo(trap_table), %tba
    8888
    8989        /*
     
    121121        sllx %r2, TTE_SIZE_SHIFT, %r2; \
    122122        or %r1, %r2, %r1; \
    123         set 1, %r2; \
     123        mov 1, %r2; \
    124124        sllx %r2, TTE_V_SHIFT, %r2; \
    125125        or %r1, %r2, %r1;
     
    173173        ! write ITLB tag of context 1
    174174        SET_TLB_TAG(g1, MEM_CONTEXT_TEMP)
    175         set VA_DMMU_TAG_ACCESS, %g2
     175        mov VA_DMMU_TAG_ACCESS, %g2
    176176        stxa %g1, [%g2] ASI_IMMU
    177177        flush %g5
     
    183183       
    184184        ! switch to context 1
    185         set MEM_CONTEXT_TEMP, %g1
     185        mov MEM_CONTEXT_TEMP, %g1
    186186        stxa %g1, [VA_PRIMARY_CONTEXT_REG] %asi ! ASI_DMMU is correct here !!!
    187187        flush %g5
     
    194194        ! write ITLB tag of context 0
    195195        SET_TLB_TAG(g1, MEM_CONTEXT_KERNEL)
    196         set VA_DMMU_TAG_ACCESS, %g2
     196        mov VA_DMMU_TAG_ACCESS, %g2
    197197        stxa %g1, [%g2] ASI_IMMU
    198198        flush %g5
     
    211211
    212212        ! set context 1 in the primary context register
    213         set MEM_CONTEXT_TEMP, %g1
     213        mov MEM_CONTEXT_TEMP, %g1
    214214        stxa %g1, [VA_PRIMARY_CONTEXT_REG] %asi ! ASI_DMMU is correct here !!!
    215215        flush %g5
  • kernel/arch/sparc64/src/trap/exception.c

    r208fa65 r7bb6b06  
    4040#include <debug.h>
    4141#include <typedefs.h>
     42#include <symtab.h>
     43#include <print.h>
     44
     45void dump_istate(istate_t *istate)
     46{
     47        printf("TSTATE=%#llx\n", istate->tstate);
     48        printf("TPC=%#llx (%s)\n", istate->tpc, get_symtab_entry(istate->tpc));
     49        printf("TNPC=%#llx (%s)\n", istate->tnpc, get_symtab_entry(istate->tnpc));
     50}
    4251
    4352/** Handle instruction_access_exception. (0x8) */
     
    4554{
    4655        fault_if_from_uspace(istate, "%s\n", __FUNCTION__);
    47         panic("%s at %p.\n", __FUNCTION__, istate->tpc);
     56        dump_istate(istate);
     57        panic("%s\n", __FUNCTION__);
    4858}
    4959
     
    5262{
    5363        fault_if_from_uspace(istate, "%s\n", __FUNCTION__);
    54         panic("%s at %p.\n", __FUNCTION__, istate->tpc);
     64        dump_istate(istate);
     65        panic("%s\n", __FUNCTION__);
    5566}
    5667
     
    5970{
    6071        fault_if_from_uspace(istate, "%s\n", __FUNCTION__);
    61         panic("%s at %p.\n", __FUNCTION__, istate->tpc);
     72        dump_istate(istate);
     73        panic("%s\n", __FUNCTION__);
    6274}
    6375
     
    6678{
    6779        fault_if_from_uspace(istate, "%s\n", __FUNCTION__);
    68         panic("%s at %p.\n", __FUNCTION__, istate->tpc);
     80        dump_istate(istate);
     81        panic("%s\n", __FUNCTION__);
    6982}
    7083
     
    7386{
    7487        fault_if_from_uspace(istate, "%s\n", __FUNCTION__);
    75         panic("%s at %p.\n", __FUNCTION__, istate->tpc);
     88        dump_istate(istate);
     89        panic("%s\n", __FUNCTION__);
    7690}
    7791
     
    8094{
    8195        fault_if_from_uspace(istate, "%s\n", __FUNCTION__);
    82         panic("%s from %p.\n", __FUNCTION__, istate->tpc);
     96        dump_istate(istate);
     97        panic("%s\n", __FUNCTION__);
    8398}
    8499
     
    87102{
    88103        fault_if_from_uspace(istate, "%s\n", __FUNCTION__);
    89         panic("%s from %p.\n", __FUNCTION__, istate->tpc);
     104        dump_istate(istate);
     105        panic("%s\n", __FUNCTION__);
    90106}
    91107
     
    94110{
    95111        fault_if_from_uspace(istate, "%s\n", __FUNCTION__);
    96         panic("%s from %p.\n", __FUNCTION__, istate->tpc);
     112        dump_istate(istate);
     113        panic("%s\n", __FUNCTION__);
    97114}
    98115
     
    101118{
    102119        fault_if_from_uspace(istate, "%s\n", __FUNCTION__);
    103         panic("%s at %p.\n", __FUNCTION__, istate->tpc);
     120        dump_istate(istate);
     121        panic("%s\n", __FUNCTION__);
    104122}
    105123
  • kernel/arch/sparc64/src/trap/trap_table.S

    r208fa65 r7bb6b06  
    651651        ba 1f
    652652        nop
    653 
    6546530:
    655654        save %sp, -PREEMPTIBLE_HANDLER_STACK_FRAME_SIZE, %sp
     
    782781        /*
    783782         * OTHERWIN != 0 or fall-through from the OTHERWIN == 0 case.
    784          * The CWP has already been restored to the value it had prior to the SAVE
     783         * The CWP has already been restored to the value it had after the SAVE
    785784         * at the beginning of this function.
    786785         */
  • kernel/genarch/src/kbd/ns16550.c

    r208fa65 r7bb6b06  
    4848#include <console/console.h>
    4949#include <interrupt.h>
     50#include <sysinfo/sysinfo.h>
    5051
    5152#define LSR_DATA_READY  0x01
     
    8788        chardev_initialize("ns16550_kbd", &kbrd, &ops);
    8889        stdin = &kbrd;
     90       
     91        sysinfo_set_item_val("kbd", NULL, true);
     92        sysinfo_set_item_val("kbd.irq", NULL, 0);
     93        sysinfo_set_item_val("kbd.address.virtual", NULL, (uintptr_t) kbd_virt_address);
    8994}
    9095
  • kernel/generic/src/printf/printf_core.c

    r208fa65 r7bb6b06  
    393393 * FLAGS:@n
    394394 *      - "#" Force to print prefix.
    395  *      For conversion \%o the prefix is 0, for %x and \%X prefixes are 0x and 0X
     395 *      For conversion \%o the prefix is 0, for \%x and \%X prefixes are 0x and 0X
    396396 *      and for conversion \%b the prefix is 0b.
    397397 *
  • kernel/generic/src/proc/task.c

    r208fa65 r7bb6b06  
    6868 * @li the tasks_lock is held,
    6969 * @li the task's lock is held when task's lock is acquired before releasing tasks_lock or
    70  * @li the task's refcount is grater than 0
     70 * @li the task's refcount is greater than 0
    7171 *
    7272 */
     
    436436         * and no new threads can be created.
    437437         */
    438        
     438
    439439        ipc_cleanup();
    440440        futex_cleanup();
  • kernel/generic/src/sysinfo/sysinfo.c

    r208fa65 r7bb6b06  
    7979       
    8080        if (subtree == NULL) {
    81                         sysinfo_item_t *item = malloc(sizeof(sysinfo_item_t), 0);
    82                         int i = 0, j;
    83                        
    84                         ASSERT(item);
    85                         *psubtree = item;
    86                         item->next = NULL;
    87                         item->val_type = SYSINFO_VAL_UNDEFINED;
    88                         item->subinfo.table = NULL;
    89 
    90                         while (name[i] && (name[i] != '.'))
    91                                 i++;
    92                        
    93                         item->name = malloc(i, 0);
    94                         ASSERT(item->name);
    95 
    96                         for (j = 0; j < i; j++)
    97                                 item->name[j] = name[j];
    98                         item->name[j] = 0;
    99                        
    100                         if (name[i]) { /* =='.' */
    101                                 item->subinfo_type = SYSINFO_SUBINFO_TABLE;
    102                                 return sysinfo_create_path(name + i + 1, &(item->subinfo.table));
    103                         }
    104                         item->subinfo_type = SYSINFO_SUBINFO_NONE;
    105                         return item;
     81                sysinfo_item_t *item = malloc(sizeof(sysinfo_item_t), 0);
     82                int i = 0, j;
     83                       
     84                ASSERT(item);
     85                *psubtree = item;
     86                item->next = NULL;
     87                item->val_type = SYSINFO_VAL_UNDEFINED;
     88                item->subinfo.table = NULL;
     89
     90                while (name[i] && (name[i] != '.'))
     91                        i++;
     92                       
     93                item->name = malloc(i, 0);
     94                ASSERT(item->name);
     95
     96                for (j = 0; j < i; j++)
     97                        item->name[j] = name[j];
     98                item->name[j] = 0;
     99                       
     100                if (name[i]) { /* =='.' */
     101                        item->subinfo_type = SYSINFO_SUBINFO_TABLE;
     102                        return sysinfo_create_path(name + i + 1, &(item->subinfo.table));
     103                }
     104                item->subinfo_type = SYSINFO_SUBINFO_NONE;
     105                return item;
    106106        }
    107107
  • uspace/ns/ns.c

    r208fa65 r7bb6b06  
    8484static void *klogaddr = NULL;
    8585
    86 static void get_as(ipc_callid_t callid, ipc_call_t *call, char *name, void **addr)
     86static void get_as_area(ipc_callid_t callid, ipc_call_t *call, char *name, void **addr)
    8787{
    8888        void *ph_addr;
     
    117117                        switch (IPC_GET_ARG3(call)) {
    118118                        case SERVICE_MEM_REALTIME:
    119                                 get_as(callid, &call, "clock.faddr", &clockaddr);
     119                                get_as_area(callid, &call, "clock.faddr", &clockaddr);
    120120                                break;
    121121                        case SERVICE_MEM_KLOG:
    122                                 get_as(callid, &call, "klog.faddr", &klogaddr);
     122                                get_as_area(callid, &call, "klog.faddr", &klogaddr);
    123123                                break;
    124124                        default:
Note: See TracChangeset for help on using the changeset viewer.