Changeset 1025d28 in mainline


Ignore:
Timestamp:
2008-11-13T07:54:48Z (16 years ago)
Author:
Jakub Vana <jakub.vana@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
37e518b
Parents:
aa8d0f7
Message:

IA64: Support for real frequency

Files:
4 edited

Legend:

Unmodified
Added
Removed
  • boot/arch/ia64/loader/gefi/HelenOS/hello.c

    raa8d0f7 r1025d28  
    154154
    155155        rArg rSAL;
     156        rArg rPAL;
     157
    156158        //Setup AP's wake up address
    157 
    158159        LibSalProc(0x01000000,2,0x4400200,0,0,0,0,0,&rSAL);
     160
     161
     162        //Get System Frequency
     163        UINT64 sys_freq;
     164        LibSalProc(0x01000012,0,0,0,0,0,0,0,&rSAL);
     165        sys_freq=rSAL.p1;
     166       
     167
     168        UINT64 freq_scale;
     169        //Get CPU Frequency to System Frequency ratio
     170        LibPalProc(14,0,0,0,&rPAL);
     171        freq_scale=rPAL.p1;
    159172
    160173
     
    162175        LibGetSalIpiBlock(&sapic);
    163176        Print (L"SAPIC:%X\n", sapic);
    164         bootinfo->sapic=sapic;
     177        //bootinfo->sapic=sapic;
    165178
    166179
     
    168181        wakeup_intno=0xf0;
    169182        Print (L"WAKEUP INTNO:%X\n", wakeup_intno);
    170         bootinfo->wakeup_intno=wakeup_intno;
     183        //bootinfo->wakeup_intno=wakeup_intno;
    171184
    172185
     
    213226        bootinfo->sapic=(unsigned long *)sapic;
    214227        bootinfo->wakeup_intno=wakeup_intno;
     228        bootinfo->sys_freq=sys_freq;
     229        bootinfo->freq_scale=freq_scale;
    215230       
    216231        //Run Kernel
  • kernel/arch/ia64/include/bootinfo.h

    raa8d0f7 r1025d28  
    4949
    5050        unsigned long * sapic;
     51        unsigned long sys_freq;
     52        unsigned long freq_scale;
    5153        unsigned int wakeup_intno;
    5254
  • kernel/arch/ia64/include/drivers/it.h

    raa8d0f7 r1025d28  
    4242 *
    4343 */
    44 #define IT_DELTA        100000
     44#define IT_DELTA        it_delta
    4545
    4646extern void it_init(void);
  • kernel/arch/ia64/src/drivers/it.c

    raa8d0f7 r1025d28  
    4747#define IT_SERVICE_CLOCKS 64
    4848
     49#define FREQ_NUMERATOR_SHIFT 32
     50#define FREQ_NUMERATOR_MASK 0xffffffff00000000LL
     51
     52#define FREQ_DENOMINATOR_SHIFT 0
     53#define FREQ_DENOMINATOR_MASK 0xffffffffLL
     54
     55
     56uint64_t it_delta;
     57
     58
    4959static irq_t it_irq;
    5060
     
    6575                it_irq.handler = it_interrupt;
    6676                irq_register(&it_irq);
     77               
     78                uint64_t base_freq;
     79                base_freq  = ((bootinfo->freq_scale) & FREQ_NUMERATOR_MASK) >> FREQ_NUMERATOR_SHIFT;
     80                base_freq *= bootinfo->sys_freq;
     81                base_freq /= ((bootinfo->freq_scale) & FREQ_DENOMINATOR_MASK) >> FREQ_DENOMINATOR_SHIFT;
     82               
     83                it_delta = base_freq /HZ;
     84               
    6785        }
    6886       
Note: See TracChangeset for help on using the changeset viewer.