Skip to content

Commit 7c1045e

Browse files
authored
sys: add MIPS R6 support (#2138)
Currently R6 targets are almost identical to their R2/R5 counterparts.
1 parent f5130ac commit 7c1045e

File tree

9 files changed

+99
-13
lines changed

9 files changed

+99
-13
lines changed

changelog/2138.added.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Added `mips32r6` and `mips64r6` support for signal, ioctl and ptrace

src/sys/ioctl/linux.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,9 @@ pub const TYPEBITS: ioctl_num_type = 8;
1919
cfg_if! {
2020
if #[cfg(any(
2121
target_arch = "mips",
22+
target_arch = "mips32r6",
2223
target_arch = "mips64",
24+
target_arch = "mips64r6",
2325
target_arch = "powerpc",
2426
target_arch = "powerpc64",
2527
target_arch = "sparc64"

src/sys/ptrace/linux.rs

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,42 +53,54 @@ libc_enum! {
5353
#[cfg(any(all(target_os = "android", target_pointer_width = "32"),
5454
all(target_os = "linux", any(target_env = "musl",
5555
target_arch = "mips",
56+
target_arch = "mips32r6",
5657
target_arch = "mips64",
58+
target_arch = "mips64r6",
5759
target_arch = "x86_64",
5860
target_pointer_width = "32"))))]
5961
PTRACE_GETREGS,
6062
#[cfg(any(all(target_os = "android", target_pointer_width = "32"),
6163
all(target_os = "linux", any(target_env = "musl",
6264
target_arch = "mips",
65+
target_arch = "mips32r6",
6366
target_arch = "mips64",
67+
target_arch = "mips64r6",
6468
target_arch = "x86_64",
6569
target_pointer_width = "32"))))]
6670
PTRACE_SETREGS,
6771
#[cfg(any(all(target_os = "android", target_pointer_width = "32"),
6872
all(target_os = "linux", any(target_env = "musl",
6973
target_arch = "mips",
74+
target_arch = "mips32r6",
7075
target_arch = "mips64",
76+
target_arch = "mips64r6",
7177
target_arch = "x86_64",
7278
target_pointer_width = "32"))))]
7379
PTRACE_GETFPREGS,
7480
#[cfg(any(all(target_os = "android", target_pointer_width = "32"),
7581
all(target_os = "linux", any(target_env = "musl",
7682
target_arch = "mips",
83+
target_arch = "mips32r6",
7784
target_arch = "mips64",
85+
target_arch = "mips64r6",
7886
target_arch = "x86_64",
7987
target_pointer_width = "32"))))]
8088
PTRACE_SETFPREGS,
8189
PTRACE_ATTACH,
8290
PTRACE_DETACH,
8391
#[cfg(all(target_os = "linux", any(target_env = "musl",
8492
target_arch = "mips",
93+
target_arch = "mips32r6",
8594
target_arch = "mips64",
95+
target_arch = "mips64r6",
8696
target_arch = "x86",
8797
target_arch = "x86_64")))]
8898
PTRACE_GETFPXREGS,
8999
#[cfg(all(target_os = "linux", any(target_env = "musl",
90100
target_arch = "mips",
101+
target_arch = "mips32r6",
91102
target_arch = "mips64",
103+
target_arch = "mips64r6",
92104
target_arch = "x86",
93105
target_arch = "x86_64")))]
94106
PTRACE_SETFPXREGS,
@@ -98,10 +110,14 @@ libc_enum! {
98110
PTRACE_GETSIGINFO,
99111
PTRACE_SETSIGINFO,
100112
#[cfg(all(target_os = "linux", not(any(target_arch = "mips",
101-
target_arch = "mips64"))))]
113+
target_arch = "mips32r6",
114+
target_arch = "mips64",
115+
target_arch = "mips64r6"))))]
102116
PTRACE_GETREGSET,
103117
#[cfg(all(target_os = "linux", not(any(target_arch = "mips",
104-
target_arch = "mips64"))))]
118+
target_arch = "mips32r6",
119+
target_arch = "mips64",
120+
target_arch = "mips64r6"))))]
105121
PTRACE_SETREGSET,
106122
#[cfg(target_os = "linux")]
107123
#[cfg_attr(docsrs, doc(cfg(all())))]
@@ -110,10 +126,14 @@ libc_enum! {
110126
#[cfg_attr(docsrs, doc(cfg(all())))]
111127
PTRACE_INTERRUPT,
112128
#[cfg(all(target_os = "linux", not(any(target_arch = "mips",
113-
target_arch = "mips64"))))]
129+
target_arch = "mips32r6",
130+
target_arch = "mips64",
131+
target_arch = "mips64r6"))))]
114132
PTRACE_LISTEN,
115133
#[cfg(all(target_os = "linux", not(any(target_arch = "mips",
116-
target_arch = "mips64"))))]
134+
target_arch = "mips32r6",
135+
target_arch = "mips64",
136+
target_arch = "mips64r6"))))]
117137
PTRACE_PEEKSIGINFO,
118138
#[cfg(all(target_os = "linux", target_env = "gnu",
119139
any(target_arch = "x86", target_arch = "x86_64")))]

