Re: [git pull] kgdb light, v5

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Ray Lee
Date: Sunday, February 10, 2008 - 11:59 am

On Feb 10, 2008 9:39 AM, Jan Kiszka <jan.kiszka@web.de> wrote:

Thanks for responding. I'd mentioned it twice already and gotten no
response, so wasn't sure if my microphone was on :-).

If you're feeling energetic, the same sort of cleanup can be done against:

+#ifdef __BIG_ENDIAN
+               tmp_s |= hex(*buf++) << 12;
+               tmp_s |= hex(*buf++) << 8;
+               tmp_s |= hex(*buf++) << 4;
+               tmp_s |= hex(*buf++);
+#else
+               tmp_s |= hex(*buf++) << 4;
+               tmp_s |= hex(*buf++);
+               tmp_s |= hex(*buf++) << 12;
+               tmp_s |= hex(*buf++) << 8;
+#endif
+               if (probe_kernel_write(mem, tmp_s))
+                       return ERR_PTR(-EINVAL);
+
+               mem += 2;
+       } else if ((count == 4) && (((long)mem & 3) == 0)) {
+               u32 tmp_l = 0;
+
+#ifdef __BIG_ENDIAN
+               tmp_l |= hex(*buf++) << 28;
+               tmp_l |= hex(*buf++) << 24;
+               tmp_l |= hex(*buf++) << 20;
+               tmp_l |= hex(*buf++) << 16;
+               tmp_l |= hex(*buf++) << 12;
+               tmp_l |= hex(*buf++) << 8;
+               tmp_l |= hex(*buf++) << 4;
+               tmp_l |= hex(*buf++);
+#else
+               tmp_l |= hex(*buf++) << 4;
+               tmp_l |= hex(*buf++);
+               tmp_l |= hex(*buf++) << 12;
+               tmp_l |= hex(*buf++) << 8;
+               tmp_l |= hex(*buf++) << 20;
+               tmp_l |= hex(*buf++) << 16;
+               tmp_l |= hex(*buf++) << 28;
+               tmp_l |= hex(*buf++) << 24;
+#endif
+               if (probe_kernel_write(mem, tmp_l))
+                       return ERR_PTR(-EINVAL);
+               mem += 4;

As in, write a helper to parse a hex16, hex32, hex64, then do a
be[16|32|64]_to_cpu, and probe_kernel_write the result.

u64 hex_to_u64(unsigned char *buf)
{
        int i;
        u64 val = 0;

        for (i=0; i<16; i++)
                val = val<<4 | hex(buf[i]);   /* or *buf++, take your pick */
        return val;
}

...

        if (probe_kernel_write(mem, be64_to_cpu(hex_to_u64(unsigned char *buf)))
                return ERR_PTR(-EINVAL));
        mem += 4;
        buf += 16;

Or, you know, something like that.
--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[0/6] kgdb light, Ingo Molnar, (Sun Feb 10, 12:13 am)
Re: [0/6] kgdb light, David Miller, (Sun Feb 10, 12:37 am)
Re: [0/6] kgdb light, Sam Ravnborg, (Sun Feb 10, 3:47 am)
Re: [0/6] kgdb light, Jan Kiszka, (Sun Feb 10, 6:25 am)
[git pull] kgdb light, v5, Ingo Molnar, (Sun Feb 10, 9:36 am)
Re: [git pull] kgdb light, v5, Ray Lee, (Sun Feb 10, 10:30 am)
Re: [git pull] kgdb light, v5, Jan Kiszka, (Sun Feb 10, 10:39 am)
Re: [git pull] kgdb light, v5, Jan Kiszka, (Sun Feb 10, 11:53 am)
Re: [git pull] kgdb light, v5, Ray Lee, (Sun Feb 10, 11:59 am)
Re: [0/6] kgdb light, Sam Ravnborg, (Sun Feb 10, 12:31 pm)
Re: [git pull] kgdb light, v5, Sam Ravnborg, (Sun Feb 10, 12:34 pm)
Re: [git pull] kgdb light, v5, Ingo Molnar, (Sun Feb 10, 12:34 pm)
Re: [git pull] kgdb light, v5, Linus Torvalds, (Sun Feb 10, 12:44 pm)
Re: [git pull] kgdb light, v5, Ingo Molnar, (Sun Feb 10, 1:19 pm)
Re: [git pull] kgdb light, v5, Jan Kiszka, (Sun Feb 10, 1:22 pm)
Re: [0/6] kgdb light, Jan Kiszka, (Sun Feb 10, 1:23 pm)
Re: [git pull] kgdb light, v5, Ingo Molnar, (Sun Feb 10, 1:29 pm)
Re: [git pull] kgdb light, v5, Ingo Molnar, (Sun Feb 10, 1:41 pm)
Re: [git pull] kgdb light, v5, Ingo Molnar, (Sun Feb 10, 2:13 pm)
Re: [0/6] kgdb light, Ingo Molnar, (Sun Feb 10, 2:16 pm)
Re: [0/6] kgdb light, Sam Ravnborg, (Sun Feb 10, 2:30 pm)
Re: [0/6] kgdb light, Ingo Molnar, (Sun Feb 10, 2:34 pm)