diff options
author | Jens Arnold <amiconn@rockbox.org> | 2006-07-18 00:04:43 +0000 |
---|---|---|
committer | Jens Arnold <amiconn@rockbox.org> | 2006-07-18 00:04:43 +0000 |
commit | 393f31cc43cd9dff55a92e615ca52209b79944ac (patch) | |
tree | edd0f00c5051a30dcc0afe92f6ec2cceeab0c7fd /firmware/drivers/lcd-h100-remote.c | |
parent | ed00b173059ae76f6a610bd834ace6d59a5c3a1f (diff) | |
download | rockbox-393f31cc43cd9dff55a92e615ca52209b79944ac.tar.gz rockbox-393f31cc43cd9dff55a92e615ca52209b79944ac.zip |
1bit and 2bit LCD drivers: Low-level bit handling optimisations.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10225 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/drivers/lcd-h100-remote.c')
-rw-r--r-- | firmware/drivers/lcd-h100-remote.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/firmware/drivers/lcd-h100-remote.c b/firmware/drivers/lcd-h100-remote.c index 4d58db9a56..f7b3c21f48 100644 --- a/firmware/drivers/lcd-h100-remote.c +++ b/firmware/drivers/lcd-h100-remote.c | |||
@@ -716,7 +716,10 @@ static void solidblock(unsigned char *address, unsigned mask, unsigned bits) | |||
716 | ICODE_ATTR; | 716 | ICODE_ATTR; |
717 | static void solidblock(unsigned char *address, unsigned mask, unsigned bits) | 717 | static void solidblock(unsigned char *address, unsigned mask, unsigned bits) |
718 | { | 718 | { |
719 | *address = (*address & ~mask) | (bits & mask); | 719 | unsigned data = *address; |
720 | |||
721 | bits ^= data; | ||
722 | *address = data ^ (bits & mask); | ||
720 | } | 723 | } |
721 | 724 | ||
722 | static void flipinvblock(unsigned char *address, unsigned mask, unsigned bits) | 725 | static void flipinvblock(unsigned char *address, unsigned mask, unsigned bits) |
@@ -744,7 +747,10 @@ static void solidinvblock(unsigned char *address, unsigned mask, unsigned bits) | |||
744 | ICODE_ATTR; | 747 | ICODE_ATTR; |
745 | static void solidinvblock(unsigned char *address, unsigned mask, unsigned bits) | 748 | static void solidinvblock(unsigned char *address, unsigned mask, unsigned bits) |
746 | { | 749 | { |
747 | *address = (*address & ~mask) | (~bits & mask); | 750 | unsigned data = *address; |
751 | |||
752 | bits = ~bits ^ data; | ||
753 | *address = data ^ (bits & mask); | ||
748 | } | 754 | } |
749 | 755 | ||
750 | lcd_blockfunc_type* const lcd_remote_blockfuncs[8] = { | 756 | lcd_blockfunc_type* const lcd_remote_blockfuncs[8] = { |