Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset 153fbf9 in mainline


Ignore:
Timestamp:
2010-02-23T22:27:22Z (12 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master
Children:
a634485
Parents:
68acf21 (diff), b905002 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge sparc64 fixes.

Location:
kernel/arch/sparc64
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/sparc64/include/sun4v/hypercall.h

    r68acf21 r153fbf9  
    7575
    7676/* return codes */
    77 #define EOK             0       /**< Successful return */
    78 #define ENOCPU          1       /**< Invalid CPU id */
    79 #define ENORADDR        2       /**< Invalid real address */
    80 #define ENOINTR         3       /**< Invalid interrupt id */
    81 #define EBADPGSZ        4       /**< Invalid pagesize encoding */
    82 #define EBADTSB         5       /**< Invalid TSB description */
    83 #define HV_EINVAL       6       /**< Invalid argument */
    84 #define EBADTRAP        7       /**< Invalid function number */
    85 #define EBADALIGN       8       /**< Invalid address alignment */
    86 #define EWOULDBLOCK     9       /**< Cannot complete operation without blocking */
    87 #define ENOACCESS       10      /**< No access to specified resource */
    88 #define EIO             11      /**< I/O Error */
    89 #define ECPUERROR       12      /**< CPU is in error state */
    90 #define ENOTSUPPORTED   13      /**< Function not supported */
    91 #define ENOMAP          14      /**< No mapping found */
    92 #define ETOOMANY        15      /**< Too many items specified / limit reached */
    93 #define ECHANNEL        16      /**< Invalid LDC channel */
    94 #define HV_EBUSY        17      /**< Operation failed as resource is otherwise busy */
     77#define HV_EOK                  0       /**< Successful return */
     78#define HV_ENOCPU               1       /**< Invalid CPU id */
     79#define HV_ENORADDR             2       /**< Invalid real address */
     80#define HV_ENOINTR              3       /**< Invalid interrupt id */
     81#define HV_EBADPGSZ             4       /**< Invalid pagesize encoding */
     82#define HV_EBADTSB              5       /**< Invalid TSB description */
     83#define HV_EINVAL               6       /**< Invalid argument */
     84#define HV_EBADTRAP             7       /**< Invalid function number */
     85#define HV_EBADALIGN            8       /**< Invalid address alignment */
     86#define HV_EWOULDBLOCK          9       /**< Cannot complete operation without blocking */
     87#define HV_ENOACCESS            10      /**< No access to specified resource */
     88#define HV_EIO                  11      /**< I/O Error */
     89#define HV_ECPUERROR            12      /**< CPU is in error state */
     90#define HV_ENOTSUPPORTED        13      /**< Function not supported */
     91#define HV_ENOMAP               14      /**< No mapping found */
     92#define HV_ETOOMANY             15      /**< Too many items specified / limit reached */
     93#define HV_ECHANNEL             16      /**< Invalid LDC channel */
     94#define HV_EBUSY                17      /**< Operation failed as resource is otherwise busy */
    9595
    9696
     
    190190__hypercall_fast_ret1(const uint64_t p1, const uint64_t p2, const uint64_t p3,
    191191    const uint64_t p4, const uint64_t p5, const uint64_t function_number,
    192     uint64_t * const ret1)
     192    uint64_t *ret1)
    193193{
    194         uint64_t errno = __hypercall_fast(p1, p2, p3, p4, p5, function_number);
    195         if (ret1 != NULL) {
    196                 asm volatile ("mov %%o1, %0\n" : "=r" (*ret1));
    197         }
    198         return errno;
     194        register uint64_t a6 asm("o5") = function_number;
     195        register uint64_t a1 asm("o0") = p1;
     196        register uint64_t a2 asm("o1") = p2;
     197        register uint64_t a3 asm("o2") = p3;
     198        register uint64_t a4 asm("o3") = p4;
     199        register uint64_t a5 asm("o4") = p5;
     200       
     201        asm volatile (
     202                "ta %8\n"
     203                : "=r" (a1), "=r" (a2)
     204                : "r" (a1), "r" (a2), "r" (a3), "r" (a4), "r" (a5), "r" (a6),
     205                  "i" (FAST_TRAP)
     206                : "memory"
     207        );
     208
     209        if (ret1)
     210                *ret1 = a2;
     211
     212        return a1;
    199213}
    200214
  • kernel/arch/sparc64/src/drivers/niagara.c

    r68acf21 r153fbf9  
    104104static inline void do_putchar(const char c) {
    105105        /* repeat until the buffer is non-full */
    106         while (__hypercall_fast1(CONS_PUTCHAR, c) == EWOULDBLOCK)
     106        while (__hypercall_fast1(CONS_PUTCHAR, c) == HV_EWOULDBLOCK)
    107107                ;
    108108}
     
    139139
    140140        /* read character from keyboard, send it to upper layers of HelenOS */
    141         if (__hypercall_fast_ret1(0, 0, 0, 0, 0, CONS_GETCHAR, &c) == EOK) {
     141        if (__hypercall_fast_ret1(0, 0, 0, 0, 0, CONS_GETCHAR, &c) == HV_EOK) {
    142142                if (!silent) {
    143143                        /* kconsole active, send the character to kernel */
  • kernel/arch/sparc64/src/mm/sun4v/tlb.c

    r68acf21 r153fbf9  
    406406        uint64_t errno =  __hypercall_fast3(MMU_DEMAP_ALL, 0, 0,
    407407                MMU_FLAG_DTLB | MMU_FLAG_ITLB);
    408         if (errno != EOK) {
     408        if (errno != HV_EOK) {
    409409                panic("Error code = %d.\n", errno);
    410410        }
  • kernel/arch/sparc64/src/sun4v/md.c

    r68acf21 r153fbf9  
    104104static md_element_t *get_element(element_idx_t idx)
    105105{
    106         return (md_element_t *) (
    107                 mach_desc + sizeof(md_header_t) + idx * sizeof(md_element_t));
     106        return (md_element_t *) (mach_desc +
     107            sizeof(md_header_t) + idx * sizeof(md_element_t));
    108108}
    109109
     
    114114        uintptr_t name_offset = get_element(idx)->name_offset;
    115115        return (char *) mach_desc + sizeof(md_header_t) +
    116                 md_header->node_blk_sz + name_offset;
     116            md_header->node_blk_sz + name_offset;
    117117}
    118118
     
    137137                md_element_t *element = get_element(idx);
    138138                if (element->tag == PROP_VAL &&
    139                                 str_cmp(key, get_element_name(idx)) == 0) {
     139                    str_cmp(key, get_element_name(idx)) == 0) {
    140140                        *result = element->d.val;
    141141                        return true;
     
    161161                md_element_t *element = get_element(idx);
    162162                if (element->tag == PROP_DATA &&
    163                                 str_cmp(key, get_element_name(idx)) == 0) {
     163                    str_cmp(key, get_element_name(idx)) == 0) {
    164164                        *result = (char *) mach_desc + sizeof(md_header_t) +
    165                                 md_header->node_blk_sz + md_header->name_blk_sz +
    166                                 element->d.y.data_offset;
     165                            md_header->node_blk_sz + md_header->name_blk_sz +
     166                            element->d.y.data_offset;
    167167                        return true;
    168168                }
     
    186186                md_element_t *element = get_element(*it);
    187187                if (element->tag == PROP_ARC &&
    188                                 str_cmp("fwd", get_element_name(*it)) == 0) {
     188                    str_cmp("fwd", get_element_name(*it)) == 0) {
    189189                        return true;
    190190                }
     
    289289
    290290                if (element->tag == NODE &&
    291                                 str_cmp(name, get_element_name(*node)) == 0) {
     291                    str_cmp(name, get_element_name(*node)) == 0) {
    292292                        return true;
    293293                }
     
    306306{
    307307        uint64_t retval = __hypercall_fast2(MACH_DESC, KA2PA(mach_desc),
    308                 MD_MAX_SIZE);
     308            MD_MAX_SIZE);
    309309
    310310        retval = retval;
    311         if (retval != EOK) {
     311        if (retval != HV_EOK) {
    312312                printf("Could not retrieve machine description, error = %d.\n",
    313                         retval);
     313                    retval);
    314314        }
    315315}
  • kernel/arch/sparc64/src/trap/sun4v/interrupt.c

    r68acf21 r153fbf9  
    8686                CPU_MONDO_QUEUE_ID,
    8787                KA2PA(cpu_mondo_queues[CPU->id]),
    88                 CPU_MONDO_NENTRIES) != EOK)
     88                CPU_MONDO_NENTRIES) != HV_EOK)
    8989                        panic("Initializing mondo queue failed on CPU %d.\n",
    9090                            CPU->arch.id);
Note: See TracChangeset for help on using the changeset viewer.