Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(213)

Side by Side Diff: linux_syscall_support.h

Issue 389673002: MIPS: The new ABI should be allowed to use r8 and r9 for syscalls. (Closed) Base URL: http://linux-syscall-support.googlecode.com/svn/trunk/lss/
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* Copyright (c) 2005-2011, Google Inc. 1 /* Copyright (c) 2005-2011, Google Inc.
2 * All rights reserved. 2 * All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 2548 matching lines...) Expand 10 before | Expand all | Expand 10 after
2559 "i"(__NR_clone), "i"(__NR_exit) 2559 "i"(__NR_clone), "i"(__NR_exit)
2560 : "cc", "x8", "memory"); 2560 : "cc", "x8", "memory");
2561 } 2561 }
2562 LSS_RETURN(int, __res); 2562 LSS_RETURN(int, __res);
2563 } 2563 }
2564 #elif defined(__mips__) 2564 #elif defined(__mips__)
2565 #undef LSS_REG 2565 #undef LSS_REG
2566 #define LSS_REG(r,a) register unsigned long __r##r __asm__("$"#r) = \ 2566 #define LSS_REG(r,a) register unsigned long __r##r __asm__("$"#r) = \
2567 (unsigned long)(a) 2567 (unsigned long)(a)
2568 #undef LSS_BODY 2568 #undef LSS_BODY
2569 #if _MIPS_SIM == _MIPS_SIM_ABI32
2569 #define LSS_BODY(type,name,r7,...) \ 2570 #define LSS_BODY(type,name,r7,...) \
2570 register unsigned long __v0 __asm__("$2") = __NR_##name; \ 2571 register unsigned long __v0 __asm__("$2") = __NR_##name; \
2571 __asm__ __volatile__ ("syscall\n" \ 2572 __asm__ __volatile__ ("syscall\n" \
2572 : "+r"(__v0), r7 (__r7) \ 2573 : "+r"(__v0), r7 (__r7) \
2573 : "0"(__v0), ##__VA_ARGS__ \ 2574 : "0"(__v0), ##__VA_ARGS__ \
2574 : "$8", "$9", "$10", "$11", "$12", \ 2575 : "$8", "$9", "$10", "$11", "$12", \
2575 "$13", "$14", "$15", "$24", "$25", \ 2576 "$13", "$14", "$15", "$24", "$25", \
2576 "memory"); \ 2577 "memory"); \
2577 LSS_RETURN(type, __v0, __r7) 2578 LSS_RETURN(type, __v0, __r7)
2579 #else
2580 #define LSS_BODY(type,name,r7,...) \
2581 register unsigned long __v0 __asm__("$2") = __NR_##name; \
2582 __asm__ __volatile__ ("syscall\n" \
2583 : "+r"(__v0), r7 (__r7) \
2584 : "0"(__v0), ##__VA_ARGS__ \
2585 : "$10", "$11", "$12", "$13", "$14", \
Mark Seaborn 2014/07/12 23:58:08 So, you're only changing the list of clobbered reg
Lei Zhang 2014/07/14 19:39:28 Disclaimer: I've never worked on this before. So i
petarj 2014/07/16 02:23:24 breakpad does not support mips64 yet.
Lei Zhang 2014/07/16 23:42:07 Done.
2586 "$15", "$24", "$25", "memory"); \
2587 LSS_RETURN(type, __v0, __r7)
2588 #endif
2578 #undef _syscall0 2589 #undef _syscall0
2579 #define _syscall0(type, name) \ 2590 #define _syscall0(type, name) \
2580 type LSS_NAME(name)(void) { \ 2591 type LSS_NAME(name)(void) { \
2581 register unsigned long __r7 __asm__("$7"); \ 2592 register unsigned long __r7 __asm__("$7"); \
2582 LSS_BODY(type, name, "=r"); \ 2593 LSS_BODY(type, name, "=r"); \
2583 } 2594 }
2584 #undef _syscall1 2595 #undef _syscall1
2585 #define _syscall1(type, name, type1, arg1) \ 2596 #define _syscall1(type, name, type1, arg1) \
2586 type LSS_NAME(name)(type1 arg1) { \ 2597 type LSS_NAME(name)(type1 arg1) { \
2587 register unsigned long __r7 __asm__("$7"); \ 2598 register unsigned long __r7 __asm__("$7"); \
(...skipping 1424 matching lines...) Expand 10 before | Expand all | Expand 10 after
4012 # pragma pop_macro("fstat64") 4023 # pragma pop_macro("fstat64")
4013 # pragma pop_macro("lstat64") 4024 # pragma pop_macro("lstat64")
4014 #endif 4025 #endif
4015 4026
4016 #if defined(__cplusplus) && !defined(SYS_CPLUSPLUS) 4027 #if defined(__cplusplus) && !defined(SYS_CPLUSPLUS)
4017 } 4028 }
4018 #endif 4029 #endif
4019 4030
4020 #endif 4031 #endif
4021 #endif 4032 #endif
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698