Mercurial > ecos-v3_0-branch
changeset 1914:d485b9fe6131
Adjust HALs to match the updated gprof support
| author | bartv |
|---|---|
| date | Mon, 21 Mar 2005 14:14:54 +0000 |
| parents | b179f89c8a4f |
| children | 0fd6e58dc450 |
| files | packages/hal/arm/sa11x0/var/current/ChangeLog packages/hal/arm/sa11x0/var/current/src/sa11x0_misc.c packages/hal/powerpc/mpc8xx/current/ChangeLog packages/hal/powerpc/mpc8xx/current/src/var_misc.c |
| diffstat | 4 files changed, 29 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/packages/hal/arm/sa11x0/var/current/ChangeLog +++ b/packages/hal/arm/sa11x0/var/current/ChangeLog @@ -1,3 +1,10 @@ +2004-02-08 Bart Veer <bartv@ecoscentric.com> + + * src/sa11x0_misc.c (hal_enable_profile_timer): + Update this function to return the actual resolution, as + required by the updated gprof package. Make the profiling + actually work. + 2003-12-05 Andrew Lunn <andrew.lunn@ascom.ch> * include/hal_diag.h: hal_delay_us() is a C function.
--- a/packages/hal/arm/sa11x0/var/current/src/sa11x0_misc.c +++ b/packages/hal/arm/sa11x0/var/current/src/sa11x0_misc.c @@ -221,29 +221,38 @@ void hal_delay_us(cyg_int32 usecs) // Can't rely on Cyg_Interrupt class being defined. #define Cyg_InterruptHANDLED 1 +static int profile_period = 0; + // Profiling timer ISR static cyg_uint32 profile_isr(CYG_ADDRWORD vector, CYG_ADDRWORD data, HAL_SavedRegisters *regs) { + // Load new match value + *SA11X0_OSMR1 = *SA11X0_OSCR + profile_period; + // Clear any pending interrupt + *SA11X0_OSSR = SA11X0_OSSR_TIMER1; HAL_INTERRUPT_ACKNOWLEDGE(CYGNUM_HAL_INTERRUPT_TIMER1); __profile_hit(regs->pc); return Cyg_InterruptHANDLED; } -void +int hal_enable_profile_timer(int resolution) { // Run periodic timer interrupt for profile // The resolution is specified in us, the hardware generates 3.6864 // ticks/us - int period = (resolution*36864) / 10000; + profile_period = (resolution*36864) / 10000; // Attach ISR. HAL_INTERRUPT_ATTACH(CYGNUM_HAL_INTERRUPT_TIMER1, &profile_isr, 0x1111, 0); HAL_INTERRUPT_UNMASK(CYGNUM_HAL_INTERRUPT_TIMER1); - // Set period. - *SA11X0_OSMR1 = period; + // Set period and enable timer interrupts + *SA11X0_OSMR1 = *SA11X0_OSCR + profile_period; + *SA11X0_OIER |= SA11X0_OIER_TIMER1; + + return resolution; } #endif
--- a/packages/hal/powerpc/mpc8xx/current/ChangeLog +++ b/packages/hal/powerpc/mpc8xx/current/ChangeLog @@ -3,6 +3,12 @@ 2004-09-16 Gary Thomas <gary@mlbassoc. * src/var_misc.c (hal_variant_init): Remove [possibly incorrect] parallel port initializations - leave them to the platform. +2004-04-27 Bart Veer <bartv@ecoscentric.com> + + * src/var_misc.c (hal_enable_profile_timer): + Update this function to return the actual resolution, as + required by the updated gprof package + 2004-04-22 Jani Monoses <jani@iv.ro> * cdl/hal_powerpc_mpc8xx.cdl :
--- a/packages/hal/powerpc/mpc8xx/current/src/var_misc.c +++ b/packages/hal/powerpc/mpc8xx/current/src/var_misc.c @@ -238,7 +238,7 @@ isr_pit(CYG_ADDRWORD vector, CYG_ADDRWOR return Cyg_InterruptHANDLED; } -void +int hal_enable_profile_timer(int resolution) { // Run periodic timer interrupt for profile @@ -265,6 +265,8 @@ hal_enable_profile_timer(int resolution) HAL_READ_UINT16 (CYGARC_REG_IMM_PISCR, piscr); piscr |= CYGARC_REG_IMM_PISCR_PTE; HAL_WRITE_UINT16 (CYGARC_REG_IMM_PISCR, piscr); + + return resolution; } #endif