src/sys/signal.rs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,10 @@ libc_enum! {
6767
/// Stack fault (obsolete)
6868
#[cfg(all(any(target_os = "android", target_os = "emscripten",
6969
target_os = "fuchsia", target_os = "linux"),
70-
not(any(target_arch = "mips", target_arch = "mips64",
70+
not(any(target_arch = "mips",
71+
target_arch = "mips32r6",
72+
target_arch = "mips64",
73+
target_arch = "mips64r6",
7174
target_arch = "sparc64"))))]
7275
SIGSTKFLT,
7376
/// To parent on child stop or exit
@@ -152,7 +155,9 @@ impl FromStr for Signal {
152155
),
153156
not(any(
154157
target_arch = "mips",
158+
target_arch = "mips32r6",
155159
target_arch = "mips64",
160+
target_arch = "mips64r6",
156161
target_arch = "sparc64"
157162
))
158163
))]
@@ -236,7 +241,9 @@ impl Signal {
236241
),
237242
not(any(
238243
target_arch = "mips",
244+
target_arch = "mips32r6",
239245
target_arch = "mips64",
246+
target_arch = "mips64r6",
240247
target_arch = "sparc64"
241248
))
242249
))]
@@ -329,7 +336,9 @@ const SIGNALS: [Signal; 28] = [
329336
),
330337
not(any(
331338
target_arch = "mips",
339+
target_arch = "mips32r6",
332340
target_arch = "mips64",
341+
target_arch = "mips64r6",
333342
target_arch = "sparc64"
334343
))
335344
))]
@@ -347,7 +356,13 @@ const SIGNALS: [Signal; 31] = [
347356
target_os = "emscripten",
348357
target_os = "fuchsia"
349358
),
350-
any(target_arch = "mips", target_arch = "mips64", target_arch = "sparc64")
359+
any(
360+
target_arch = "mips",
361+
target_arch = "mips32r6",
362+
target_arch = "mips64",
363+
target_arch = "mips64r6",
364+
target_arch = "sparc64"
365+
)
351366
))]
352367
#[cfg(feature = "signal")]
353368
const SIGNALS: [Signal; 30] = [

test/sys/test_aio.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -498,7 +498,9 @@ mod aio_writev {
498498
any(
499499
all(target_env = "musl", target_arch = "x86_64"),
500500
target_arch = "mips",
501-
target_arch = "mips64"
501+
target_arch = "mips32r6",
502+
target_arch = "mips64",
503+
target_arch = "mips64r6"
502504
),
503505
ignore
504506
)]

