Skip to content

Commit

Permalink
[PATCH] Console rotation fixes
Browse files Browse the repository at this point in the history
Remove bogus usage of test/set_bit() from fbcon rotation code and just
manipulate the bits directly.  This fixes an oops on powerpc among others
and should be faster.  Seems to work fine on the G5 here.

Signed-off-by: Benjamin Herrenschmidt <[email protected]>
Acked-by: Antonino Daplas <[email protected]>
Signed-off-by: Andrew Morton <[email protected]>
Signed-off-by: Linus Torvalds <[email protected]>
  • Loading branch information
ozbenh authored and Linus Torvalds committed Nov 28, 2005
1 parent 8080f23 commit 1a9c3f7
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 11 deletions.
2 changes: 1 addition & 1 deletion drivers/video/console/fbcon_ccw.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ static inline void ccw_update_attr(u8 *dst, u8 *src, int attribute,
msk <<= (8 - mod);

if (offset > mod)
set_bit(FBCON_BIT(7), (void *)&msk1);
msk1 |= 0x01;

for (i = 0; i < vc->vc_font.width; i++) {
for (j = 0; j < width; j++) {
Expand Down
13 changes: 3 additions & 10 deletions drivers/video/console/fbcon_rotate.h
Original file line number Diff line number Diff line change
Expand Up @@ -21,29 +21,22 @@
(s == SCROLL_REDRAW || s == SCROLL_MOVE || !(i)->fix.xpanstep) ? \
(i)->var.xres : (i)->var.xres_virtual; })

/*
* The bitmap is always big endian
*/
#if defined(__LITTLE_ENDIAN)
#define FBCON_BIT(b) (7 - (b))
#else
#define FBCON_BIT(b) (b)
#endif

static inline int pattern_test_bit(u32 x, u32 y, u32 pitch, const char *pat)
{
u32 tmp = (y * pitch) + x, index = tmp / 8, bit = tmp % 8;

pat +=index;
return (test_bit(FBCON_BIT(bit), (void *)pat));
return (*pat) & (0x80 >> bit);
}

static inline void pattern_set_bit(u32 x, u32 y, u32 pitch, char *pat)
{
u32 tmp = (y * pitch) + x, index = tmp / 8, bit = tmp % 8;

pat += index;
set_bit(FBCON_BIT(bit), (void *)pat);

(*pat) |= 0x80 >> bit;
}

static inline void rotate_ud(const char *in, char *out, u32 width, u32 height)
Expand Down

0 comments on commit 1a9c3f7

Please sign in to comment.