| ofs | hex dump | ascii |
|---|
| 0000 | 42 4d 38 60 00 00 00 00 00 00 36 00 00 00 28 00 00 00 80 00 00 00 40 00 00 00 01 00 18 00 00 00 | BM8`......6...(.......@......... |
| 0020 | 00 00 02 60 00 00 49 06 00 00 49 06 00 00 00 00 00 00 00 00 00 00 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ...`..I...I..................... |
| 0040 | c8 b4 e6 c8 b4 e6 c8 b4 e5 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 | ................................ |
| 0060 | e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0080 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 00a0 | c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e5 c7 b3 e6 c8 b4 | ................................ |
| 00c0 | e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 00e0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 0100 | c8 b4 e5 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e5 c7 b3 e6 c8 b4 | ................................ |
| 0120 | e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0140 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 0160 | c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 | ................................ |
| 0180 | e6 c8 b4 e5 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 01a0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 01c0 | c8 b4 e6 c8 b4 e5 c7 b3 e4 c6 b3 e4 c6 b3 e5 c7 b3 e5 c7 b3 e5 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 | ................................ |
| 01e0 | e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0200 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e5 c7 b3 e4 c6 b3 e4 c6 b3 e5 c7 b3 e5 | ................................ |
| 0220 | c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e5 c7 b3 e4 c6 b3 e4 c6 b3 | ................................ |
| 0240 | e5 c7 b3 e5 c7 b3 e5 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0260 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e5 c7 b3 e4 c6 b3 e4 c7 b3 e5 | ................................ |
| 0280 | c7 b3 e5 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e4 c6 b3 e4 c6 b3 | ................................ |
| 02a0 | e5 c7 b3 e5 c7 b3 e5 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 02c0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 02e0 | c8 b4 e6 c8 b4 e6 c8 b4 e4 c6 b3 e4 c6 b3 e5 c7 b3 e5 c7 b3 e5 c7 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 | ................................ |
| 0300 | e5 c7 b3 e4 c6 b3 e4 c6 b3 e5 c7 b3 e5 c7 b3 e5 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0320 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 0340 | c8 b4 e6 c8 b4 e4 c6 b3 e3 c6 b2 e4 c6 b2 e4 c7 b3 e5 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 | ................................ |
| 0360 | e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0380 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e5 c7 b3 e3 c6 b2 e3 c6 b2 e4 c6 b3 e5 | ................................ |
| 03a0 | c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e5 c7 b3 e3 c6 b2 e3 c6 b2 | ................................ |
| 03c0 | e4 c7 b3 e4 c7 b3 e5 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 03e0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e5 c7 b3 e3 c6 b2 e3 c6 b2 e4 | ................................ |
| 0400 | c6 b2 e4 c6 b3 e5 c7 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e5 c7 b3 e3 c6 b2 e3 c6 b2 | ................................ |
| 0420 | e4 c6 b3 e4 c7 b3 e5 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0440 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 0460 | c8 b4 e6 c8 b4 e5 c7 b3 e3 c6 b2 e3 c6 b2 e4 c6 b3 e4 c7 b3 e5 c8 b4 e6 c8 b4 e6 c8 b4 e5 c7 b3 | ................................ |
| 0480 | e3 c6 b2 e3 c6 b2 e4 c6 b2 e4 c7 b3 e5 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 04a0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 04c0 | c8 b4 e5 c7 b3 e3 c6 b2 e3 c6 b2 e4 c6 b2 e4 c6 b3 e5 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 | ................................ |
| 04e0 | e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0500 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e4 c6 b3 e2 c5 b1 e3 c6 b2 e4 c6 b3 e4 | ................................ |
| 0520 | c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e4 c6 b3 e3 c6 b2 e4 c6 b2 | ................................ |
| 0540 | e4 c7 b3 e4 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0560 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e5 c7 b3 e3 c6 b2 e3 c6 b2 e4 | ................................ |
| 0580 | c6 b2 e3 c6 b2 e5 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e4 c6 b3 e3 c6 b2 e4 c6 b2 | ................................ |
| 05a0 | e4 c7 b3 e4 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 05c0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 05e0 | c8 b4 e6 c8 b4 e5 c7 b3 e3 c6 b2 e3 c6 b2 e4 c6 b3 e4 c7 b3 e5 c8 b4 e6 c8 b4 e4 c6 b3 e3 c6 b2 | ................................ |
| 0600 | e3 c6 b2 e4 c6 b2 e4 c7 b3 e4 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0620 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 0640 | c8 b4 e4 c6 b3 e2 c5 b1 e2 c5 b1 e3 c6 b2 e3 c6 b2 e5 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 | ................................ |
| 0660 | e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0680 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e4 c6 b3 e1 c4 b0 e3 c5 b1 e3 c6 b2 e4 | ................................ |
| 06a0 | c6 b2 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e2 c5 b1 e2 c5 b1 e3 c5 b2 | ................................ |
| 06c0 | e3 c6 b2 e4 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 06e0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e2 c5 b1 e2 c5 b1 e3 | ................................ |
| 0700 | c5 b2 e3 c5 b2 e4 c6 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e2 c5 b1 e2 c5 b1 e3 c5 b2 | ................................ |
| 0720 | e3 c6 b2 e4 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0740 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 0760 | c8 b4 e6 c8 b4 e5 c7 b3 e2 c5 b1 e2 c5 b1 e3 c6 b2 e3 c6 b2 e5 c7 b4 e4 c6 b3 e2 c5 b1 e2 c5 b1 | ................................ |
| 0780 | e3 c5 b2 e3 c6 b2 e4 c6 b2 e5 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 07a0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 07c0 | c8 b4 e3 c6 b2 e1 c3 b0 e1 c3 b0 e2 c5 b1 e2 c5 b2 e5 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 | ................................ |
| 07e0 | e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0800 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e3 c6 b2 e1 c3 b0 e1 c3 b0 e2 c5 b1 e3 | ................................ |
| 0820 | c6 b2 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e5 c7 b3 e1 c4 b0 e1 c3 b0 e2 c4 b1 | ................................ |
| 0840 | e2 c5 b2 e4 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0860 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e1 c4 b0 e1 c3 b0 e1 | ................................ |
| 0880 | c4 b0 e2 c5 b1 e3 c6 b2 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e5 c7 b3 e1 c4 b0 e1 c3 b0 e2 c4 b1 | ................................ |
| 08a0 | e3 c5 b2 e4 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 08c0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 08e0 | c8 b4 e6 c8 b4 e5 c7 b3 e1 c3 b0 e1 c3 b0 e2 c4 b1 e2 c5 b1 e3 c5 b1 e1 c3 b0 e1 c3 b0 e1 c4 b0 | ................................ |
| 0900 | e3 c5 b2 e3 c6 b2 e5 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0920 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 0940 | c8 b4 e2 c5 b1 df c2 ae df c2 af e1 c4 b0 e2 c5 b1 e5 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 | ................................ |
| 0960 | e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0980 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e2 c5 b1 df c2 ae df c2 af e1 c4 b1 e2 | ................................ |
| 09a0 | c5 b1 e5 c7 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e5 c7 b3 e0 c3 af df c2 ae e0 c3 b0 | ................................ |
| 09c0 | e1 c4 b1 e4 c6 b2 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 09e0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e1 c3 b0 df c2 ae e0 | ................................ |
| 0a00 | c2 af e1 c4 b1 e2 c5 b1 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e4 c6 b3 df c2 ae df c2 ae e0 c3 b0 | ................................ |
| 0a20 | e1 c4 b1 e4 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0a40 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 0a60 | c8 b4 e6 c8 b4 e4 c6 b3 df c2 ae df c2 ae e0 c3 b0 e0 c3 b0 df c2 ae df c2 ae df c2 ae e1 c4 b0 | ................................ |
| 0a80 | e1 c4 b1 e5 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0aa0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 0ac0 | c8 b4 e1 c3 b0 dd c0 ad dd c0 ad e0 c3 b0 e0 c4 b0 e5 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 | ................................ |
| 0ae0 | e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0b00 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e1 c4 b0 dd c0 ad dd c0 ad e0 c3 b0 e0 | ................................ |
| 0b20 | c4 b0 e5 c7 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e4 c6 b3 de c1 ae dd c0 ad df c2 af | ................................ |
| 0b40 | e0 c3 b0 e3 c5 b2 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0b60 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 df c2 ae dd c0 ad de | ................................ |
| 0b80 | c1 ae e0 c3 b0 e1 c4 b1 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e4 c6 b3 dd c0 ad dd c0 ad df c2 af | ................................ |
| 0ba0 | e0 c3 b0 e4 c6 b2 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0bc0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 0be0 | c8 b4 e6 c8 b4 e4 c6 b3 dd c0 ad dd c0 ad df c2 af e0 c3 b0 df c2 af dd c0 ad dd c0 ad de c1 ae | ................................ |
| 0c00 | de c1 ae e0 c3 af e5 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0c20 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 0c40 | c8 b4 e0 c3 af da be ab dc bf ac de c2 ae de c2 af e5 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 | ................................ |
| 0c60 | e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0c80 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e1 c3 b0 da be ab dc bf ac de c2 af df | ................................ |
| 0ca0 | c3 af e5 c7 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e4 c6 b3 db bf ac db bf ac dd c1 ae | ................................ |
| 0cc0 | de c2 af e2 c5 b1 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0ce0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 dd c0 ad da be ab dc | ................................ |
| 0d00 | c0 ad de c2 af e1 c4 b0 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e3 c6 b2 db bf ac db bf ac dd c1 ae | ................................ |
| 0d20 | de c1 ae e3 c5 b2 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0d40 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 0d60 | c8 b4 e6 c8 b4 e3 c6 b2 db bf ac db bf ac de c1 ae df c2 af e2 c5 b1 de c1 ae da be ab db bf ac | ................................ |
| 0d80 | dc bf ac db bf ac df c2 ae e5 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0da0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 0dc0 | c8 b4 df c2 ae d8 bb a9 d9 bc aa dc bf ad dc c0 ad e4 c6 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 | ................................ |
| 0de0 | e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0e00 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e0 c3 af d8 bb a9 d9 bd aa dd c0 ad dd | ................................ |
| 0e20 | c1 ae e5 c7 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e4 c6 b3 d9 bd aa d8 bc a9 da be ab | ................................ |
| 0e40 | dc c0 ad e0 c3 b0 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0e60 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e5 c7 b3 da be ab d8 bc a9 da | ................................ |
| 0e80 | be ab dd c1 ae e0 c3 b0 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e4 c6 b3 d9 bd aa d8 bc a9 db bf ac | ................................ |
| 0ea0 | dc c0 ad e1 c4 b0 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0ec0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 0ee0 | c8 b4 e6 c8 b4 e3 c6 b2 d8 bc a9 d8 bc a9 dc bf ad dd c1 ae e3 c6 b2 e4 c6 b3 da be ab d8 bb a9 | ................................ |
| 0f00 | d9 bc a9 d9 bd aa d9 bd aa de c1 ad e5 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0f20 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 0f40 | c8 b4 e0 c3 af d5 b9 a7 d6 ba a7 d9 bd aa da be ab e1 c4 b1 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 | ................................ |
| 0f60 | e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0f80 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 de c1 ae d5 b9 a7 d6 ba a8 db bf ac dc | ................................ |
| 0fa0 | c0 ad e5 c7 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e5 c7 b3 d8 bc a9 d6 ba a7 d7 bb a9 | ................................ |
| 0fc0 | da be ab dd c1 ae e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 0fe0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e4 c6 b3 d7 bb a8 d6 ba a7 d9 | ................................ |
| 1000 | bd ab db bf ad e1 c4 b0 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e4 c6 b3 d8 bb a9 d6 ba a7 d8 bc a9 | ................................ |
| 1020 | da be ab de c1 ae e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 1040 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 1060 | c8 b4 e6 c8 b4 e2 c5 b1 d6 ba a7 d6 ba a7 da be ab db bf ad e2 c5 b2 e6 c8 b4 e3 c6 b2 d7 bb a8 | ................................ |
| 1080 | d5 b9 a7 d6 ba a8 d7 bb a8 d6 ba a8 db be ab e5 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 10a0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 10c0 | c8 b4 e1 c4 b0 d3 b8 a5 d2 b7 a4 d5 b9 a7 d7 bb a9 dc c0 ad e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 | ................................ |
| 10e0 | e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 1100 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 dc bf ac d1 b6 a4 d3 b7 a5 d8 bd aa da | ................................ |
| 1120 | be ac e5 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 d8 bc a9 d1 b6 a4 d3 b8 a6 | ................................ |
| 1140 | d7 bc a9 d8 bd aa e5 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 1160 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e0 c3 af d2 b7 a4 d2 b7 a5 d8 | ................................ |
| 1180 | bc aa da be ac e2 c5 b1 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 d7 bb a8 d2 b7 a4 d3 b8 a6 | ................................ |
| 11a0 | d7 bc a9 d9 bd ab e5 c7 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 11c0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 11e0 | c8 b4 e6 c8 b4 e1 c4 b0 d2 b7 a4 d2 b7 a4 d7 bb a9 d9 bd ab e2 c5 b1 e6 c8 b4 e6 c8 b4 e1 c4 b0 | ................................ |
| 1200 | d3 b8 a5 d2 b7 a4 d3 b8 a5 d3 b8 a6 d3 b7 a5 da bd aa e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 1220 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 1240 | c8 b4 e4 c6 b3 d3 b8 a5 cf b4 a2 d1 b6 a4 d4 b9 a7 d5 ba a8 e4 c6 b2 e6 c8 b4 e6 c8 b4 e6 c8 b4 | ................................ |
| 1260 | e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 1280 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 da be ab ce b3 a1 d0 b5 a3 d6 bb a9 d7 | ................................ |
| 12a0 | bc aa e5 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 dc bf ac ce b3 a1 d0 b4 a2 | ................................ |
| 12c0 | d4 b9 a6 d3 b8 a6 de c1 ae e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 12e0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 d8 bb a9 ce b3 a1 d1 b6 a4 d7 | ................................ |
| 1300 | bc aa d8 bd ab e5 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 d9 bd aa ce b3 a1 d0 b5 a3 | ................................ |
| 1320 | d4 b9 a7 d4 b9 a7 df c3 af e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 1340 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 1360 | c8 b4 e6 c8 b4 e1 c3 b0 cf b4 a2 cf b4 a2 d5 ba a8 d6 bb a9 e1 c4 b1 e6 c8 b4 e6 c8 b4 e6 c8 b4 | ................................ |
| 1380 | df c2 ae cf b4 a2 cf b4 a2 d0 b5 a3 d1 b6 a4 d0 b5 a3 d8 bc aa e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 13a0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 13c0 | c8 b4 e6 c8 b4 d8 bc a9 c9 af 9d cb b1 9f cf b5 a3 cf b5 a3 d9 bd aa e6 c8 b4 e6 c8 b4 e6 c8 b4 | ................................ |
| 13e0 | e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 1400 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 d8 bc a9 ca b0 9e cc b1 a0 d3 b9 a7 d5 | ................................ |
| 1420 | ba a8 e5 c7 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e2 c5 b1 cc b1 a0 cb b0 9f | ................................ |
| 1440 | cd b3 a1 d0 b6 a4 d2 b7 a5 e4 c7 b3 e6 c8 b4 e6
#if defined(CPU_ARM)
/*---------------------------------------------------------------------------
* Store non-volatile context.
*---------------------------------------------------------------------------
*/
static inline void store_context(void* addr)
{
asm volatile(
"stmia %0, { r4-r11, sp, lr }\n"
: : "r" (addr)
);
}
/*---------------------------------------------------------------------------
* Load non-volatile context.
*---------------------------------------------------------------------------
*/
static inline void load_context(const void* addr)
{
asm volatile(
"ldmia %0, { r4-r11, sp, lr }\n" /* load regs r4 to r14 from context */
"ldr r0, [%0, #40] \n" /* load start pointer */
"mov r1, #0 \n"
"cmp r0, r1 \n" /* check for NULL */
"strne r1, [%0, #40] \n" /* if it's NULL, we're already running */
"movne pc, r0 \n" /* not already running, so jump to start */
: : "r" (addr) : "r0", "r1"
);
}
#elif defined(CPU_COLDFIRE)
/*---------------------------------------------------------------------------
* Store non-volatile context.
*---------------------------------------------------------------------------
*/
static inline void store_context(void* addr)
{
asm volatile (
"move.l %%macsr,%%d0 \n"
"movem.l %%d0/%%d2-%%d7/%%a2-%%a7,(%0) \n"
: : "a" (addr) : "d0" /* only! */
);
}
/*---------------------------------------------------------------------------
* Load non-volatile context.
*---------------------------------------------------------------------------
*/
static inline void load_context(const void* addr)
{
asm volatile (
"movem.l (%0),%%d0/%%d2-%%d7/%%a2-%%a7 \n" /* Load context */
"move.l %%d0,%%macsr \n"
"move.l (52,%0),%%d0 | ................................ |
| 17c0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 dc bf ac e0 c3 af e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 17e0 | c8 b4 e6 c8 b4 de c1 ae c3 a9 98 c3 a9 98 cb b2 a1 ce b4 a4 df c2 af e6 c8 b4 e6 c8 b4 e6 c8 b4 | ................................ |
| 1800 | e6 c8 b4 e6 c8 b4 e6 c8 b4 d4 b8 a6 c1 a8 97 c3 a9 98 c4 aa 99 c6 ac 9b c3 aa 99 d4 b9 a6 e6 c8 | ................................ |
| 1820 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 1840 | c8 b4 e6 c8 b4 e6 c8 b4 e4 c6 b3 c6 ad 9b bd a4 94 bf a6 96 c1 a8 97 be a5 95 be a6 95 cf b4 a2 | ................................ |
| 1860 | e1 c3 b0 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e5 c7 b3 da be ab c7 ad 9c c6 ad | ................................ |
| 1880 | 9c e4 c6 b2 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 d2 b7 a4 bd a4 94 c0 a7 96 ca b1 a1 cd | ................................ |
| 18a0 | b4 a3 e4 c6 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 d5 b9 a7 | ................................ |
| 18c0 | bd a4 94 be a5 95 c0 a7 96 c0 a7 97 bd a4 94 c8 ae 9d dc bf ac e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 18e0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 dd c0 ad c8 ae 9d bd a5 94 be a5 95 c5 ad 9c cc b3 a3 d0 b7 a6 e4 | ................................ |
| 1900 | c6 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 d1 b6 a4 | ................................ |
| 1920 | bc a3 93 be a5 95 bf a7 96 c0 a7 97 be a5 95 c9 af 9d dc bf ac e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 1940 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 df c2 ae ce b3 a1 c0 a7 96 dd c0 ae e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 1960 | c8 b4 e6 c8 b4 dd c0 ad be a5 95 be a5 95 c8 af 9e cb b2 a1 dd c1 ae e6 c8 b4 e6 c8 b4 e6 c8 b4 | ................................ |
| 1980 | e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 cf b4 a2 bc a3 93 be a5 95 bf a6 96 c1 a8 97 bf a6 96 d2 b7 | ................................ |
| 19a0 | a4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 19c0 | c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e0 c3 af bf a6 96 b8 a0 90 bb a2 92 bb a3 92 ba a2 91 b8 a0 90 | ................................ |
| 19e0 | bd a4 94 c6 ad 9b d0 b5 a3 d4 b8 a6 d4 b8 a6 d3 b8 a5 cb b0 9f c1 a8 97 ba a2 91 b9 a1 91 ca b1 | ................................ |
| 1a00 | a0 e3 c6 b2 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 d0 b5 a3 b8 a0 90 bc a4 94 c7 af 9f ca | ................................ |
| 1a20 | b2 a1 e4 c6 b3 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 | ................................ |
| 1a40 | cc b1 a0 b7 9f 8f ba a2 91 bb a3 92 bb a3 92 b9 a1 91 ba a2 91 c4 aa 99 ce b3 a1 d4 b8 a6 d4 b8 | ................................ |
| 1a60 | a6 d4 b8 a6 cf b4 a2 c5 ab 9a bb a2 92 b9 a1 91 bb a3 92 c2 aa 9a c8 b0 a0 cb b3 a3 e0 c4 b0 e6 | ................................ |
| 1a80 | c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e5 c7 b3 | ................................ |
| 1aa0 | c8 ae 9d b7 9f 8f ba a2 91 bb a3 92 ba a2 91 b9 a1 91 bb a2 92 c4 aa 99 ce b3 a1 d4 b8 a6 d4 b8 | ................................ |
| 1ac0 | a6 d4 b8 a6 cf b4 a2 c5 ab 9a bb a2 92 b8 a0 90 c2 aa 9a dd c1 ae e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 1ae0 | c8 b4 e6 c8 b4 dc bf ac bb a2 92 ba a2 91 c4 ac 9c c8 af 9f dd c0 ae e6 c8 b4 e6 c8 b4 e6 c8 b4 | ................................ |
| 1b00 | e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e5 c7 b3 ca b0 9e b7 9f 8f bb a2 92 bc a3 93 bc a4 94 bc a4 | ................................ |
| 1b20 | 94 d2 b7 a5 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 1b40 | c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 de c1 ae bd a5 94 b3 9b 8c b6 9e 8e b7 9f 8f b7 9f 90 | ................................ |
| 1b60 | b5 9e 8f b4 9e 8e b3 9d 8d b3 9d 8e b3 9d 8d b3 9d 8d b3 9d 8d b4 9d 8e b8 a0 90 bf a8 98 c8 af | ................................ |
| 1b80 | 9f e3 c5 b2 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 cf b4 a2 b3 9c 8c b8 a0 90 c4 ac 9d c7 | ................................ |
| 1ba0 | af 9f e4 c6 b2 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 | ................................ |
| 1bc0 | e5 c7 b3 cc b1 a0 b4 9d 8d b4 9d 8d b7 9f 8f b7 9f 90 b6 9f 90 b4 9e 8e b3 9d 8d b3 9d 8d b3 9d | ................................ |
| 1be0 | 8e b3 9d 8d b3 9d 8d b4 9e 8e b6 9e 8f ba a3 93 c1 a9 9a c4 ad 9d cb b2 a2 e0 c3 b0 e6 c8 b4 e6 | ................................ |
| 1c00 | c8 b4 e6 c
}
#endif
#ifndef THREAD_CPU_INIT
/* No cpu specific init - make empty */
#define THREAD_CPU_INIT(core, thread)
#endif
static void add_to_list(struct thread_entry **list, struct thread_entry *thread)
{
if (*list == NULL)
{
thread->next = thread;
thread->prev = thread;
*list = thread;
}
else
{
/* Insert last */
thread->next = *list;
thread->prev = (*list)->prev;
thread->prev->next = thread;
(*list)->prev = thread;
/* Insert next
thread->next = (*list)->next;
thread->prev = *list;
thread->next->prev = thread;
(*list)->next = thread;
*/
}
}
static void remove_from_list(struct thread_entry **list,
struct thread_entry *thread)
{
if (list != NULL)
{
if (thread == thread->next)
{
*list = NULL;
return;
}
if (thread == *list)
*list = thread->next;
}
/* Fix links to jump over the removed entry. */
thread->prev->next = thread->next;
thread->next->prev = thread->prev;
}
/* Compiler trick: Don't declare as static to prevent putting
* function in IRAM. */
void check_sleepers(void)
{
struct thread_entry *current, *next;
/* Check sleeping threads. */
current = cores[CURRENT_CORE].sleeping;
if (current == NULL)
return ;
for (;;)
51 47 40 51 47 40 51 47 40 | G@QG@QG@QG@QG@QG@QG@QG@QG@QG@QG@ |
| 1f20 | 51 47 40 51 47 40 52 47 40 50 46 3f 49 40 3b 44 3d 37 42 3c 37 44 3d 38 45 3f 3a 47 41 3d 47 41 | QG@QG@RG@PF?I@;D=7B<7D=8E?:GA=GA |
| 1f40 | 3c 49 42 3e 4a 44 3f 4c 45 41 4e 47 41 50 47 42 52 48 41 52 47 40 51 47 40 51 47 40 51 47 40 51 | <IB>JD?LEANGAPGBRHARG@QG@QG@QG@Q |
| 1f60 | 47 40 51 47 40 4e 44 3e 45 3d 37 4a 41 3d 49 41 3c 4c 43 3e 51 48 41 52 47 40 51 47 40 51 47 40 | G@QG@ND>E=7JA=IA<LC>QHARG@QG@QG@ |
| 1f80 | 51 47 40 51 47 40 51 47 40 51 47 40 51 47 40 51 47 40 52 47 40 50 47 40 46 3d 38 49 41 3d 49 41 | QG@QG@QG@QG@QG@QG@RG@PG@F=8IA=IA |
| 1fa0 | 3c 4a 42 3d 4a 42 3d 49 41 3c 50 46 40 51 47 40 4f 45 3e 5b 4f 47 36 2f 2a 28 23 1f 29 24 20 29 | <JB=JB=IA<PF@QG@OE>[OG6/*(#.)$.) |
| 1fc0 | 24 20 29 24 20 29 24 20 29 24 20 29 24 21 2a 24 21 2a 25 21 2a 25 22 2a 25 22 2a 26 23 21 1f 1d | $.)$.)$.)$.)$!*$!*%!*%"*%"*&#!.. |
| 1fe0 | 18 15 14 13 12 11 0d 0d 0c 0d 0d 0d 0e 0e 0d 13 12 11 17 15 14 21 1e 1c 2a 26 23 2a 25 22 2a 25 | .....................!..*&#*%"*% |
| 2000 | 22 2a 25 21 29 24 21 29 24 21 29 24 21 29 24 21 2a 25 21 2a 25 22 2a 25 22 2a 26 22 2a 26 22 2a | "*%!)$!)$!)$!)$!*%!*%"*%"*&"*&"* |
| 2020 | 25 22 2a 25 21 2a 24 21 29 24 21 29 24 20 29 24 20 29 24 20 29 24 20 29 24 20 29 24 20 29 24 21 | %"*%!*$!)$!)$.)$.)$.)$.)$.)$.)$! |
| 2040 | 29 24 21 2a 25 21 2a 25 22 2a 25 22 2a 26 22 28 24 21 1c 1a 18 15 13 12 0f 0e 0d 0d 0d 0d 0d 0d | )$!*%!*%"*%"*&"($!.............. |
| 2060 | 0d 0e 0e 0d 18 16 15 1a 17 16 22 20 1e 2a 26 23 2a 25 22 2a 25 22 2a 25 21 2a 24 21 29 24 21 29 | .........."..*&#*%"*%"*%!*$!)$!) |
| 2080 | 24 20 29 24 20 29 24 20 29 24 20 29 24 20 29 24 20 29 24 20 29 24 20 29 24 20 29 24 20 29 24 21 | $.)$.)$.)$.)$.)$.)$.)$.)$.)$.)$! |
| 20a0 | 2a 24 21 2a 25 21 2a 25 22 2a 25 22 2a 26 23 25 21 1f 19 18 16 15 13 13 0c 0c 0c 0e 0e 0d 0d 0d | *$!*%!*%"*%"*&#%!............... |
| 20c0 | 0d 11 10 0f 17 15 15 1b 1a 18 25 21 1f 2a 26 22 2a 25 22 2a 25 21 2a 24 21 29 24 21 29 24 21 29 | ..........%!.*&"*%"*%!*$!)$!)$!) |
| 20e0 | 24 21 2a 24 21 2a 25 22 2a 25 22 2a 26 22 2a 26 23 2a 25 22 2a 25 22 2a 25 21 29 24 21 29 24 21 | $!*$!*%"*%"*&"*&#*%"*%"*%!)$!)$! |
| 2100 | 29 24 20 29 24 20 29 24 20 29 24 20 29 24 21 2a 24 21 2a 25 21 2a 25 22 2a 26 22 2a 26 23 2a 26 | )$.)$.)$.)$.)$!*$!*%!*%"*&"*&#*& |
| 2120 | 23 2a 26 23 2a 26 22 2a 25 22 2a 25 21 2a 24 21 28 23 1f 36 2f 2a e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | #*&#*&"*%"*%!*$!(#.6/*.......... |
| 2140 | c8 b4 e6 c8 b4 e6 c8 b4 e6 c9 b5 e7 ca b7 e7 cc ba e8 cf bd da c5 b6 75 6a 63 1d 1a 18 00 00 00 | .......................ujc...... |
| 2160 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0e 0d 0c 57 4f 49 cc b7 | ...........................WOI.. |
| 2180 | a8 e8 cd bb e7 ca b7 e6 c9 b5 e6 c9 b5 e7 ca b7 e8 cd ba 74 68 60 00 00 00 00 00 00 00 00 00 0d | ...................th`.......... |
| 21a0 | 0d 0d e8 ce bd e7 cb b8 e6 c9 b5 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c9 b5 e7 ca b6 | ................................ |
| 21c0 | e7 cb b8 e8 ce bc e9 d1 c0 af 9e 93 49 42 3e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ............IB>................. |
| 21e0 | 00 00 00 00 00 00 00 00 00 00 00 00 00 1d 1a 18 83 77 6e da c5 b6 e8 cf bd e7 cc ba e7 ca b7 e6 | .................wn............. |
| 2200 | c9 b5 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c9 b5 e7 ca b6 | ................................ |
| 2220 | e7 cb b9 e8 ce bc e9 d1 c0 a1 91 87 3a 35 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ............:51................. |
| 2240 | 00 00 00 00 00 00 00 00 00 00 00 00 00 3a 35 31 92 83 79 e8 cf bd e7 cb b9 e7 ca b6 e6 c9 b5 e7 | .............:51..y............. |
| 2260 | ca b6 e7 cc ba af 9c 8e 00 00 00 00 00 00 00 00 00 00 00 00 82 76 6e e8 cd ba e7 ca b7 e6 c9 b5 | .....................vn......... |
| 2280 | e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c9 b5 e7 ca b7 e7 cc ba e9 cf be af 9e 92 00 00 00 00 00 00 00 00 | ................................ |
| 22a0 | 00 00 00 00 00 00 00 13 13 13 a1 90 85 e7 ca b7 e6 c9 b5 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ................................ |
| 22c0 | c8 b4 e6 c8 b4 e6 c9 b5 e7 ca b7 e8 cd ba e9 d0 bf af 9f 93 1d 1a 18 00 00 00 00 00 00 00 00 00 | ................................ |
| 22e0 | 00 00 00 02 02 02 0b 0b 0b 0c 0c 0c 0a 0a 0a 03 03 03 00 00 00 00 00 00 00 00 00 07 07 07 1f 1f | ................................ |
| 2300 | 1f e8 cf be e7 cb b9 e6 c9 b5 e6 c9 b5 e7 cb b8 e8 ce bd 75 69 61 00 00 00 00 00 00 0a 0a 0a 30 | ...................uia.........0 |
| 2320 | 30 30 e9 d0 bf e7 cc ba e7 ca b6 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b5 e7 ca b6 e7 cb b9 | 00.............................. |
| 2340 | e8 ce bd da c5 b6 49 42 3e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 09 09 0c 0c 0c 0a 0a | ......IB>....................... |
| 2360 | 0a 06 06 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1d 1a 18 b1 a0 94 e9 d0 bf e8 cd ba e7 | ................................ |
| 2380 | ca b7 e6 c9 b5 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c9 b5 e7 ca b6 e7 cc b9 | ................................ |
| 23a0 | e8 cf bd db c6 b6 3a 35 31 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0a 0a 0a 0d 0d 0d 0a 0a | ......:51....................... |
| 23c0 | 0a 05 05 05 00 00 00 00 00 00 00 00 00 00 00 00 15 15 15 94 86 7d e8 cd bb e7 ca b7 e6 c9 b5 e7 | .....................}.......... |
| 23e0 | ca b7 e8 cd bb af 9d 91 00 00 00 00 00 00 00 00 00 1e 1e 1e 91 85 7d e8 ce bd e7 cb b8 e6 c9 b5 | ......................}......... |
| 2400 | e6 c8 b4 e6 c8 b4 e6 c9 b5 e7 ca b6 e7 cc ba e9 d0 be be ac 9f 0e 0d 0c 00 00 00 00 00 00 00 00 | ................................ |
| 2420 | 00 13 13 13 2f 2f 2f a9 9a 90 e8 cd ba e7 ca b7 e6 c9 b5 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 | ....///......................... |
| 2440 | c8 b4 e6 c9 b5 e7 ca b7 e8 cd ba e9 d0 bf 92 85 7b 00 00 00 00 00 00 00 00 00 01 01 01 1c 1c 1c | ................{............... |
| 2460 | 26 26 26 2d 2d 2d 2e 2e 2e 27 27 27 22 22 22 19 19 19 13 13 13 11 11 11 0c 0c 0c 1f 1f 1f 37 37 | &&&---...'''"""...............77 |
| 2480 | 37 e9 d0 bf e7 cc ba e6 c9 b6 e6 c9 b5 e7 cb b8 e9 cf be 75 6a 63 00 00 00 00 00 00 29 29 29 40 | 7..................ujc......)))@ |
| 24a0 | 40 40 e9 d2 c1 e8 cd ba e7 ca b6 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b5 e6 c9 b6 e7 cb b8 e8 ce bd | @@.............................. |
| 24c0 | db c6 b6 2b 27 25 00 00 00 00 00 00 00 00 00 11 11 11 22 22 22 2b 2b 2b 2e 2e 2e 29 29 29 22 22 | ...+'%............"""+++...)))"" |
| 24e0 | 22 1c 1c 1c 15 15 15 10 10 10 08 08 08 00 00 00 00 00 00 01 01 01 04 04 04 96 89 7f e9 d0 bf e8 | "............................... |
| 2500 | cd ba e7 ca b7 e6 c9 b5 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b5 e7 ca b6 e7 cc b9 e8 cf be | ................................ |
| 2520 | be ab 9e 0e 0d 0c 00 00 00 00 00 00 00 00 00 13 13 13 24 24 24 2c 2c 2c 2e 2e 2e 29 29 29 22 22 | ..................$$$,,,...)))"" |
| 2540 | 22 1c 1c 1c 15 15 15 11 11 11 0a 0a 0a 13 13 13 2e 2e 2e 93 88 80 e8 ce bc e7 cb b8 e6 c9 b5 e7 | "............................... |
| 2560 | ca b7 e8 ce bc af 9e 92 00 00 00 00 00 00 12 12 12 38 38 38 95 8a 83 e9 cf be e7 cb b8 e6 c9 b5 | .................888............ |
| 2580 | e6 c8 b4 e6 c9 b5 e7 ca b6 e7 cc b9 e9 cf be be ac 9f 0e 0d 0c 00 00 00 00 00 00 10 10 10 2f 2f | ..............................// |
| 25a0 | 2f 42 42 42 af a1 97 e9 cf be e7 cc b9 e7 ca b6 e6 c8 b5 e6 c8 b4
* Switch thread in round robin fashion.
*---------------------------------------------------------------------------
*/
void switch_thread(bool save_context, struct thread_entry **blocked_list)
{
#ifdef RB_PROFILE
profile_thread_stopped(get_threadnum(cores[CURRENT_CORE].running));
#endif
unsigned int *stackptr;
#ifdef SIMULATOR
/* Do nothing */
#else
/* Begin task switching by saving our current context so that we can
* restore the state of the current thread later to the point prior
* to this call. */
if (save_context)
{
store_context(&cores[CURRENT_CORE].running->context);
/* Check if the current thread stack is overflown */
stackptr = cores[CURRENT_CORE].running->stack;
if(stackptr[0] != DEADBEEF)
panicf("Stkov %s", cores[CURRENT_CORE].running->name);
/* Rearrange thread lists as needed */
change_thread_state(blocked_list);
#ifdef HAVE_EXTENDED_MESSAGING_AND_NAME
/* This has to be done after the scheduler is finished with the
blocked_list pointer so that an IRQ can't kill us by attempting
a wake but before attempting any core sleep. */
if (switch_to_irq_level != STAY_IRQ_LEVEL)
{
int level = switch_to_irq_level;
switch_to_irq_level = STAY_IRQ_LEVEL;
set_irq_level(level);
}
#endif
}
/* Go through the list of sleeping task to check if we need to wake up
* any of them due to timeout. Also puts core into c8 b4 e6 c8 b4 e6 c9 b5 e7 ca b7 e8 cd bb e9 d1 c1 2b 27 25 | .............................+'% |
| 2820 | 00 00 00 00 00 00 0e 0e 0e 37 37 37 46 46 46 78 71 6d d5 c2 b4 e9 d2 c2 e9 d0 bf e9 cf be e8 cf | .........777FFFxqm.............. |
| 2840 | bd e9 cf be e9 d0 bf e9 d1 c1 dc c6 b7 76 6b 63 25 24 23 92 86 7d e8 cd bb e7 ca b7 e6 c9 b5 e7 | .............vkc%$#..}.......... |
| 2860 | cb b8 e8 ce bd af 9f 93 00 00 00 00 00 00 1a 1a 1a 40 40 40 95 8b 83 e9 d0 bf e7 cb b9 e6 c9 b6 | .................@@@............ |
| 2880 | e7 ca b6 e7 cb b9 e8 cf bd db c6 b7 2b 27 25 00 00 00 00 00 00 0a 0a 0a 38 38 38 4c 4c 4c b0 a2 | ............+'%.........888LLL.. |
| 28a0 | 99 e9 d1 c0 e8 cd bb e7 ca b7 e6 c9 b5 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b5 e7 | ................................ |
| 28c0 | ca b6 e8 cd ba e9 d1 c0 3a 35 31 00 00 00 00 00 00 19 19 19 43 43 43 53 51 50 cc ba ae e9 d1 c1 | ........:51.........CCCSQP...... |
| 28e0 | e8 cf bd e8 cd ba e7 cc b9 e7 cb b8 e7 cb b8 e7 cb b8 e7 cc b9 e8 cd bb e8 ce bc e8 ce bd ab 99 | ................................ |
| 2900 | 8d e7 cc b9 e7 ca b7 e6 c9 b5 e6 c9 b5 e7 cb b9 e9 d0 bf 75 6b 63 00 00 00 00 00 00 31 31 31 40 | ...................ukc......111@ |
| 2920 | 40 40 ea d2 c2 e8 cd bb e7 ca b6 e6 c8 b4 e6 c8 b4 e6 c9 b5 e7 cb b8 e8 cf be 92 84 7b 00 00 00 | @@..........................{... |
| 2940 | 00 00 00 01 01 01 36 36 36 4c 4c 4c a5 99 91 ea d3 c3 e9 cf be e8 cd bb e7 cc b9 e7 cb b8 e7 cb | ......666LLL.................... |
| 2960 | b8 e7 cb b8 e7 cc b9 e8 cd bb e9 d0 be ea d3 c3 58 50 4a 00 00 00 00 00 00 0a 0a 0a 1a 1a 1a 3d | ................XPJ............= |
| 2980 | 3b 39 e9 d2 c1 e8 cd bb e7 ca b7 e6 c8 b5 e6 c8 b4 e6 c9 b6 e7 cc b9 e9 d0 be 75 6a 63 00 00 00 | ;9........................ujc... |
| 29a0 | 00 00 00 07 07 07 39 39 39 4c 4c 4c af a2 99 ea d3 c2 e9 cf be e8 cd bb e7 cc b9 e7 cb b8 e7 cb | ......999LLL.................... |
| 29c0 | b8 e7 cb b8 e7 cc b9 e8 cd ba e8 ce bc e8 cf bd cd b6 a7 bb a7 99 e7 cb b8 e7 ca b6 e6 c9 b5 e7 | ................................ |
| 29e0 | cb b8 e8 ce bd af 9f 93 00 00 00 00 00 00 1a 1a 1a 40 40 40 95 8b 83 e9 d0 bf e7 cc b9 e7 ca b7 | .................@@@............ |
| 2a00 | e7 cb b8 e8 ce bd db c6 b6 2b 27 25 00 00 00 00 00 00 05 05 05 36 36 36 4d 4d 4d 93 8a 83 e9 d1 | .........+'%.........666MMM..... |
| 2a20 | c0 e8 cd bb e7 cb b8 e6 c9 b5 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c9 b5 e7 | ................................ |
| 2a40 | cb b8 e8 ce bd af 9f 93 00 00 00 00 00 00 05 05 05 3a 3a 3a 4d 4d 4d c3 b3 a8 e9 d1 c0 e8 cd bb | .................:::MMM......... |
| 2a60 | e7 cb b8 e7 ca b6 e6 c9 b5 e6 c9 b5 e6 c9 b5 e6 c9 b5 e6 c9 b6 e7 ca b7 e7 cb b8 e7 cb b8 e7 cb | ................................ |
| 2a80 | b8 e7 ca b7 e6 c9 b5 e6 c8 b5 e6 c9 b5 e7 cb b9 e9 d0 bf 75 6b 63 00 00 00 00 00 00 31 31 31 40 | ...................ukc......111@ |
| 2aa0 | 40 40 ea d2 c2 e8 cd bb e7 ca b6 e6 c8 b4 e6 c8 b5 e7 ca b6 e8 cd ba e9 d1 c1 1d 1a 18 00 00 00 | @@.............................. |
| 2ac0 | 00 00 00 2e 2e 2e 4b 4b 4b 88 81 7b ea d2 c2 e8 ce bd e7 cb b9 e7 ca b7 e6 c9 b5 e6 c9 b5 e6 c9 | ......KKK..{.................... |
| 2ae0 | b5 e6 c9 b5 e6 c9 b5 e7 ca b7 e7 cc b9 e8 cf bd ea d3 c3 49 42 3e 00 00 00 00 00 00 16 16 16 25 | ...................IB>.........% |
| 2b00 | 25 25 a1 94 8a e8 cf be e7 cb b8 e6 c9 b5 e6 c8 b5 e7 ca b7 e8 cd bb db c5 b6 0e 0d 0c 00 00 00 | %%.............................. |
| 2b20 | 00 00 00 31 31 31 4c 4c 4c 93 8a 83 ea d2 c2 e8 ce bd e7 cb b9 e7 ca b7 e6 c9 b5 e6 c9 b5 e6 c9 | ...111LLL....................... |
| 2b40 | b5 e6 c9 b5 e6 c9 b5 e7 ca b6 e7 ca b7 e7 cb b8 e7 cb b8 e7 cb b8 e7 ca b6 e6 c9 b5 e6 c9 b5 e7 | ................................ |
| 2b60 | cb b8 e8 ce bd af 9f 93 00 00 00 00 00 00 1a 1a 1a 40 40 40 95 8b 83 e9 d0 bf e8 cd ba e7 cc b9 | .................@@@............ |
| 2b80 | e8 ce bc ea d2 c2 2b 27 25 00 00 00 00 00 00 04 04 04 35 35 35 4d 4d 4d 88 81 7b e9 d1 c1 e8 cd | ......+'%.........555MMM..{..... |
| 2ba0 | bb e7 cb b8 e6 c9 b5 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c9 b6 e7 | ................................ |
| 2bc0 | cc b9 e9 d0 bf 49 42 3e 00 00 00 00 00 00 28 28 28 4b 4b 4b 93 8a 83 e9 d2 c1 e8 cd bb e7 ca b7 | .....IB>......(((KKK............ |
| 2be0 | e6 c9 b5 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b5 e6 c9 b5 e6 c9 b5 e6 c9 | ................................ |
| 2c00 | b5 e6 c9 b5 e6 c8 b5 e6 c8 b4 e6 c9 b5 e7 cb b9 e9 d0 bf 75 6b 63 00 00 00 00 00 00 31 31 31 40 | ...................ukc......111@ |
| 2c20 | 40 40 ea d2 c2 e8 cd bb e7 ca b6 e6 c8 b4 e6 c9 b5 e7 cb b8 e8 ce bd a1 91 87 00 00 00 00 00 00 | @@.............................. |
| 2c40 | 0e 0e 0e 43 43 43 60 5e 5c e0 cb bc e8 cf bd e7 cb b8 e6 c9 b6 e6 c8 b5 e6 c8 b4 e6 c8 b4 e6 c8 | ...CCC`^\....................... |
| 2c60 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b5 e6 c9 b6 e7 cc b9 e9 d0 be cd ba ac 00 00 00 00 00 00 06 06 06 28 | ...............................( |
| 2c80 | 28 28 45 42 41 e9 d1 c1 e8 cd ba e7 ca b6 e6 c9 b5 e7 cb b8 e8 cf bd 92 85 7b 00 00 00 00 00 00 | ((EBA....................{...... |
| 2ca0 | 15 15 15 45 45 45 60 5e 5c ea d3 c3 e8 ce bd e7 cb b8 e6 c9 b5 e6 c8 b5 e6 c8 b4 e6 c8 b4 e6 c8 | ...EEE`^\....................... |
| 2cc0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c9 b5 e6 c9 b5 e6 c9 b5 e6 c9 b5 e6 c9 b5 e6 c8 b5 e6 c9 b5 e7 | ................................ |
| 2ce0 | cb b8 e8 ce bd af 9f 93 00 00 00 00 00 00 1a 1a 1a 40 40 40 95 8b 83 e9 d1 c0 e8 ce bd e8 cf bd | .................@@@............ |
| 2d00 | e9 d2 c2 58 50 4a 00 00 00 00 00 00 04 04 04 35 35 35 4d 4d 4d 88 80 7a e9 d2 c1 e8 ce bc e7 cb | ...XPJ.........555MMM..z........ |
| 2d20 | b8 e6 c9 b5 e6 c8 b5 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e7 ca b6 e8 | ................................ |
| 2d40 | cd bb ea d2 c2 00 00 00 00 00 00 00 00 00 3d 3d 3d 4c 4c 4c e0 cb bc e8 cf bd e7 cb b8 e6 c9 b5 | ..............===LLL............ |
| 2d60 | e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 2d80 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c9 b5 e7 cb b9 e9 d0 bf 75 6b 63 00 00 00 00 00 00 31 31 31 40 | ...................ukc......111@ |
| 2da0 | 40 40 ea d2 c2 e8 cd bb e7 ca b6 e6 c8 b4 e6 c9 b5 e7 cc b9 e9 d0 bf 58 50 4a 00 00 00 00 00 00 | @@.....................XPJ...... |
| 2dc0 | 2a 2a 2a 4b 4b 4b a6 9a 92 e9 d1 c0 e7 cc ba e7 ca b6 e6 c8 b5 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ***KKK.......................... |
| 2de0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b5 e7 ca b7 e8 cd bb e9 d2 c1 49 42 3e 00 00 00 00 00 00 27 | ......................IB>......' |
| 2e00 | 27 27 33 33 33 c8 b5 a8 e8 ce bc e7 ca b7 e7 ca b6 e7 cc b9 e9 d0 bf 49 42 3e 00 00 00 00 00 00 | ''333..................IB>...... |
| 2e20 | 2d 2d 2d 4a 4a 4a b0 a2 99 e9 d0 bf e7 cc ba e6 c9 b6 e6 c8 b5 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ---JJJ.......................... |
| 2e40 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b5 e7 | ................................ |
| 2e60 | cb b8 e8 ce bd af 9f 93 00 00 00 00 00 00 1a 1a 1a 40 40 40 95 8b 83 ea d2 c2 e9 d1 c0 ea d2 c2 | .................@@@............ |
| 2e80 | 58 50 4a 00 00 00 00 00 00 01 01 01 35 35 35 4d 4d 4d 88 80 7a e9 d2 c1 e8 ce bc e7 cb b8 e6 c9 | XPJ.........555MMM..z........... |
|
switch (GET_STATE(thread->statearg))
{
case STATE_BLOCKED:
/* Remove thread from the list of blocked threads and add it
* to the scheduler's list of running processes. */
remove_from_list(list, thread);
add_to_list(&cores[CURRENT_CORE].running, thread);
case STATE_BLOCKED_W_TMO:
/* Just remove the timeout to cause scheduler to immediately
* wake up the thread. */
thread->statearg = 0;
break;
default:
/* Nothing to do. Thread has already been woken up
* or it's state is not blocked or blocked with timeout. */
return ;
}
}
/*---------------------------------------------------------------------------
* Create a thread
* If using a dual core architecture, specify which core to start the thread
* on, and whether to fall back to the other core if it can't be created
* Return ID if context area could be allocated, else NULL.
*---------------------------------------------------------------------------
*/
struct thread_entry*
create_thread(void (*function)(void), void* stack, int stack_size,
const char *name IF_PRIO(, int priority | @@.............................. |
| 3240 | 46 46 46 79 73 6e e9 d1 c0 e7 cc ba e6 c9 b6 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | FFFysn.......................... |
| 3260 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e7 ca b7 e8 ce bc ea d3 c3 00 00 00 00 00 00 0a | ................................ |
| 3280 | 0a 0a 3d 3d 3d 68 63 5f e9 d1 c0 e7 cc ba e7 cb b9 e8 ce bc af 9e 92 00 00 00 00 00 00 16 16 16 | ..===hc_........................ |
| 32a0 | 45 45 45 8d 84 7e e9 d1 c0 e7 cc ba e6 c9 b6 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | EEE..~.......................... |
| 32c0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b5 e7 | ................................ |
| 32e0 | cb b8 e8 ce bd af 9f 93 00 00 00 00 00 00 13 13 13 39 39 39 80 76 6e 93 85 7c 00 00 00 00 00 00 | .................999.vn..|...... |
| 3300 | 00 00 00 2e 2e 2e 4c 4c 4c 88 80 7a e9 d2 c2 e8 ce bc e7 cb b8 e6 c9 b6 e6 c8 b5 e6 c8 b4 e6 c8 | ......LLL..z.................... |
| 3320 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c9 b5 e7 cb b9 e9 | ................................ |
| 3340 | d0 be 75 6b 63 00 00 00 00 00 00 2a 2a 2a 40 40 40 bf af a4 e8 cf bd e7 cb b8 e6 c9 b5 e6 c8 b4 | ..ukc......***@@@............... |
| 3360 | e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 3380 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c9 b5 e7 cb b9 e9 d0 bf 75 6b 63 00 00 00 00 00 00 31 31 31 40 | ...................ukc......111@ |
| 33a0 | 40 40 ea d2 c2 e8 cd bb e7 ca b6 e6 c8 b4 e7 ca b7 e8 ce bc af 9e 93 00 00 00 00 00 00 18 18 18 | @@.............................. |
| 33c0 | 43 43 43 97 8c 85 e9 d0 bf e7 cc b9 e6 c9 b5 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | CCC............................. |
| 33e0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e7 ca b6 e8 cd bb ea d2 c2 1d 1a 18 00 00 00 04 | ................................ |
| 3400 | 04 04 3d 3d 3d 68 63 5f e9 d1 c0 e8 cd ba e7 cc b9 e8 ce bd af 9f 93 00 00 00 00 00 00 1a 1a 1a | ..===hc_........................ |
| 3420 | 41 41 41 96 8b 84 e9 d0 bf e7 cc b9 e6 c9 b5 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | AAA............................. |
| 3440 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b5 e7 | ................................ |
| 3460 | cb b8 e8 ce bd af 9f 93 00 00 00 00 00 00 05 05 05 25 25 25 2b 27 25 00 00 00 00 00 00 00 00 00 | .................%%%+'%......... |
| 3480 | 27 27 27 46 46 46 7d 77 72 ea d3 c3 e8 ce bd e7 cb b8 e6 c9 b6 e6 c8 b5 e6 c8 b4 e6 c8 b4 e6 c8 | '''FFF}wr....................... |
| 34a0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c9 b5 e7 cb b9 e9 | ................................ |
| 34c0 | d0 be 75 6b 63 00 00 00 00 00 00 2a 2a 2a 40 40 40 bf af a4 e8 cf bd e7 cb b8 e6 c8 b5 e6 c8 b4 | ..ukc......***@@@............... |
| 34e0 | e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | ................................ |
| 3500 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c9 b5 e7 cb b9 e9 d0 bf 75 6b 63 00 00 00 00 00 00 31 31 31 40 | ...................ukc......111@ |
| 3520 | 40 40 ea d2 c2 e8 cd bb e7 ca b6 e6 c8 b5 e7 ca b7 e8 ce bc af 9e 93 00 00 00 00 00 00 1a 1a 1a | @@.............................. |
| 3540 | 40 40 40 95 8b 83 e9 d0 bf e7 cc b9 e6 c9 b5 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | @@@............................. |
| 3560 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e7 ca b6 e8 cd ba e9 d2 c1 3a 35 31 00 00 00 00 | .........................:51.... |
| 3580 | 00 00 3d 3d 3d 54 51 50 e9 d1 c1 e8 cd ba e7 cc b9 e8 ce bd af 9f 93 00 00 00 00 00 00 1a 1a 1a | ..===TQP........................ |
| 35a0 | 40 40 40 95 8b 83 e9 d0 bf e7 cc b9 e6 c9 b5 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 | @@@............................. |
| 35c0 | b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b4 e6 c8 b5 e7 |
add_to_list(&cores[core].running, thread);
regs = &thread->context;
/* Align stack to an even 32 bit boundary */
regs->sp = (void*)(((unsigned int)stack + stack_size) & ~3);
regs->start = (void*)function;
/* Do any CPU specific inits after initializing common items
to have access to valid data */
THREAD_CPU_INIT(core, thread);
return thread;
#if NUM_CORES == 1
#undef core
#endif
}
#ifdef HAVE_SCHEDULER_BOOSTCTRL
void trigger_cpu_boost(void)
{
if (!STATE_IS_BOOSTED(cores[CURRENT_CORE].running->statearg))
{
SET_BOOST_STATE(cores[CURRENT_CORE].running->statearg);
if (!boosted_threads)
{
cpu_boost(true);
}
boosted_threads++;
}
}
#endif
/*---------------------------------------------------------------------------
* Remove a thread on the current core from the scheduler.
* Parameter is the ID as returned from create_thread().
*---------------------------------------------------------------------------
*/
void remove_thread(struct thread_entry *thread)
{
if (thread == NULL)
thread = cores[CURRENT_CORE].running;
/* Free the entry by removing thread name. */
thread->name = NULL;
#ifdef HAVE_PRIORITY_SCHEDULING
highest_priority = 100;
#endif
if (thread == cores[CURRENT_CORE].running)
{
remove_from_list(&cores[CURRENT_CORE].running, thread);
switch_thread(false, NULL);
return ;
}
if (thread == cores[CURRENT_CORE].sleeping)
remove_from_list(&cores[CURRENT_CORE].sleeping, thread);
else
remove_from_list(NULL, thread);
}
#ifdef HAVE_PRIORITY_SCHEDULING
int thread_set_priority(struct thread_entry *thread, int priority)
{
int old_priority;
if (thread == NULL)
thread = cores[CURRENT_CORE].running;
old_priority = thread->priority;
thread->priority = priority;
highest_priority = 100;
return old_priority;
}
int thread_get_priority(struct thread_entry *thread)
{
if (thread == NULL)
thread = cores[CURRENT_CORE].running;
return thread->priority;
}
#endif
struct thread_entry * thread_get_current(void)
{
return cores[CURRENT_CORE].running;
}
void init_threads(void)
{
unsigned int core = CURRENT_CORE;
if (core == CPU)
memset(cores, 0, sizeof cores);
cores[core].sleeping = NULL;
cores[core].running = NULL;
cores[core].threads[0].name = main_thread_name;
cores[core].threads[0].statearg = 0;
#ifdef HAVE_PRIORITY_SCHEDULING
cores[core].threads[0].priority = PRIORITY_USER_INTERFACE;
highest_priority = 100;
#endif
#ifdef HAVE_SCHEDULER_BOOSTCTRL
boosted_threads = 0;
#endif
add_to_list(&cores[core].running, &cores[core].threads[0]);
/* In multiple core setups, each core has a different stack. There is
* probably a much better way to do this. */
if (core == CPU)
{
cores[CPU].threads[0].stack = stackbegin;
cores[CPU].threads[0].stack_size = (int)stackend - (int)stackbegin;
} else {
#if NUM_CORES > 1 /* This code path will not be run on single core targets */
cores[COP].threads[0].stack = cop_stackbegin;
cores[COP].threads[0].stack_size =
(int)cop_stackend - (int)cop_stackbegin;
#endif
}
cores[core].threads[0].context.start = 0; /* thread 0 already running */
#if NUM_CORES > 1
if(core == COP)
kernel_running_on_cop = true; /* can we use context.start for this? */
#endif
}
int thread_stack_usage(const struct thread_entry *thread)
{
unsigned int i;
unsigned int *stackptr = thread->stack;
for (i = 0;i < thread->stack_size/sizeof(int);i++)
{
if (stackptr[i] != DEADBEEF)
break;
}
return ((thread->stack_size - i * sizeof(int)) * 100) /
thread->stack_size;
}
int thread_get_status(const struct thread_entry *thread)
{
return GET_STATE(thread->statearg);
}
|