1.. SPDX-License-Identifier: GPL-2.0+:
2
3cmp command
4===========
5
6Synopsis
7--------
8
9::
10
11    cmp [.b, .w, .l, .q] addr1 addr2 count
12
13Description
14-----------
15
16The cmp command is used to compare two memory areas. By default it works on
17four byte (32-bit) values. By appending .b, .w, .l, .q the size of the
18values is controlled:
19
20cmp.b
21    compare 1 byte (8-bit) values
22
23cmp.w
24    compare 2 byte (16-bit) values
25
26cmp.l
27    compare 4 byte (32-bit) values
28
29cmp.q
30    compare 8 byte (64-bit) values
31
32The parameters are used as follows:
33
34addr1
35    Address of the first memory area.
36
37addr2
38    Address of the second memory area.
39
40count
41    Number of bytes to compare (as hexadecimal number).
42
43Example
44-------
45
46In the example below the strings "Hello world\n" and "Hello World\n" are written
47to memory and then compared.
48
49::
50
51    => mm.b 0x1000000
52    01000000: 00 ? 48
53    01000001: 00 ? 65
54    01000002: 00 ? 6c
55    01000003: 00 ? 6c
56    01000004: 00 ? 6f
57    01000005: 00 ? 20
58    01000006: 00 ? 77
59    01000007: 00 ? 6f
60    01000008: 00 ? 72
61    01000009: 00 ? 6c
62    0100000a: 00 ? 64
63    0100000b: 00 ? 0d
64    0100000c: 00 ? => <INTERRUPT>
65    => mm.b 0x101000
66    00101000: 00 ? 48
67    00101001: 00 ? 65
68    00101002: 00 ? 6c
69    00101003: 00 ? 6c
70    00101004: 00 ? 6f
71    00101005: 00 ? 20
72    00101006: 00 ? 57
73    00101007: 00 ? 6f
74    00101008: 00 ? 72
75    00101009: 00 ? 6c
76    0010100a: 00 ? 64
77    0010100b: 00 ? 0d
78    0010100c: 00 ? => <INTERRUPT>
79    => cmp 0x1000000 0x101000 0xc
80    word at 0x01000004 (0x6f77206f) != word at 0x00101004 (0x6f57206f)
81    Total of 1 word(s) were the same
82    => cmp.b 0x1000000 0x101000 0xc
83    byte at 0x01000006 (0x77) != byte at 0x00101006 (0x57)
84    Total of 6 byte(s) were the same
85    => cmp.w 0x1000000 0x101000 0xc
86    halfword at 0x01000006 (0x6f77) != halfword at 0x00101006 (0x6f57)
87    Total of 3 halfword(s) were the same
88    => cmp.l 0x1000000 0x101000 0xc
89    word at 0x01000004 (0x6f77206f) != word at 0x00101004 (0x6f57206f)
90    Total of 1 word(s) were the same
91    => cmp.q 0x1000000 0x101000 0xc
92    double word at 0x01000000 (0x6f77206f6c6c6548) != double word at 0x00101000 (0x6f57206f6c6c6548)
93    Total of 0 double word(s) were the same
94
95Configuration
96-------------
97
98The cmp command is only available if CONFIG_CMD_MEMORY=y. The cmp.q command is
99only available if additionally CONFIG_MEM_SUPPORT_64BIT_DATA=y.
100
101Return value
102------------
103
104The return value $? is true (0) if the compared memory areas are equal.
105The reutrn value is false (1) if the compared memory areas differ.
106