On 9/30/2013 5:45 AM, Will Deacon wrote:
> On Fri, Sep 27, 2013 at 09:13:15PM +0100, Chris Metcalf wrote:
>> On 9/26/2013 1:57 PM, Will Deacon wrote:
>>> Hi Chris,
>>>
>>> On Thu, Sep 26, 2013 at 06:24:53PM +0100, Chris Metcalf wrote:
[...]
+static inline unsigned long
On Fri, Sep 27, 2013 at 09:13:15PM +0100, Chris Metcalf wrote:
> On 9/26/2013 1:57 PM, Will Deacon wrote:
> > Hi Chris,
> >
> > On Thu, Sep 26, 2013 at 06:24:53PM +0100, Chris Metcalf wrote:
> >> [...]
> >> +static inline unsigned long __my_cpu_offset(void)
> >> +{
> >> + unsigned long tp;
> >> +
On Fri, Sep 27, 2013 at 09:13:15PM +0100, Chris Metcalf wrote:
On 9/26/2013 1:57 PM, Will Deacon wrote:
Hi Chris,
On Thu, Sep 26, 2013 at 06:24:53PM +0100, Chris Metcalf wrote:
[...]
+static inline unsigned long __my_cpu_offset(void)
+{
+ unsigned long tp;
+ register unsigned
On 9/30/2013 5:45 AM, Will Deacon wrote:
On Fri, Sep 27, 2013 at 09:13:15PM +0100, Chris Metcalf wrote:
On 9/26/2013 1:57 PM, Will Deacon wrote:
Hi Chris,
On Thu, Sep 26, 2013 at 06:24:53PM +0100, Chris Metcalf wrote:
[...]
+static inline unsigned long __my_cpu_offset(void)
+{
+ unsigned
On 9/26/2013 1:57 PM, Will Deacon wrote:
> Hi Chris,
>
> On Thu, Sep 26, 2013 at 06:24:53PM +0100, Chris Metcalf wrote:
>> [...]
>> +static inline unsigned long __my_cpu_offset(void)
>> +{
>> +unsigned long tp;
>> +register unsigned long *sp asm("sp");
>> +asm("move %0, tp" : "=r" (tp)
On 9/26/2013 1:57 PM, Will Deacon wrote:
Hi Chris,
On Thu, Sep 26, 2013 at 06:24:53PM +0100, Chris Metcalf wrote:
[...]
+static inline unsigned long __my_cpu_offset(void)
+{
+unsigned long tp;
+register unsigned long *sp asm(sp);
+asm(move %0, tp : =r (tp) : m (*sp));
+
Hi Chris,
On Thu, Sep 26, 2013 at 06:24:53PM +0100, Chris Metcalf wrote:
> It turns out the kernel relies on barrier() to force a reload of the
> percpu offset value. Since we can't easily modify the definition of
> barrier() to include "tp" as an output register, we instead provide a
>
It turns out the kernel relies on barrier() to force a reload of the
percpu offset value. Since we can't easily modify the definition of
barrier() to include "tp" as an output register, we instead provide a
definition of __my_cpu_offset as extended assembly that includes a fake
stack read to
It turns out the kernel relies on barrier() to force a reload of the
percpu offset value. Since we can't easily modify the definition of
barrier() to include tp as an output register, we instead provide a
definition of __my_cpu_offset as extended assembly that includes a fake
stack read to hazard
Hi Chris,
On Thu, Sep 26, 2013 at 06:24:53PM +0100, Chris Metcalf wrote:
It turns out the kernel relies on barrier() to force a reload of the
percpu offset value. Since we can't easily modify the definition of
barrier() to include tp as an output register, we instead provide a
definition of
10 matches
Mail list logo