Skip to content

Commit

Permalink
[ARM] Provide a method to alter the control register
Browse files Browse the repository at this point in the history
i.MX needs to tweak the control register to support CPU frequency
scaling.  Rather than have folk blindly try and change the control
register by writing to it and then wondering why it doesn't work,
provide a method (which is safe for UP only, and therefore only
available for UP) to achieve this.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
  • Loading branch information
Russell King authored and Russell King committed Dec 13, 2006
1 parent 0282884 commit 47fd705
Showing 1 changed file with 20 additions and 0 deletions.
20 changes: 20 additions & 0 deletions include/asm-arm/system.h
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,26 @@ static inline void set_copro_access(unsigned int val)
extern unsigned long cr_no_alignment; /* defined in entry-armv.S */
extern unsigned long cr_alignment; /* defined in entry-armv.S */

#ifndef CONFIG_SMP
static inline void adjust_cr(unsigned long mask, unsigned long set)
{
unsigned long flags, cr;

mask &= ~CR_A;

set &= mask;

local_irq_save(flags);

cr_no_alignment = (cr_no_alignment & ~mask) | set;
cr_alignment = (cr_alignment & ~mask) | set;

set_cr((get_cr() & ~mask) | set);

local_irq_restore(flags);
}
#endif

#define UDBG_UNDEFINED (1 << 0)
#define UDBG_SYSCALL (1 << 1)
#define UDBG_BADABORT (1 << 2)
Expand Down

0 comments on commit 47fd705

Please sign in to comment.