Changeset 1120276 in mainline


Ignore:
Timestamp:
2005-12-27T12:03:29Z (19 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
7614565
Parents:
39494010
Message:

sparc64 work.
Tick interrupt support.

Location:
arch/sparc64
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • arch/sparc64/include/asm.h

    r39494010 r1120276  
    123123}
    124124
     125/** Write CLEAR_SOFTINT Register.
     126 *
     127 * Bits set in CLEAR_SOFTINT register will be cleared in SOFTINT register.
     128 *
     129 * @param New value of CLEAR_SOFTINT register.
     130 */
     131static inline void clear_softint_write(__u64 v)
     132{
     133        __asm__ volatile ("wr %0, %1, %%clear_softint\n" : : "r" (v), "i" (0));
     134}
     135
    125136/** Enable interrupts.
    126137 *
  • arch/sparc64/include/drivers/tick.h

    r39494010 r1120276  
    3030#define __sparc64_TICK_H__
    3131
    32 #define TICK_DELTA        100000
     32#define TICK_DELTA        500000
    3333
    3434extern void tick_init(void);
  • arch/sparc64/src/drivers/tick.c

    r39494010 r1120276  
    3232#include <arch/register.h>
    3333#include <debug.h>
    34 #include <print.h>
     34#include <time/clock.h>
    3535
     36/** Initialize tick interrupt. */
    3637void tick_init(void)
    3738{
     
    4546}
    4647
     48/** Process tick interrupt.
     49 *
     50 * @param n Interrupt Level, 14,  (can be ignored)
     51 * @param stack Stack pointer of the interrupted context.
     52 */
    4753void tick_interrupt(int n, void *stack)
    4854{
    49         panic("Unserviced %s.\n", __FUNCTION__);
     55        softint_reg_t softint, clear;
     56       
     57        softint.value = softint_read();
     58       
     59        /*
     60         * Make sure we are servicing interrupt_level_14
     61         */
     62        ASSERT(n == 14);
     63       
     64        /*
     65         * Make sure we are servicing TICK_INT.
     66         */
     67        ASSERT(softint.tick_int);
     68
     69        /*
     70         * Clear tick interrupt.
     71         */
     72        clear.value = 0;
     73        clear.tick_int = 1;
     74        clear_softint_write(clear.value);
     75       
     76        /*
     77         * Restart counter.
     78         */
     79        tick_write(0);
     80       
     81        clock();
    5082}
Note: See TracChangeset for help on using the changeset viewer.