test/sys/test_ioctl.rs

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@ mod linux {
3636
fn test_op_none() {
3737
if cfg!(any(
3838
target_arch = "mips",
39+
target_arch = "mips32r6",
3940
target_arch = "mips64",
41+
target_arch = "mips64r6",
4042
target_arch = "powerpc",
4143
target_arch = "powerpc64"
4244
)) {
@@ -54,7 +56,9 @@ mod linux {
5456
fn test_op_write() {
5557
if cfg!(any(
5658
target_arch = "mips",
59+
target_arch = "mips32r6",
5760
target_arch = "mips64",
61+
target_arch = "mips64r6",
5862
target_arch = "powerpc",
5963
target_arch = "powerpc64"
6064
)) {
@@ -69,7 +73,11 @@ mod linux {
6973
#[cfg(target_pointer_width = "64")]
7074
#[test]
7175
fn test_op_write_64() {
72-
if cfg!(any(target_arch = "mips64", target_arch = "powerpc64")) {
76+
if cfg!(any(
77+
target_arch = "mips64",
78+
target_arch = "mips64r6",
79+
target_arch = "powerpc64"
80+
)) {
7381
assert_eq!(
7482
request_code_write!(b'z', 10, 1u64 << 32) as u32,
7583
0x8000_7A0A
@@ -88,7 +96,9 @@ mod linux {
8896
fn test_op_read() {
8997
if cfg!(any(
9098
target_arch = "mips",
99+
target_arch = "mips32r6",
91100
target_arch = "mips64",
101+
target_arch = "mips64r6",
92102
target_arch = "powerpc",
93103
target_arch = "powerpc64"
94104
)) {
@@ -103,7 +113,11 @@ mod linux {
103113
#[cfg(target_pointer_width = "64")]
104114
#[test]
105115
fn test_op_read_64() {
106-
if cfg!(any(target_arch = "mips64", target_arch = "powerpc64")) {
116+
if cfg!(any(
117+
target_arch = "mips64",
118+
target_arch = "mips64r6",
119+
target_arch = "powerpc64"
120+
)) {
107121
assert_eq!(
108122
request_code_read!(b'z', 10, 1u64 << 32) as u32,
109123
0x4000_7A0A

test/sys/test_socket.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1676,7 +1676,9 @@ fn loopback_address(
16761676
qemu,
16771677
any(
16781678
target_arch = "mips",
1679+
target_arch = "mips32r6",
16791680
target_arch = "mips64",
1681+
target_arch = "mips64r6",
16801682
target_arch = "powerpc64",
16811683
)
16821684
),
@@ -1770,7 +1772,9 @@ pub fn test_recv_ipv4pktinfo() {
17701772
qemu,
17711773
any(
17721774
target_arch = "mips",
1775+
target_arch = "mips32r6",
17731776
target_arch = "mips64",
1777+
target_arch = "mips64r6",
17741778
target_arch = "powerpc64",
17751779
)
17761780
),
@@ -2061,7 +2065,9 @@ pub fn test_recvif_ipv6() {
20612065
qemu,
20622066
any(
20632067
target_arch = "mips",
2068+
target_arch = "mips32r6",
20642069
target_arch = "mips64",
2070+
target_arch = "mips64r6",
20652071
target_arch = "powerpc64",
20662072
)
20672073
),

test/sys/test_wait.rs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,12 @@ fn test_wait_signal() {
3333
//target_os = "haiku",
3434
all(target_os = "linux", not(target_env = "uclibc")),
3535
))]
36-
#[cfg(not(any(target_arch = "mips", target_arch = "mips64")))]
36+
#[cfg(not(any(
37+
target_arch = "mips",
38+
target_arch = "mips32r6",
39+
target_arch = "mips64",
40+
target_arch = "mips64r6"
41+
)))]
3742
fn test_waitid_signal() {
3843
let _m = crate::FORK_MTX.lock();
3944

@@ -76,7 +81,12 @@ fn test_wait_exit() {
7681
target_os = "haiku",
7782
all(target_os = "linux", not(target_env = "uclibc")),
7883
))]
79-
#[cfg(not(any(target_arch = "mips", target_arch = "mips64")))]
84+
#[cfg(not(any(
85+
target_arch = "mips",
86+
target_arch = "mips32r6",
87+
target_arch = "mips64",
88+
target_arch = "mips64r6"
89+
)))]
8090
fn test_waitid_exit() {
8191
let _m = crate::FORK_MTX.lock();
8292

test/test_mq.rs

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,15 @@ fn test_mq_getattr() {
112112
// FIXME: Fix failures for mips in QEMU
113113
#[test]
114114
#[cfg_attr(
115-
all(qemu, any(target_arch = "mips", target_arch = "mips64")),
115+
all(
116+
qemu,
117+
any(
118+
target_arch = "mips",
119+
target_arch = "mips32r6",
120+
target_arch = "mips64",
121+
target_arch = "mips64r6"
122+
)
123+
),
116124
ignore
117125
)]
118126
fn test_mq_setattr() {
@@ -162,7 +170,15 @@ fn test_mq_setattr() {
162170
// FIXME: Fix failures for mips in QEMU
163171
#[test]
164172
#[cfg_attr(
165-
all(qemu, any(target_arch = "mips", target_arch = "mips64")),
173+
all(
174+
qemu,
175+
any(
176+
target_arch = "mips",
177+
target_arch = "mips32r6",
178+
target_arch = "mips64",
179+
target_arch = "mips64r6"
180+
)
181+
),
166182
ignore
167183
)]
168184
fn test_mq_set_nonblocking() {

0 commit comments

Comments
 (0)