31 static inline int PCinit() {
32 register int r
asm(
"v0");
33 __asm__
volatile(
"break 0, 0x101\n" :
"=r"(r));
37 static inline int PCcreat(
const char *name,
int perms) {
38 register const char *a0
asm(
"a0") = name;
39 register const char *a1
asm(
"a1") = name;
40 register int a2
asm(
"a2") = 0;
41 register int v0
asm(
"v0");
42 register int v1
asm(
"v1");
43 __asm__
volatile(
"break 0, 0x102\n" :
"=r"(v0),
"=r"(v1) :
"r"(a0),
"r"(a1),
"r"(a2));
44 if (v0 == 0)
return v1;
48 static inline int PCopen(
char *name,
int flags,
int perms) {
49 register int a2
asm(
"a2") = flags;
50 register const char *a0
asm(
"a0") = name;
51 register const char *a1
asm(
"a1") = name;
52 register int v0
asm(
"v0");
53 register int v1
asm(
"v1");
54 __asm__
volatile(
"break 0, 0x103\n" :
"=r"(v0),
"=r"(v1) :
"r"(a0),
"r"(a1),
"r"(a2));
55 if (v0 == 0)
return v1;
59 static inline int PCclose(
int fd) {
60 register int a0
asm(
"a0") = fd;
61 register int a1
asm(
"a1") = fd;
62 register int v0
asm(
"v0");
63 __asm__
volatile(
"break 0, 0x104\n" :
"=r"(v0) :
"r"(a0),
"r"(a1) :
"v1");
67 static inline int PCread(
int fd,
void *buf,
int len) {
68 register int a0
asm(
"a0") = 0;
69 register int a1
asm(
"a1") = fd;
70 register int a2
asm(
"a2") = len;
71 register void *a3
asm(
"a3") = buf;
72 register int v0
asm(
"v0");
73 register int v1
asm(
"v1");
74 __asm__
volatile(
"break 0, 0x105\n" :
"=r"(v0),
"=r"(v1) :
"r"(a0),
"r"(a1),
"r"(a2),
"r"(a3) :
"memory");
75 if (v0 == 0)
return v1;
79 static inline int PCwrite(
int fd,
const void *buf,
int len) {
80 register int a0
asm(
"a0") = 0;
81 register int a1
asm(
"a1") = fd;
82 register int a2
asm(
"a2") = len;
83 register const void *a3
asm(
"a3") = buf;
84 register int v0
asm(
"v0");
85 register int v1
asm(
"v1");
86 __asm__
volatile(
"break 0, 0x106\n" :
"=r"(v0),
"=r"(v1) :
"r"(a0),
"r"(a1),
"r"(a2),
"r"(a3));
87 if (v0 == 0)
return v1;
91 static inline int PClseek(
int fd,
int offset,
int wheel) {
92 register int a3
asm(
"a3") = wheel;
93 register int a2
asm(
"a2") = offset;
94 register int a0
asm(
"a0") = fd;
95 register int a1
asm(
"a1") = fd;
96 register int v0
asm(
"v0");
97 register int v1
asm(
"v1");
98 __asm__
volatile(
"break 0, 0x107\n" :
"=r"(v0),
"=r"(v1) :
"r"(a0),
"r"(a1),
"r"(a2),
"r"(a3));
99 if (v0 == 0)
return v1;