]> www.infradead.org Git - users/rw/armboot.git/commitdiff
optimzation of kermit protocol loader: "loadb" now works
authorrobertkaiser <robertkaiser>
Fri, 27 Sep 2002 21:25:23 +0000 (21:25 +0000)
committerrobertkaiser <robertkaiser>
Fri, 27 Sep 2002 21:25:23 +0000 (21:25 +0000)
on SA1100 with baudrates up to 115200

CHANGELOG
common/cmd_boot.c

index e344b240c55ec764d9c3185c41ff31166f02da97..20bbab6a64dd43ce49ec1831fb005a171ec68183 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,11 @@
 Recent Modifications
 ======================================================================
 
+* Patch by Robert Kaiser <rob@sysgo.de>:
+
+  - optimzation of kermit protocol loader: "loadb" now works
+    on SA1100 with baudrates up to 115200
+
 * Patch by Robert Kaiser <rob@sysgo.de>:
 
   - add framebuffer/IrDA Keyboard support for Shannon (Tuxscreen)
index f725b8629d6ba522256dd7189f12df96ab2a7451..96126ffc9b33a2169070368379693606dadc96af 100644 (file)
@@ -530,8 +530,6 @@ void send_nack(int n)
 
    if image is binary, no header is stored in os_data_header.
 */
-void (*os_data_init)(void);
-void (*os_data_char)(char new_char);
 static int os_data_state, os_data_state_saved;
 int os_data_count;
 static int os_data_count_saved;
@@ -544,7 +542,7 @@ void image_data_init(void)
    os_data_count = 32;
    os_data_addr = (char *) os_data_header;
 }
-void bin_data_init(void)
+void os_data_init(void)
 {
    os_data_state = 0;
    os_data_count = 0;
@@ -562,21 +560,18 @@ void os_data_restore(void)
    os_data_count = os_data_count_saved;
    os_data_addr = os_data_addr_saved;
 }
-void bin_data_char(char new_char)
-{
-   switch (os_data_state)
-   {
-      case 0: /* data */
-         *os_data_addr++ = new_char;
-         --os_data_count;
-         break;
-   }
+
+#define os_data_char(new_char)                 \
+{                                                                              \
+   if (os_data_state == 0) /* data */  \
+   {                                                                   \
+       *os_data_addr++ = new_char;             \
+       --os_data_count;                                        \
+   }                                                                   \
 }
 void set_kerm_bin_mode(unsigned long *addr)
 {
    bin_start_address = (char *) addr;
-   os_data_init = bin_data_init;
-   os_data_char = bin_data_char;
 }
 
 
@@ -597,27 +592,28 @@ void k_data_restore(void)
    k_data_escape = k_data_escape_saved;
    os_data_restore();
 }
-void k_data_char(char new_char)
-{
-   if (k_data_escape)
-   {
-      /* last char was escape - translate this character */
-      os_data_char(ktrans(new_char));
-      k_data_escape = 0;
-   }
-   else
-   {
-      if (new_char == his_quote)
-      {
-         /* this char is escape - remember */
-         k_data_escape = 1;
-      }
-      else
-      {
-         /* otherwise send this char as-is */
-         os_data_char(new_char);
-      }
-   }
+
+#define k_data_char(new_char)                                                          \
+{                                                                                                                      \
+   if (k_data_escape)                                                                          \
+   {                                                                                                           \
+      /* last char was escape - translate this character */    \
+      os_data_char(ktrans(new_char));                                          \
+      k_data_escape = 0;                                                                       \
+   }                                                                                                           \
+   else                                                                                                                \
+   {                                                                                                           \
+      if (new_char == his_quote)                                                       \
+      {                                                                                                                \
+         /* this char is escape - remember */                          \
+         k_data_escape = 1;                                                                    \
+      }                                                                                                                \
+      else                                                                                                     \
+      {                                                                                                                \
+         /* otherwise send this char as-is */                          \
+         os_data_char(new_char);                                                       \
+      }                                                                                                                \
+   }                                                                                                           \
 }
 
 #define SEND_DATA_SIZE  20