~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/arch/microblaze/kernel/entry.S

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /arch/microblaze/kernel/entry.S (Version linux-6.12-rc7) and /arch/m68k/kernel/entry.S (Version linux-2.4.37.11)


  1 /*                                             !!   1 /* -*- mode: asm -*-
  2  * Low-level system-call handling, trap handle << 
  3  *                                                  2  *
  4  * Copyright (C) 2008-2009 Michal Simek <monstr !!   3  *  linux/arch/m68k/kernel/entry.S
  5  * Copyright (C) 2008-2009 PetaLogix           << 
  6  * Copyright (C) 2003           John Williams < << 
  7  * Copyright (C) 2001,2002      NEC Corporatio << 
  8  * Copyright (C) 2001,2002      Miles Bader <mi << 
  9  *                                                  4  *
 10  * This file is subject to the terms and condi !!   5  *  Copyright (C) 1991, 1992  Linus Torvalds
 11  * Public License. See the file COPYING in the << 
 12  * archive for more details.                   << 
 13  *                                                  6  *
 14  * Written by Miles Bader <miles@gnu.org>       !!   7  * This file is subject to the terms and conditions of the GNU General Public
 15  * Heavily modified by John Williams for Micro !!   8  * License.  See the file README.legal in the main directory of this archive
 16  */                                            !!   9  * for more details.
 17                                                << 
 18 #include <linux/sys.h>                         << 
 19 #include <linux/linkage.h>                     << 
 20                                                << 
 21 #include <asm/entry.h>                         << 
 22 #include <asm/current.h>                       << 
 23 #include <asm/processor.h>                     << 
 24 #include <asm/exceptions.h>                    << 
 25 #include <asm/asm-offsets.h>                   << 
 26 #include <asm/thread_info.h>                   << 
 27                                                << 
 28 #include <asm/page.h>                          << 
 29 #include <asm/unistd.h>                        << 
 30 #include <asm/xilinx_mb_manager.h>             << 
 31                                                << 
 32 #include <linux/errno.h>                       << 
 33 #include <asm/signal.h>                        << 
 34 #include <asm/mmu.h>                           << 
 35                                                << 
 36 #undef DEBUG                                   << 
 37                                                << 
 38 #ifdef DEBUG                                   << 
 39 /* Create space for syscalls counting. */      << 
 40 .section .data                                 << 
 41 .global syscall_debug_table                    << 
 42 .align 4                                       << 
 43 syscall_debug_table:                           << 
 44         .space  (__NR_syscalls * 4)            << 
 45 #endif /* DEBUG */                             << 
 46                                                << 
 47 #define C_ENTRY(name)   .globl name; .align 4; << 
 48                                                << 
 49 /*                                             << 
 50  * Various ways of setting and clearing BIP in << 
 51  * This is mucky, but necessary using microbla << 
 52  * allows msr ops to write to BIP              << 
 53  */                                            << 
 54 #if CONFIG_XILINX_MICROBLAZE0_USE_MSR_INSTR    << 
 55         .macro  clear_bip                      << 
 56         msrclr  r0, MSR_BIP                    << 
 57         .endm                                  << 
 58                                                << 
 59         .macro  set_bip                        << 
 60         msrset  r0, MSR_BIP                    << 
 61         .endm                                  << 
 62                                                << 
 63         .macro  clear_eip                      << 
 64         msrclr  r0, MSR_EIP                    << 
 65         .endm                                  << 
 66                                                << 
 67         .macro  set_ee                         << 
 68         msrset  r0, MSR_EE                     << 
 69         .endm                                  << 
 70                                                << 
 71         .macro  disable_irq                    << 
 72         msrclr  r0, MSR_IE                     << 
 73         .endm                                  << 
 74                                                << 
 75         .macro  enable_irq                     << 
 76         msrset  r0, MSR_IE                     << 
 77         .endm                                  << 
 78                                                << 
 79         .macro  set_ums                        << 
 80         msrset  r0, MSR_UMS                    << 
 81         msrclr  r0, MSR_VMS                    << 
 82         .endm                                  << 
 83                                                << 
 84         .macro  set_vms                        << 
 85         msrclr  r0, MSR_UMS                    << 
 86         msrset  r0, MSR_VMS                    << 
 87         .endm                                  << 
 88                                                << 
 89         .macro  clear_ums                      << 
 90         msrclr  r0, MSR_UMS                    << 
 91         .endm                                  << 
 92                                                << 
 93         .macro  clear_vms_ums                  << 
 94         msrclr  r0, MSR_VMS | MSR_UMS          << 
 95         .endm                                  << 
 96 #else                                          << 
 97         .macro  clear_bip                      << 
 98         mfs     r11, rmsr                      << 
 99         andi    r11, r11, ~MSR_BIP             << 
100         mts     rmsr, r11                      << 
101         .endm                                  << 
102                                                << 
103         .macro  set_bip                        << 
104         mfs     r11, rmsr                      << 
105         ori     r11, r11, MSR_BIP              << 
106         mts     rmsr, r11                      << 
107         .endm                                  << 
108                                                << 
109         .macro  clear_eip                      << 
110         mfs     r11, rmsr                      << 
111         andi    r11, r11, ~MSR_EIP             << 
112         mts     rmsr, r11                      << 
113         .endm                                  << 
114                                                << 
115         .macro  set_ee                         << 
116         mfs     r11, rmsr                      << 
117         ori     r11, r11, MSR_EE               << 
118         mts     rmsr, r11                      << 
119         .endm                                  << 
120                                                << 
121         .macro  disable_irq                    << 
122         mfs     r11, rmsr                      << 
123         andi    r11, r11, ~MSR_IE              << 
124         mts     rmsr, r11                      << 
125         .endm                                  << 
126                                                << 
127         .macro  enable_irq                     << 
128         mfs     r11, rmsr                      << 
129         ori     r11, r11, MSR_IE               << 
130         mts     rmsr, r11                      << 
131         .endm                                  << 
132                                                << 
133         .macro set_ums                         << 
134         mfs     r11, rmsr                      << 
135         ori     r11, r11, MSR_VMS              << 
136         andni   r11, r11, MSR_UMS              << 
137         mts     rmsr, r11                      << 
138         .endm                                  << 
139                                                << 
140         .macro  set_vms                        << 
141         mfs     r11, rmsr                      << 
142         ori     r11, r11, MSR_VMS              << 
143         andni   r11, r11, MSR_UMS              << 
144         mts     rmsr, r11                      << 
145         .endm                                  << 
146                                                << 
147         .macro  clear_ums                      << 
148         mfs     r11, rmsr                      << 
149         andni   r11, r11, MSR_UMS              << 
150         mts     rmsr,r11                       << 
151         .endm                                  << 
152                                                << 
153         .macro  clear_vms_ums                  << 
154         mfs     r11, rmsr                      << 
155         andni   r11, r11, (MSR_VMS|MSR_UMS)    << 
156         mts     rmsr,r11                       << 
157         .endm                                  << 
158 #endif                                         << 
159                                                << 
160 /* Define how to call high-level functions. Wi << 
161  * enabled when calling the high-level functio << 
162  * VM_ON, VM_OFF, DO_JUMP_BIPCLR, DO_CALL      << 
163  */                                            << 
164                                                << 
165 /* turn on virtual protected mode save */      << 
166 #define VM_ON           \                      << 
167         set_ums;        \                      << 
168         rted    r0, 2f; \                      << 
169         nop; \                                 << 
170 2:                                             << 
171                                                << 
172 /* turn off virtual protected mode save and us << 
173 #define VM_OFF                  \              << 
174         clear_vms_ums;          \              << 
175         rted    r0, TOPHYS(1f); \              << 
176         nop; \                                 << 
177 1:                                             << 
178                                                << 
179 #define SAVE_REGS \                            << 
180         swi     r2, r1, PT_R2;  /* Save SDA */ << 
181         swi     r3, r1, PT_R3;                 << 
182         swi     r4, r1, PT_R4;                 << 
183         swi     r5, r1, PT_R5;                 << 
184         swi     r6, r1, PT_R6;                 << 
185         swi     r7, r1, PT_R7;                 << 
186         swi     r8, r1, PT_R8;                 << 
187         swi     r9, r1, PT_R9;                 << 
188         swi     r10, r1, PT_R10;               << 
189         swi     r11, r1, PT_R11;        /* sav << 
190         swi     r12, r1, PT_R12;               << 
191         swi     r13, r1, PT_R13;        /* Sav << 
192         swi     r14, r1, PT_PC; /* PC, before  << 
193         swi     r15, r1, PT_R15;        /* Sav << 
194         swi     r16, r1, PT_R16;               << 
195         swi     r17, r1, PT_R17;               << 
196         swi     r18, r1, PT_R18;        /* Sav << 
197         swi     r19, r1, PT_R19;               << 
198         swi     r20, r1, PT_R20;               << 
199         swi     r21, r1, PT_R21;               << 
200         swi     r22, r1, PT_R22;               << 
201         swi     r23, r1, PT_R23;               << 
202         swi     r24, r1, PT_R24;               << 
203         swi     r25, r1, PT_R25;               << 
204         swi     r26, r1, PT_R26;               << 
205         swi     r27, r1, PT_R27;               << 
206         swi     r28, r1, PT_R28;               << 
207         swi     r29, r1, PT_R29;               << 
208         swi     r30, r1, PT_R30;               << 
209         swi     r31, r1, PT_R31;        /* Sav << 
210         mfs     r11, rmsr;              /* sav << 
211         swi     r11, r1, PT_MSR;               << 
212                                                << 
213 #define RESTORE_REGS_GP \                      << 
214         lwi     r2, r1, PT_R2;  /* restore SDA << 
215         lwi     r3, r1, PT_R3;                 << 
216         lwi     r4, r1, PT_R4;                 << 
217         lwi     r5, r1, PT_R5;                 << 
218         lwi     r6, r1, PT_R6;                 << 
219         lwi     r7, r1, PT_R7;                 << 
220         lwi     r8, r1, PT_R8;                 << 
221         lwi     r9, r1, PT_R9;                 << 
222         lwi     r10, r1, PT_R10;               << 
223         lwi     r11, r1, PT_R11;        /* res << 
224         lwi     r12, r1, PT_R12;               << 
225         lwi     r13, r1, PT_R13;        /* res << 
226         lwi     r14, r1, PT_PC; /* RESTORE_LIN << 
227         lwi     r15, r1, PT_R15;        /* res << 
228         lwi     r16, r1, PT_R16;               << 
229         lwi     r17, r1, PT_R17;               << 
230         lwi     r18, r1, PT_R18;        /* res << 
231         lwi     r19, r1, PT_R19;               << 
232         lwi     r20, r1, PT_R20;               << 
233         lwi     r21, r1, PT_R21;               << 
234         lwi     r22, r1, PT_R22;               << 
235         lwi     r23, r1, PT_R23;               << 
236         lwi     r24, r1, PT_R24;               << 
237         lwi     r25, r1, PT_R25;               << 
238         lwi     r26, r1, PT_R26;               << 
239         lwi     r27, r1, PT_R27;               << 
240         lwi     r28, r1, PT_R28;               << 
241         lwi     r29, r1, PT_R29;               << 
242         lwi     r30, r1, PT_R30;               << 
243         lwi     r31, r1, PT_R31;        /* Res << 
244                                                << 
245 #define RESTORE_REGS \                         << 
246         lwi     r11, r1, PT_MSR;               << 
247         mts     rmsr , r11;                    << 
248         RESTORE_REGS_GP                        << 
249                                                << 
250 #define RESTORE_REGS_RTBD \                    << 
251         lwi     r11, r1, PT_MSR;               << 
252         andni   r11, r11, MSR_EIP;          /* << 
253         ori     r11, r11, MSR_EE | MSR_BIP; /* << 
254         mts     rmsr , r11;                    << 
255         RESTORE_REGS_GP                        << 
256                                                << 
257 #define SAVE_STATE      \                      << 
258         swi     r1, r0, TOPHYS(PER_CPU(ENTRY_S << 
259         /* See if already in kernel mode.*/    << 
260         mfs     r1, rmsr;                      << 
261         andi    r1, r1, MSR_UMS;               << 
262         bnei    r1, 1f;                        << 
263         /* Kernel-mode state save.  */         << 
264         /* Reload kernel stack-ptr. */         << 
265         lwi     r1, r0, TOPHYS(PER_CPU(ENTRY_S << 
266         /* FIXME: I can add these two lines to << 
267         /* tophys(r1,r1); */                   << 
268         /* addik        r1, r1, -PT_SIZE; */   << 
269         addik   r1, r1, CONFIG_KERNEL_BASE_ADD << 
270         SAVE_REGS                              << 
271         brid    2f;                            << 
272         swi     r1, r1, PT_MODE;               << 
273 1:      /* User-mode state save.  */           << 
274         lwi     r1, r0, TOPHYS(PER_CPU(CURRENT << 
275         tophys(r1,r1);                         << 
276         lwi     r1, r1, TS_THREAD_INFO; /* get << 
277         /* MS these three instructions can be  << 
278         /* addik        r1, r1, THREAD_SIZE; * << 
279         /* tophys(r1,r1); */                   << 
280         /* addik        r1, r1, -PT_SIZE; */   << 
281         addik r1, r1, THREAD_SIZE + CONFIG_KER << 
282         SAVE_REGS                              << 
283         lwi     r11, r0, TOPHYS(PER_CPU(ENTRY_ << 
284         swi     r11, r1, PT_R1; /* Store user  << 
285         swi     r0, r1, PT_MODE; /* Was in use << 
286         /* MS: I am clearing UMS even in case  << 
287         clear_ums;                             << 
288 2:      lwi     CURRENT_TASK, r0, TOPHYS(PER_C << 
289                                                << 
290 .text                                          << 
291                                                << 
292 .extern cpuinfo                                << 
293                                                << 
294 C_ENTRY(mb_flush_dcache):                      << 
295         addik   r1, r1, -PT_SIZE               << 
296         SAVE_REGS                              << 
297                                                << 
298         addik   r3, r0, cpuinfo                << 
299         lwi     r7, r3, CI_DCS                 << 
300         lwi     r8, r3, CI_DCL                 << 
301         sub     r9, r7, r8                     << 
302 1:                                             << 
303         wdc.flush r9, r0                       << 
304         bgtid   r9, 1b                         << 
305         addk    r9, r9, r8                     << 
306                                                << 
307         RESTORE_REGS                           << 
308         addik   r1, r1, PT_SIZE                << 
309         rtsd    r15, 8                         << 
310         nop                                    << 
311                                                << 
312 C_ENTRY(mb_invalidate_icache):                 << 
313         addik   r1, r1, -PT_SIZE               << 
314         SAVE_REGS                              << 
315                                                << 
316         addik   r3, r0, cpuinfo                << 
317         lwi     r7, r3, CI_ICS                 << 
318         lwi     r8, r3, CI_ICL                 << 
319         sub     r9, r7, r8                     << 
320 1:                                             << 
321         wic     r9, r0                         << 
322         bgtid   r9, 1b                         << 
323         addk    r9, r9, r8                     << 
324                                                << 
325         RESTORE_REGS                           << 
326         addik   r1, r1, PT_SIZE                << 
327         rtsd    r15, 8                         << 
328         nop                                    << 
329                                                << 
330 /*                                             << 
331  * User trap.                                  << 
332  *                                                 10  *
333  * System calls are handled here.              !!  11  * Linux/m68k support by Hamish Macdonald
334  *                                                 12  *
335  * Syscall protocol:                           !!  13  * 68060 fixes by Jesper Skov
336  * Syscall number in r12, args in r5-r10       << 
337  * Return value in r3                          << 
338  *                                                 14  *
339  * Trap entered via brki instruction, so BIP b << 
340  * are masked. This is nice, means we don't ha << 
341  */                                                15  */
342 C_ENTRY(_user_exception):                      << 
343         swi     r1, r0, TOPHYS(PER_CPU(ENTRY_S << 
344         addi    r14, r14, 4     /* return addr << 
345                                                << 
346         lwi     r1, r0, TOPHYS(PER_CPU(CURRENT << 
347         tophys(r1,r1);                         << 
348         lwi     r1, r1, TS_THREAD_INFO; /* get << 
349 /* calculate kernel stack pointer from task st << 
350         addik   r1, r1, THREAD_SIZE;           << 
351         tophys(r1,r1);                         << 
352                                                << 
353         addik   r1, r1, -PT_SIZE; /* Make room << 
354         SAVE_REGS                              << 
355         swi     r0, r1, PT_R3                  << 
356         swi     r0, r1, PT_R4                  << 
357                                                << 
358         swi     r0, r1, PT_MODE;               << 
359         lwi     r11, r0, TOPHYS(PER_CPU(ENTRY_ << 
360         swi     r11, r1, PT_R1;         /* Sto << 
361         clear_ums;                             << 
362 2:      lwi     CURRENT_TASK, r0, TOPHYS(PER_C << 
363         /* Save away the syscall number.  */   << 
364         swi     r12, r1, PT_R0;                << 
365         tovirt(r1,r1)                          << 
366                                                << 
367 /* where the trap should return need -8 to adj << 
368 /* Jump to the appropriate function for the sy << 
369  * (r12 is not preserved), or return an error  << 
370  * register should point to the location where << 
371  * the called function should return.  [note t << 
372                                                << 
373         /* Step into virtual mode */           << 
374         rtbd    r0, 3f                         << 
375         nop                                    << 
376 3:                                             << 
377         lwi     r11, CURRENT_TASK, TS_THREAD_I << 
378         lwi     r11, r11, TI_FLAGS       /* ge << 
379         andi    r11, r11, _TIF_WORK_SYSCALL_MA << 
380         beqi    r11, 4f                        << 
381                                                << 
382         addik   r3, r0, -ENOSYS                << 
383         swi     r3, r1, PT_R3                  << 
384         brlid   r15, do_syscall_trace_enter    << 
385         addik   r5, r1, PT_R0                  << 
386                                                << 
387         # do_syscall_trace_enter returns the n << 
388         addk    r12, r0, r3                    << 
389         lwi     r5, r1, PT_R5;                 << 
390         lwi     r6, r1, PT_R6;                 << 
391         lwi     r7, r1, PT_R7;                 << 
392         lwi     r8, r1, PT_R8;                 << 
393         lwi     r9, r1, PT_R9;                 << 
394         lwi     r10, r1, PT_R10;               << 
395 4:                                             << 
396 /* Jump to the appropriate function for the sy << 
397  * (r12 is not preserved), or return an error  << 
398  * The LP register should point to the locatio << 
399  * should return.  [note that MAKE_SYS_CALL us << 
400         /* See if the system call number is va << 
401         blti    r12, 5f                        << 
402         addi    r11, r12, -__NR_syscalls;      << 
403         bgei    r11, 5f;                       << 
404         /* Figure out which function to use fo << 
405         /* Note Microblaze barrel shift is opt << 
406         add     r12, r12, r12;                 << 
407         add     r12, r12, r12;                 << 
408         addi    r30, r0, 1                     << 
409                                                << 
410 #ifdef DEBUG                                   << 
411         /* Trac syscalls and stored them to sy << 
412         /* The first syscall location stores t << 
413         lwi     r3, r0, syscall_debug_table    << 
414         addi    r3, r3, 1                      << 
415         swi     r3, r0, syscall_debug_table    << 
416         lwi     r3, r12, syscall_debug_table   << 
417         addi    r3, r3, 1                      << 
418         swi     r3, r12, syscall_debug_table   << 
419 #endif                                         << 
420                                                << 
421         # Find and jump into the syscall handl << 
422         lwi     r12, r12, sys_call_table       << 
423         /* where the trap should return need - << 
424         addi    r15, r0, ret_from_trap-8       << 
425         bra     r12                            << 
426                                                << 
427         /* The syscall number is invalid, retu << 
428 5:                                             << 
429         braid   ret_from_trap                  << 
430         addi    r3, r0, -ENOSYS;               << 
431                                                << 
432 /* Entry point used to return from a syscall/t << 
433 /* We re-enable BIP bit before state restore * << 
434 C_ENTRY(ret_from_trap):                        << 
435         swi     r3, r1, PT_R3                  << 
436         swi     r4, r1, PT_R4                  << 
437                                                << 
438         lwi     r11, r1, PT_MODE;              << 
439 /* See if returning to kernel mode, if so, ski << 
440         bnei    r11, 2f;                       << 
441         /* We're returning to user mode, so ch << 
442          * trigger rescheduling. */            << 
443         /* FIXME: Restructure all these flag c << 
444         lwi     r11, CURRENT_TASK, TS_THREAD_I << 
445         lwi     r11, r11, TI_FLAGS;            << 
446         andi    r11, r11, _TIF_WORK_SYSCALL_MA << 
447         beqi    r11, 1f                        << 
448                                                << 
449         brlid   r15, do_syscall_trace_leave    << 
450         addik   r5, r1, PT_R0                  << 
451 1:                                             << 
452         /* We're returning to user mode, so ch << 
453          * trigger rescheduling. */            << 
454         /* get thread info from current task * << 
455         lwi     r11, CURRENT_TASK, TS_THREAD_I << 
456         lwi     r19, r11, TI_FLAGS;            << 
457         andi    r11, r19, _TIF_NEED_RESCHED;   << 
458         beqi    r11, 5f;                       << 
459                                                << 
460         bralid  r15, schedule;  /* Call schedu << 
461         nop;                            /* del << 
462         bri     1b                             << 
463                                                << 
464         /* Maybe handle a signal */            << 
465 5:                                             << 
466         andi    r11, r19, _TIF_SIGPENDING | _T << 
467         beqi    r11, 4f;                /* Sig << 
468                                                << 
469         addik   r5, r1, 0;              /* Arg << 
470         bralid  r15, do_notify_resume;  /* Han << 
471         add     r6, r30, r0;            /* Arg << 
472         add     r30, r0, r0             /* no  << 
473         bri     1b                             << 
474                                                << 
475 /* Finally, return to user state.  */          << 
476 4:      set_bip;                        /*  In << 
477         swi     CURRENT_TASK, r0, PER_CPU(CURR << 
478         VM_OFF;                                << 
479         tophys(r1,r1);                         << 
480         RESTORE_REGS_RTBD;                     << 
481         addik   r1, r1, PT_SIZE         /* Cle << 
482         lwi     r1, r1, PT_R1 - PT_SIZE;/* Res << 
483         bri     6f;                            << 
484                                                << 
485 /* Return to kernel state.  */                 << 
486 2:      set_bip;                        /*  In << 
487         VM_OFF;                                << 
488         tophys(r1,r1);                         << 
489         RESTORE_REGS_RTBD;                     << 
490         addik   r1, r1, PT_SIZE         /* Cle << 
491         tovirt(r1,r1);                         << 
492 6:                                             << 
493 TRAP_return:            /* Make global symbol  << 
494         rtbd    r14, 0; /* Instructions to ret << 
495         nop;                                   << 
496                                                << 
497                                                << 
498 /* This the initial entry point for a new chil << 
499    stack in place that makes it look like the  << 
500    syscall.  This function is actually `return << 
501    (copy_thread makes ret_from_fork the return << 
502    saved context).  */                         << 
503 C_ENTRY(ret_from_fork):                        << 
504         bralid  r15, schedule_tail; /* ...whic << 
505         add     r5, r3, r0;     /* switch_thre << 
506                                 /* ( in the de << 
507         brid    ret_from_trap;  /* Do normal t << 
508         add     r3, r0, r0;     /* Child's for << 
509                                                << 
510 C_ENTRY(ret_from_kernel_thread):               << 
511         bralid  r15, schedule_tail; /* ...whic << 
512         add     r5, r3, r0;     /* switch_thre << 
513                                 /* ( in the de << 
514         brald   r15, r20        /* fn was left << 
515         addk    r5, r0, r19     /* ... and arg << 
516         brid    ret_from_trap                  << 
517         add     r3, r0, r0                     << 
518                                                << 
519 C_ENTRY(sys_rt_sigreturn_wrapper):             << 
520         addik   r30, r0, 0              /* no  << 
521         brid    sys_rt_sigreturn        /* Do  << 
522         addik   r5, r1, 0;              /* add << 
523                                                    16 
524 /*                                                 17 /*
525  * HW EXCEPTION rutine start                   !!  18  * entry.S  contains the system-call and fault low-level handling routines.
526  */                                            !!  19  * This also contains the timer-interrupt handler, as well as all interrupts
527 C_ENTRY(full_exception_trap):                  !!  20  * and faults that can result in a task-switch.
528         /* adjust exception address for privil << 
529          * for finding where is it */          << 
530         addik   r17, r17, -4                   << 
531         SAVE_STATE /* Save registers */        << 
532         /* PC, before IRQ/trap - this is one i << 
533         swi     r17, r1, PT_PC;                << 
534         tovirt(r1,r1)                          << 
535         /* FIXME this can be store directly in << 
536          * I tested it but there is a fault */ << 
537         /* where the trap should return need - << 
538         addik   r15, r0, ret_from_exc - 8      << 
539         mfs     r6, resr                       << 
540         mfs     r7, rfsr;               /* sav << 
541         mts     rfsr, r0;       /* Clear stick << 
542         rted    r0, full_exception             << 
543         addik   r5, r1, 0                /* pa << 
544                                                << 
545 /*                                             << 
546  * Unaligned data trap.                        << 
547  *                                                 21  *
548  * Unaligned data trap last on 4k page is hand !!  22  * NOTE: This code handles signal-recognition, which happens every time
                                                   >>  23  * after a timer-interrupt and after each system call.
549  *                                                 24  *
550  * Trap entered via exception, so EE bit is se << 
551  * are masked.  This is nice, means we don't h << 
552  *                                             << 
553  * The assembler routine is in "arch/microblaz << 
554  */                                                25  */
555 C_ENTRY(unaligned_data_trap):                  << 
556         /* MS: I have to save r11 value and th << 
557          * set_bit, clear_eip, set_ee use r11  << 
558          * instructions are not used. We don't << 
559          * are used and they use r0 instead of << 
560          * I am using ENTRY_SP which should be << 
561          * pointer saving. */                  << 
562         swi     r11, r0, TOPHYS(PER_CPU(ENTRY_ << 
563         set_bip;        /* equalize initial st << 
564         clear_eip;                             << 
565         set_ee;                                << 
566         lwi     r11, r0, TOPHYS(PER_CPU(ENTRY_ << 
567         SAVE_STATE              /* Save regist << 
568         /* PC, before IRQ/trap - this is one i << 
569         swi     r17, r1, PT_PC;                << 
570         tovirt(r1,r1)                          << 
571         /* where the trap should return need - << 
572         addik   r15, r0, ret_from_exc-8        << 
573         mfs     r3, resr                /* ESR << 
574         mfs     r4, rear                /* EAR << 
575         rtbd    r0, _unaligned_data_exception  << 
576         addik   r7, r1, 0               /* par << 
577                                                    26 
578 /*                                                 27 /*
579  * Page fault traps.                           !!  28  * 12/03/96 Jes: Currently we only support m68k single-cpu systems, so
580  *                                             !!  29  *               all pointers that used to be 'current' are now entry
581  * If the real exception handler (from hw_exce !!  30  *               number 0 in the 'current_set' list.
582  * the mapping for the process, then we're thr << 
583  *                                             << 
584  * Trap entered via exceptions, so EE bit is s << 
585  * are masked.  This is nice, means we don't h << 
586  *                                                 31  *
587  * Build a standard exception frame for TLB Ac !!  32  *  6/05/00 RZ:  addedd writeback completion after return from sighandler
588  * will bail out to this point if they can't r !!  33  *               for 68040
589  *                                             << 
590  * The C function called is in "arch/microblaz << 
591  * void do_page_fault(struct pt_regs *regs,    << 
592  *                              unsigned long  << 
593  *                              unsigned long  << 
594  */                                                34  */
595 /* data and intruction trap - which is choose  << 
596 C_ENTRY(page_fault_data_trap):                 << 
597         SAVE_STATE              /* Save regist << 
598         /* PC, before IRQ/trap - this is one i << 
599         swi     r17, r1, PT_PC;                << 
600         tovirt(r1,r1)                          << 
601         /* where the trap should return need - << 
602         addik   r15, r0, ret_from_exc-8        << 
603         mfs     r6, rear                /* par << 
604         mfs     r7, resr                /* par << 
605         rted    r0, do_page_fault              << 
606         addik   r5, r1, 0               /* par << 
607                                                << 
608 C_ENTRY(page_fault_instr_trap):                << 
609         SAVE_STATE              /* Save regist << 
610         /* PC, before IRQ/trap - this is one i << 
611         swi     r17, r1, PT_PC;                << 
612         tovirt(r1,r1)                          << 
613         /* where the trap should return need - << 
614         addik   r15, r0, ret_from_exc-8        << 
615         mfs     r6, rear                /* par << 
616         ori     r7, r0, 0               /* par << 
617         rted    r0, do_page_fault              << 
618         addik   r5, r1, 0               /* par << 
619                                                << 
620 /* Entry point used to return from an exceptio << 
621 C_ENTRY(ret_from_exc):                         << 
622         lwi     r11, r1, PT_MODE;              << 
623         bnei    r11, 2f;                /* See << 
624                                         /* ... << 
625                                                << 
626         /* We're returning to user mode, so ch << 
627            trigger rescheduling. */            << 
628 1:                                             << 
629         lwi     r11, CURRENT_TASK, TS_THREAD_I << 
630         lwi     r19, r11, TI_FLAGS;     /* get << 
631         andi    r11, r19, _TIF_NEED_RESCHED;   << 
632         beqi    r11, 5f;                       << 
633                                                << 
634 /* Call the scheduler before returning from a  << 
635         bralid  r15, schedule;  /* Call schedu << 
636         nop;                            /* del << 
637         bri     1b                             << 
638                                                << 
639         /* Maybe handle a signal */            << 
640 5:      andi    r11, r19, _TIF_SIGPENDING | _T << 
641         beqi    r11, 4f;                /* Sig << 
642                                                    35 
643         /*                                     !!  36 #include <linux/sys.h>
644          * Handle a signal return; Pending sig !!  37 #include <linux/config.h>
645          *                                     !!  38 #include <linux/linkage.h>
646          * Not all registers are saved by the  !!  39 #include <asm/entry.h>
647          * points (for instance, call-saved re !!  40 #include <asm/errno.h>
648          * C-compiler calling sequence in the  !!  41 #include <asm/setup.h>
649          * preserved), and call-clobbered regi !!  42 #include <asm/segment.h>
650          * traps), but signal handlers may wan !!  43 #include <asm/traps.h>
651          * complete register state.  Here we s !!  44 
652          * the normal entry sequence, so that  !!  45 #include "m68k_defs.h"
653          * (in a possibly modified form) after !!  46 
654         addik   r5, r1, 0;              /* Arg !!  47 .globl SYMBOL_NAME(system_call), SYMBOL_NAME(buserr), SYMBOL_NAME(trap)
655         bralid  r15, do_notify_resume;  /* Han !!  48 .globl SYMBOL_NAME(resume), SYMBOL_NAME(ret_from_exception)
656         addi    r6, r0, 0;              /* Arg !!  49 .globl SYMBOL_NAME(ret_from_signal)
657         bri     1b                             !!  50 .globl SYMBOL_NAME(inthandler), SYMBOL_NAME(sys_call_table)
658                                                !!  51 .globl SYMBOL_NAME(sys_fork), SYMBOL_NAME(sys_clone), SYMBOL_NAME(sys_vfork)
659 /* Finally, return to user state.  */          !!  52 .globl SYMBOL_NAME(ret_from_interrupt), SYMBOL_NAME(bad_interrupt)
660 4:      set_bip;                        /* Int << 
661         swi     CURRENT_TASK, r0, PER_CPU(CURR << 
662         VM_OFF;                                << 
663         tophys(r1,r1);                         << 
664                                                << 
665         RESTORE_REGS_RTBD;                     << 
666         addik   r1, r1, PT_SIZE         /* Cle << 
667                                                << 
668         lwi     r1, r1, PT_R1 - PT_SIZE; /* Re << 
669         bri     6f;                            << 
670 /* Return to kernel state.  */                 << 
671 2:      set_bip;                        /* Int << 
672         VM_OFF;                                << 
673         tophys(r1,r1);                         << 
674         RESTORE_REGS_RTBD;                     << 
675         addik   r1, r1, PT_SIZE         /* Cle << 
676                                                << 
677         tovirt(r1,r1);                         << 
678 6:                                             << 
679 EXC_return:             /* Make global symbol  << 
680         rtbd    r14, 0; /* Instructions to ret << 
681         nop;                                   << 
682                                                    53 
683 /*                                             !!  54 .text
684  * HW EXCEPTION rutine end                     !!  55 ENTRY(buserr)
685  */                                            !!  56         SAVE_ALL_INT
                                                   >>  57         GET_CURRENT(%d0)
                                                   >>  58         movel   %sp,%sp@-               | stack frame pointer argument
                                                   >>  59         bsrl    SYMBOL_NAME(buserr_c)
                                                   >>  60         addql   #4,%sp
                                                   >>  61         jra     SYMBOL_NAME(ret_from_exception)
                                                   >>  62 
                                                   >>  63 ENTRY(trap)
                                                   >>  64         SAVE_ALL_INT
                                                   >>  65         GET_CURRENT(%d0)
                                                   >>  66         movel   %sp,%sp@-               | stack frame pointer argument
                                                   >>  67         bsrl    SYMBOL_NAME(trap_c)
                                                   >>  68         addql   #4,%sp
                                                   >>  69         jra     SYMBOL_NAME(ret_from_exception)
                                                   >>  70 
                                                   >>  71 ENTRY(reschedule)
                                                   >>  72         | save top of frame
                                                   >>  73         movel   %sp,%curptr@(TASK_THREAD+THREAD_ESP0)
                                                   >>  74 
                                                   >>  75         pea     SYMBOL_NAME(ret_from_exception)
                                                   >>  76         jmp     SYMBOL_NAME(schedule)
                                                   >>  77 
                                                   >>  78         | After a fork we jump here directly from resume,
                                                   >>  79         | so that %d1 contains the previous task
                                                   >>  80         | Theoretically only needed on SMP, but let's watch
                                                   >>  81         | what happens in schedule_tail() in future...
                                                   >>  82 ENTRY(ret_from_fork)
                                                   >>  83         movel   %d1,%sp@-
                                                   >>  84         jsr     SYMBOL_NAME(schedule_tail)
                                                   >>  85         addql   #4,%sp
                                                   >>  86         jra     SYMBOL_NAME(ret_from_exception)
                                                   >>  87 
                                                   >>  88 badsys:
                                                   >>  89         movel   #-ENOSYS,%sp@(PT_D0)
                                                   >>  90         jra     SYMBOL_NAME(ret_from_exception)
                                                   >>  91 
                                                   >>  92 do_trace:
                                                   >>  93         movel   #-ENOSYS,%sp@(PT_D0)    | needed for strace
                                                   >>  94         subql   #4,%sp
                                                   >>  95         SAVE_SWITCH_STACK
                                                   >>  96         jbsr    SYMBOL_NAME(syscall_trace)
                                                   >>  97         RESTORE_SWITCH_STACK
                                                   >>  98         addql   #4,%sp
                                                   >>  99         movel   %sp@(PT_ORIG_D0),%d1
                                                   >> 100         movel   #-ENOSYS,%d0
                                                   >> 101         cmpl    #NR_syscalls,%d1
                                                   >> 102         jcc     1f
                                                   >> 103         jbsr    @(SYMBOL_NAME(sys_call_table),%d1:l:4)@(0)
                                                   >> 104 1:      movel   %d0,%sp@(PT_D0)         | save the return value
                                                   >> 105         subql   #4,%sp                  | dummy return address
                                                   >> 106         SAVE_SWITCH_STACK
                                                   >> 107         jbsr    SYMBOL_NAME(syscall_trace)
                                                   >> 108 
                                                   >> 109 SYMBOL_NAME_LABEL(ret_from_signal)
                                                   >> 110         RESTORE_SWITCH_STACK 
                                                   >> 111         addql   #4,%sp
                                                   >> 112 /* on 68040 complete pending writebacks if any */       
                                                   >> 113 #ifdef CONFIG_M68040
                                                   >> 114         bfextu  %sp@(PT_VECTOR){#0,#4},%d0  
                                                   >> 115         subql   #7,%d0                          | bus error frame ?
                                                   >> 116         jbne    1f
                                                   >> 117         movel   %sp,%sp@-
                                                   >> 118         jbsr    SYMBOL_NAME(berr_040cleanup)
                                                   >> 119         addql   #4,%sp
                                                   >> 120 1:      
                                                   >> 121 #endif  
                                                   >> 122         jra     SYMBOL_NAME(ret_from_exception)
                                                   >> 123 
                                                   >> 124 ENTRY(system_call)
                                                   >> 125         SAVE_ALL_SYS
                                                   >> 126 
                                                   >> 127         GET_CURRENT(%d1)
                                                   >> 128         | save top of frame
                                                   >> 129         movel   %sp,%curptr@(TASK_THREAD+THREAD_ESP0)
                                                   >> 130 
                                                   >> 131         btst    #PT_TRACESYS_BIT,%curptr@(TASK_PTRACE+PT_TRACESYS_OFF)
                                                   >> 132         jne     do_trace
                                                   >> 133         cmpl    #NR_syscalls,%d0
                                                   >> 134         jcc     badsys
                                                   >> 135         jbsr    @(SYMBOL_NAME(sys_call_table),%d0:l:4)@(0)
                                                   >> 136         movel   %d0,%sp@(PT_D0)         | save the return value
                                                   >> 137 
                                                   >> 138 SYMBOL_NAME_LABEL(ret_from_exception)
                                                   >> 139         btst    #5,%sp@(PT_SR)          | check if returning to kernel
                                                   >> 140         bnes    2f                      | if so, skip resched, signals
                                                   >> 141         | only allow interrupts when we are really the last one on the
                                                   >> 142         | kernel stack, otherwise stack overflow can occur during
                                                   >> 143         | heavy interrupt load
                                                   >> 144         andw    #ALLOWINT,%sr
                                                   >> 145         tstl    %curptr@(TASK_NEEDRESCHED)
                                                   >> 146         jne     SYMBOL_NAME(reschedule)
                                                   >> 147 #if 0
                                                   >> 148         cmpl    #SYMBOL_NAME(task),%curptr      | task[0] cannot have signals
                                                   >> 149         jeq     2f
                                                   >> 150 #endif
                                                   >> 151                                         | check for delayed trace
                                                   >> 152         bclr    #PT_DTRACE_BIT,%curptr@(TASK_PTRACE+PT_DTRACE_OFF)
                                                   >> 153         jne     do_delayed_trace
                                                   >> 154 5:
                                                   >> 155         tstl    %curptr@(TASK_STATE)    | state
                                                   >> 156         jne     SYMBOL_NAME(reschedule)
686                                                   157 
687 /*                                             !! 158         tstl    %curptr@(TASK_SIGPENDING)
688  * Hardware maskable interrupts.               !! 159         jne     Lsignal_return
689  *                                             !! 160 2:      RESTORE_ALL
690  * The stack-pointer (r1) should have already  !! 161 
691  * location PER_CPU(ENTRY_SP).                 !! 162 Lsignal_return:
692  */                                            !! 163         subql   #4,%sp                  | dummy return address
693 C_ENTRY(_interrupt):                           !! 164         SAVE_SWITCH_STACK
694 /* MS: we are in physical address */           !! 165         pea     %sp@(SWITCH_STACK_SIZE)
695 /* Save registers, switch to proper stack, con !! 166         clrl    %sp@-
696         swi     r1, r0, TOPHYS(PER_CPU(ENTRY_S !! 167         bsrl    SYMBOL_NAME(do_signal)
697         /* MS: See if already in kernel mode.  !! 168         addql   #8,%sp
698         mfs     r1, rmsr                       !! 169         RESTORE_SWITCH_STACK
699         nop                                    !! 170         addql   #4,%sp
700         andi    r1, r1, MSR_UMS                !! 171         RESTORE_ALL
701         bnei    r1, 1f                         !! 172 
702                                                !! 173 do_delayed_trace:
703 /* Kernel-mode state save. */                  !! 174         bclr    #7,%sp@(PT_SR)          | clear trace bit in SR
704         lwi     r1, r0, TOPHYS(PER_CPU(ENTRY_S !! 175         pea     1                       | send SIGTRAP
705         tophys(r1,r1); /* MS: I have in r1 phy !! 176         movel   %curptr,%sp@-
706         /* save registers */                   !! 177         pea     LSIGTRAP
707 /* MS: Make room on the stack -> activation re !! 178         jbsr    SYMBOL_NAME(send_sig)
708         addik   r1, r1, -PT_SIZE;              !! 179         addql   #8,%sp
709         SAVE_REGS                              !! 180         addql   #4,%sp
710         brid    2f;                            !! 181         jra     5b
711         swi     r1, r1, PT_MODE; /* 0 - user m !! 182 
                                                   >> 183 
                                                   >> 184 #if 0
                                                   >> 185 #if CONFIG_AMIGA
                                                   >> 186 SYMBOL_NAME_LABEL(ami_inthandler)
                                                   >> 187         addql   #1,SYMBOL_NAME(irq_stat)+4      | local_irq_count
                                                   >> 188         SAVE_ALL_INT
                                                   >> 189         GET_CURRENT(%d0)
                                                   >> 190 
                                                   >> 191         bfextu  %sp@(PT_VECTOR){#4,#12},%d0
                                                   >> 192         movel   %d0,%a0
                                                   >> 193         addql   #1,%a0@(SYMBOL_NAME(kstat)+STAT_IRQ-VECOFF(VEC_SPUR))
                                                   >> 194         movel   %a0@(SYMBOL_NAME(autoirq_list)-VECOFF(VEC_SPUR)),%a0
                                                   >> 195 
                                                   >> 196 | amiga vector int handler get the req mask instead of irq vector
                                                   >> 197         lea     CUSTOMBASE,%a1
                                                   >> 198         movew   %a1@(C_INTREQR),%d0
                                                   >> 199         andw    %a1@(C_INTENAR),%d0
                                                   >> 200 
                                                   >> 201 | prepare stack (push frame pointer, dev_id & req mask)
                                                   >> 202         pea     %sp@
                                                   >> 203         movel   %a0@(IRQ_DEVID),%sp@-
                                                   >> 204         movel   %d0,%sp@-
                                                   >> 205         pea     %pc@(SYMBOL_NAME(ret_from_interrupt):w)
                                                   >> 206         jbra    @(IRQ_HANDLER,%a0)@(0)
                                                   >> 207 
                                                   >> 208 ENTRY(nmi_handler)
                                                   >> 209         rte
                                                   >> 210 #endif
                                                   >> 211 #endif
                                                   >> 212 
                                                   >> 213 /*
                                                   >> 214 ** This is the main interrupt handler, responsible for calling process_int()
                                                   >> 215 */
                                                   >> 216 SYMBOL_NAME_LABEL(inthandler)
                                                   >> 217         SAVE_ALL_INT
                                                   >> 218         GET_CURRENT(%d0)
                                                   >> 219         addql   #1,SYMBOL_NAME(irq_stat)+4      | local_irq_count
                                                   >> 220                                         |  put exception # in d0
                                                   >> 221         bfextu %sp@(PT_VECTOR){#4,#10},%d0
                                                   >> 222 
                                                   >> 223         movel   %sp,%sp@-
                                                   >> 224         movel   %d0,%sp@-               |  put vector # on stack
                                                   >> 225 #if defined(MACH_Q40_ONLY) && defined(CONFIG_BLK_DEV_FD)
                                                   >> 226         btstb   #4,0xff000000   | Q40 floppy needs very special treatment ...
                                                   >> 227         jbeq    1f
                                                   >> 228         btstb   #3,0xff000004           
                                                   >> 229         jbeq    1f
                                                   >> 230         jbsr    SYMBOL_NAME(floppy_hardint)
                                                   >> 231         jbra    3f
712 1:                                                232 1:
713 /* User-mode state save. */                    !! 233 #endif          
714  /* MS: get the saved current */               !! 234         jbsr    SYMBOL_NAME(process_int)|  process the IRQ
715         lwi     r1, r0, TOPHYS(PER_CPU(CURRENT !! 235 3:      addql   #8,%sp                  |  pop parameters off stack
716         tophys(r1,r1);                         !! 236 
717         lwi     r1, r1, TS_THREAD_INFO;        !! 237 SYMBOL_NAME_LABEL(ret_from_interrupt)
718         addik   r1, r1, THREAD_SIZE;           !! 238         subql   #1,SYMBOL_NAME(irq_stat)+4      | local_irq_count
719         tophys(r1,r1);                         !! 239         jeq     1f
720         /* save registers */                   << 
721         addik   r1, r1, -PT_SIZE;              << 
722         SAVE_REGS                              << 
723         /* calculate mode */                   << 
724         swi     r0, r1, PT_MODE;               << 
725         lwi     r11, r0, TOPHYS(PER_CPU(ENTRY_ << 
726         swi     r11, r1, PT_R1;                << 
727         clear_ums;                             << 
728 2:                                                240 2:
729         lwi     CURRENT_TASK, r0, TOPHYS(PER_C !! 241         RESTORE_ALL
730         tovirt(r1,r1)                          << 
731         addik   r15, r0, irq_call;             << 
732 irq_call:rtbd   r0, do_IRQ;                    << 
733         addik   r5, r1, 0;                     << 
734                                                << 
735 /* MS: we are in virtual mode */               << 
736 ret_from_irq:                                  << 
737         lwi     r11, r1, PT_MODE;              << 
738         bnei    r11, 2f;                       << 
739                                                << 
740 1:                                                242 1:
741         lwi     r11, CURRENT_TASK, TS_THREAD_I !! 243         moveq   #(~ALLOWINT>>8)&0xff,%d0
742         lwi     r19, r11, TI_FLAGS; /* MS: get !! 244         andb    %sp@(PT_SR),%d0
743         andi    r11, r19, _TIF_NEED_RESCHED;   !! 245         jne     2b
744         beqi    r11, 5f                        !! 246 
745         bralid  r15, schedule;                 !! 247         /* check if we need to do software interrupts */
746         nop; /* delay slot */                  !! 248         tstl    SYMBOL_NAME(irq_stat)   | softirq_pending ?
747         bri     1b                             !! 249         jeq     SYMBOL_NAME(ret_from_exception)
748                                                !! 250         pea     SYMBOL_NAME(ret_from_exception)
749     /* Maybe handle a signal */                !! 251         jra     SYMBOL_NAME(do_softirq)
750 5:      andi    r11, r19, _TIF_SIGPENDING | _T !! 252 
751         beqid   r11, no_intr_resched           !! 253 
752 /* Handle a signal return; Pending signals sho !! 254 /* Handler for uninitialized and spurious interrupts */
753         addik   r5, r1, 0; /* Arg 1: struct pt !! 255 
754         bralid  r15, do_notify_resume;  /* Han !! 256 SYMBOL_NAME_LABEL(bad_interrupt)
755         addi    r6, r0, 0; /* Arg 2: int in_sy !! 257         addql   #1,SYMBOL_NAME(num_spurious)
756         bri     1b                             !! 258         rte
757                                                !! 259 
758 /* Finally, return to user state. */           !! 260 ENTRY(sys_fork)
759 no_intr_resched:                               !! 261         SAVE_SWITCH_STACK       
760     /* Disable interrupts, we are now committe !! 262         pea     %sp@(SWITCH_STACK_SIZE)
761         disable_irq                            !! 263         jbsr    SYMBOL_NAME(m68k_fork)
762         swi     CURRENT_TASK, r0, PER_CPU(CURR !! 264         addql   #4,%sp
763         VM_OFF;                                !! 265         RESTORE_SWITCH_STACK
764         tophys(r1,r1);                         !! 266         rts
765         RESTORE_REGS                           !! 267 
766         addik   r1, r1, PT_SIZE /* MS: Clean u !! 268 ENTRY(sys_clone)
767         lwi     r1, r1, PT_R1 - PT_SIZE;       !! 269         SAVE_SWITCH_STACK
768         bri     6f;                            !! 270         pea     %sp@(SWITCH_STACK_SIZE)
769 /* MS: Return to kernel state. */              !! 271         jbsr    SYMBOL_NAME(m68k_clone)
770 2:                                             !! 272         addql   #4,%sp
771 #ifdef CONFIG_PREEMPTION                       !! 273         RESTORE_SWITCH_STACK
772         lwi     r11, CURRENT_TASK, TS_THREAD_I !! 274         rts
773         /* MS: get preempt_count from thread i !! 275 
774         lwi     r5, r11, TI_PREEMPT_COUNT;     !! 276 ENTRY(sys_vfork)
775         bgti    r5, restore;                   !! 277         SAVE_SWITCH_STACK       
776                                                !! 278         pea     %sp@(SWITCH_STACK_SIZE)
777         lwi     r5, r11, TI_FLAGS;             !! 279         jbsr    SYMBOL_NAME(m68k_vfork)
778         andi    r5, r5, _TIF_NEED_RESCHED;     !! 280         addql   #4,%sp
779         beqi    r5, restore /* if zero jump ov !! 281         RESTORE_SWITCH_STACK
780                                                !! 282         rts
781         /* interrupts are off that's why I am  !! 283 
782         bralid  r15, preempt_schedule_irq      !! 284 ENTRY(sys_sigsuspend)
783         nop                                    !! 285         SAVE_SWITCH_STACK
784 restore:                                       !! 286         pea     %sp@(SWITCH_STACK_SIZE)
785 #endif                                         !! 287         jbsr    SYMBOL_NAME(do_sigsuspend)
786         VM_OFF /* MS: turn off MMU */          !! 288         addql   #4,%sp
787         tophys(r1,r1)                          !! 289         RESTORE_SWITCH_STACK
788         RESTORE_REGS                           !! 290         rts
789         addik   r1, r1, PT_SIZE /* MS: Clean u !! 291 
790         tovirt(r1,r1);                         !! 292 ENTRY(sys_rt_sigsuspend)
791 6:                                             !! 293         SAVE_SWITCH_STACK
792 IRQ_return: /* MS: Make global symbol for debu !! 294         pea     %sp@(SWITCH_STACK_SIZE)
793         rtid    r14, 0                         !! 295         jbsr    SYMBOL_NAME(do_rt_sigsuspend)
794         nop                                    !! 296         addql   #4,%sp
795                                                !! 297         RESTORE_SWITCH_STACK
796 #ifdef CONFIG_MB_MANAGER                       !! 298         rts
797                                                !! 299 
798 #define PT_PID          PT_SIZE                !! 300 ENTRY(sys_sigreturn)
799 #define PT_TLBI         PT_SIZE + 4            !! 301         SAVE_SWITCH_STACK
800 #define PT_ZPR          PT_SIZE + 8            !! 302         jbsr    SYMBOL_NAME(do_sigreturn)
801 #define PT_TLBL0        PT_SIZE + 12           !! 303         RESTORE_SWITCH_STACK
802 #define PT_TLBH0        PT_SIZE + 16           !! 304         rts
803                                                !! 305 
804 C_ENTRY(_xtmr_manager_reset):                  !! 306 ENTRY(sys_rt_sigreturn)
805         lwi     r1, r0, xmb_manager_stackpoint !! 307         SAVE_SWITCH_STACK
806                                                !! 308         jbsr    SYMBOL_NAME(do_rt_sigreturn)
807         /* Restore MSR */                      !! 309         RESTORE_SWITCH_STACK
808         lwi     r2, r1, PT_MSR                 !! 310         rts
809         mts     rmsr, r2                       << 
810         bri     4                              << 
811                                                << 
812         /* restore Special purpose registers * << 
813         lwi     r2, r1, PT_PID                 << 
814         mts     rpid, r2                       << 
815                                                << 
816         lwi     r2, r1, PT_TLBI                << 
817         mts     rtlbx, r2                      << 
818                                                << 
819         lwi     r2, r1, PT_ZPR                 << 
820         mts     rzpr, r2                       << 
821                                                << 
822 #if CONFIG_XILINX_MICROBLAZE0_USE_FPU          << 
823         lwi     r2, r1, PT_FSR                 << 
824         mts     rfsr, r2                       << 
825 #endif                                         << 
826                                                << 
827         /* restore all the tlb's */            << 
828         addik   r3, r0, TOPHYS(tlb_skip)       << 
829         addik   r6, r0, PT_TLBL0               << 
830         addik   r7, r0, PT_TLBH0               << 
831 restore_tlb:                                   << 
832         add     r6, r6, r1                     << 
833         add     r7, r7, r1                     << 
834         lwi     r2, r6, 0                      << 
835         mts     rtlblo, r2                     << 
836         lwi     r2, r7, 0                      << 
837         mts     rtlbhi, r2                     << 
838         addik   r6, r6, 4                      << 
839         addik   r7, r7, 4                      << 
840         bgtid   r3, restore_tlb                << 
841         addik   r3, r3, -1                     << 
842                                                << 
843         lwi     r5, r0, TOPHYS(xmb_manager_dev << 
844         lwi     r8, r0, TOPHYS(xmb_manager_res << 
845         set_vms                                << 
846         /* return from reset need -8 to adjust << 
847         addik   r15, r0, ret_from_reset - 8    << 
848         rtbd    r8, 0                          << 
849         nop                                    << 
850                                                << 
851 ret_from_reset:                                << 
852         set_bip /* Ints masked for state resto << 
853         VM_OFF                                 << 
854         /* MS: Restore all regs */             << 
855         RESTORE_REGS                           << 
856         lwi     r14, r1, PT_R14                << 
857         lwi     r16, r1, PT_PC                 << 
858         addik   r1, r1, PT_SIZE + 36           << 
859         rtbd    r16, 0                         << 
860         nop                                    << 
861                                                   311 
862 /*                                             !! 312 SYMBOL_NAME_LABEL(resume)
863  * Break handler for MB Manager. Enter to _xmb << 
864  * injecting fault in one of the TMR Microblaz << 
865  * FIXME: This break handler supports getting  << 
866  * called from kernel space only.              << 
867  */                                            << 
868 C_ENTRY(_xmb_manager_break):                   << 
869         /*                                        313         /*
870          * Reserve memory in the stack for con !! 314          * Beware - when entering resume, prev (the current task) is
871          * (which includes memory for storing  !! 315          * in a0, next (the new task) is in a1,so don't change these
                                                   >> 316          * registers until their contents are no longer needed.
872          */                                       317          */
873         addik   r1, r1, -PT_SIZE - 36          << 
874         swi     r1, r0, xmb_manager_stackpoint << 
875         SAVE_REGS                              << 
876         swi     r14, r1, PT_R14 /* rewrite sav << 
877         swi     r16, r1, PT_PC; /* PC and r16  << 
878                                                << 
879         lwi     r6, r0, TOPHYS(xmb_manager_bas << 
880         lwi     r7, r0, TOPHYS(xmb_manager_crv << 
881         /*                                     << 
882          * When the break vector gets asserted << 
883          * the break signal must be blocked be << 
884          * break handler, below code configure << 
885          * control register to block break sig << 
886          */                                    << 
887         swi     r7, r6, 0                      << 
888                                                << 
889         /* Save the special purpose registers  << 
890         mfs     r2, rpid                       << 
891         swi     r2, r1, PT_PID                 << 
892                                                << 
893         mfs     r2, rtlbx                      << 
894         swi     r2, r1, PT_TLBI                << 
895                                                   318 
896         mfs     r2, rzpr                       !! 319         /* save sr */
897         swi     r2, r1, PT_ZPR                 !! 320         movew   %sr,%a0@(TASK_THREAD+THREAD_SR)
898                                                << 
899 #if CONFIG_XILINX_MICROBLAZE0_USE_FPU          << 
900         mfs     r2, rfsr                       << 
901         swi     r2, r1, PT_FSR                 << 
902 #endif                                         << 
903         mfs     r2, rmsr                       << 
904         swi     r2, r1, PT_MSR                 << 
905                                                << 
906         /* Save all the tlb's */               << 
907         addik   r3, r0, TOPHYS(tlb_skip)       << 
908         addik   r6, r0, PT_TLBL0               << 
909         addik   r7, r0, PT_TLBH0               << 
910 save_tlb:                                      << 
911         add     r6, r6, r1                     << 
912         add     r7, r7, r1                     << 
913         mfs     r2, rtlblo                     << 
914         swi     r2, r6, 0                      << 
915         mfs     r2, rtlbhi                     << 
916         swi     r2, r7, 0                      << 
917         addik   r6, r6, 4                      << 
918         addik   r7, r7, 4                      << 
919         bgtid   r3, save_tlb                   << 
920         addik   r3, r3, -1                     << 
921                                                << 
922         lwi     r5, r0, TOPHYS(xmb_manager_dev << 
923         lwi     r8, r0, TOPHYS(xmb_manager_cal << 
924         /* return from break need -8 to adjust << 
925         addik   r15, r0, ret_from_break - 8    << 
926         rtbd    r8, 0                          << 
927         nop                                    << 
928                                                << 
929 ret_from_break:                                << 
930         /* flush the d-cache */                << 
931         bralid  r15, mb_flush_dcache           << 
932         nop                                    << 
933                                                << 
934         /*                                     << 
935          * To make sure microblaze i-cache is  << 
936          * invalidate the i-cache.             << 
937          */                                    << 
938         bralid  r15, mb_invalidate_icache      << 
939         nop                                    << 
940                                                   321 
941         set_bip; /* Ints masked for state rest !! 322         /* save fs (sfc,%dfc) (may be pointing to kernel memory) */
942         VM_OFF;                                !! 323         movec   %sfc,%d0
943         mbar    1                              !! 324         movew   %d0,%a0@(TASK_THREAD+THREAD_FS)
944         mbar    2                              !! 325 
945         bri     4                              !! 326         /* save usp */
946         suspend                                !! 327         /* it is better to use a movel here instead of a movew 8*) */
947         nop                                    !! 328         movec   %usp,%d0
                                                   >> 329         movel   %d0,%a0@(TASK_THREAD+THREAD_USP)
                                                   >> 330 
                                                   >> 331         /* save non-scratch registers on stack */
                                                   >> 332         SAVE_SWITCH_STACK
                                                   >> 333 
                                                   >> 334         /* save current kernel stack pointer */
                                                   >> 335         movel   %sp,%a0@(TASK_THREAD+THREAD_KSP)
                                                   >> 336 
                                                   >> 337         /* save floating point context */
                                                   >> 338 #ifndef CONFIG_M68KFPU_EMU_ONLY
                                                   >> 339 #ifdef CONFIG_M68KFPU_EMU
                                                   >> 340         tstl    SYMBOL_NAME(m68k_fputype)
                                                   >> 341         jeq     3f
                                                   >> 342 #endif
                                                   >> 343         fsave   %a0@(TASK_THREAD+THREAD_FPSTATE)
                                                   >> 344 
                                                   >> 345 #if defined(CONFIG_M68060)
                                                   >> 346 #if !defined(CPU_M68060_ONLY)
                                                   >> 347         btst    #3,SYMBOL_NAME(m68k_cputype)+3
                                                   >> 348         beqs    1f
                                                   >> 349 #endif
                                                   >> 350         /* The 060 FPU keeps status in bits 15-8 of the first longword */
                                                   >> 351         tstb    %a0@(TASK_THREAD+THREAD_FPSTATE+2)
                                                   >> 352         jeq     3f
                                                   >> 353 #if !defined(CPU_M68060_ONLY)
                                                   >> 354         jra     2f
                                                   >> 355 #endif
                                                   >> 356 #endif /* CONFIG_M68060 */
                                                   >> 357 #if !defined(CPU_M68060_ONLY)
                                                   >> 358 1:      tstb    %a0@(TASK_THREAD+THREAD_FPSTATE)
                                                   >> 359         jeq     3f
948 #endif                                            360 #endif
                                                   >> 361 2:      fmovemx %fp0-%fp7,%a0@(TASK_THREAD+THREAD_FPREG)
                                                   >> 362         fmoveml %fpcr/%fpsr/%fpiar,%a0@(TASK_THREAD+THREAD_FPCNTL)
                                                   >> 363 3:
                                                   >> 364 #endif  /* CONFIG_M68KFPU_EMU_ONLY */
                                                   >> 365         /* Return previous task in %d1 */
                                                   >> 366         movel   %curptr,%d1
                                                   >> 367 
                                                   >> 368         /* switch to new task (a1 contains new task) */
                                                   >> 369         movel   %a1,%curptr
                                                   >> 370 
                                                   >> 371         /* restore floating point context */
                                                   >> 372 #ifndef CONFIG_M68KFPU_EMU_ONLY
                                                   >> 373 #ifdef CONFIG_M68KFPU_EMU
                                                   >> 374         tstl    SYMBOL_NAME(m68k_fputype)
                                                   >> 375         jeq     4f
                                                   >> 376 #endif
                                                   >> 377 #if defined(CONFIG_M68060)
                                                   >> 378 #if !defined(CPU_M68060_ONLY)
                                                   >> 379         btst    #3,SYMBOL_NAME(m68k_cputype)+3
                                                   >> 380         beqs    1f
                                                   >> 381 #endif
                                                   >> 382         /* The 060 FPU keeps status in bits 15-8 of the first longword */
                                                   >> 383         tstb    %a1@(TASK_THREAD+THREAD_FPSTATE+2)
                                                   >> 384         jeq     3f
                                                   >> 385 #if !defined(CPU_M68060_ONLY)
                                                   >> 386         jra     2f
                                                   >> 387 #endif
                                                   >> 388 #endif /* CONFIG_M68060 */
                                                   >> 389 #if !defined(CPU_M68060_ONLY)
                                                   >> 390 1:      tstb    %a1@(TASK_THREAD+THREAD_FPSTATE)
                                                   >> 391         jeq     3f
                                                   >> 392 #endif  
                                                   >> 393 2:      fmovemx %a1@(TASK_THREAD+THREAD_FPREG),%fp0-%fp7
                                                   >> 394         fmoveml %a1@(TASK_THREAD+THREAD_FPCNTL),%fpcr/%fpsr/%fpiar
                                                   >> 395 3:      frestore %a1@(TASK_THREAD+THREAD_FPSTATE)
                                                   >> 396 4:
                                                   >> 397 #endif  /* CONFIG_M68KFPU_EMU_ONLY */
949                                                   398 
950 /*                                             !! 399         /* restore the kernel stack pointer */
951  * Debug trap for KGDB. Enter to _debug_except !! 400         movel   %a1@(TASK_THREAD+THREAD_KSP),%sp
952  * and call handling function with saved pt_re << 
953  */                                            << 
954 C_ENTRY(_debug_exception):                     << 
955         /* BIP bit is set on entry, no interru << 
956         swi     r1, r0, TOPHYS(PER_CPU(ENTRY_S << 
957                                                << 
958         mfs     r1, rmsr                       << 
959         nop                                    << 
960         andi    r1, r1, MSR_UMS                << 
961         bnei    r1, 1f                         << 
962 /* MS: Kernel-mode state save - kgdb */        << 
963         lwi     r1, r0, TOPHYS(PER_CPU(ENTRY_S << 
964                                                << 
965         /* BIP bit is set on entry, no interru << 
966         addik   r1, r1, CONFIG_KERNEL_BASE_ADD << 
967         SAVE_REGS;                             << 
968         /* save all regs to pt_reg structure * << 
969         swi     r0, r1, PT_R0;  /* R0 must be  << 
970         swi     r14, r1, PT_R14 /* rewrite sav << 
971         swi     r16, r1, PT_PC; /* PC and r16  << 
972         /* save special purpose registers to p << 
973         mfs     r11, rear;                     << 
974         swi     r11, r1, PT_EAR;               << 
975         mfs     r11, resr;                     << 
976         swi     r11, r1, PT_ESR;               << 
977         mfs     r11, rfsr;                     << 
978         swi     r11, r1, PT_FSR;               << 
979                                                << 
980         /* stack pointer is in physical addres << 
981          * by PT_SIZE but we need to get corre << 
982         addik   r11, r1, CONFIG_KERNEL_START - << 
983         swi     r11, r1, PT_R1                 << 
984         /* MS: r31 - current pointer isn't cha << 
985         tovirt(r1,r1)                          << 
986 #ifdef CONFIG_KGDB                             << 
987         addi    r5, r1, 0 /* pass pt_reg addre << 
988         addik   r15, r0, dbtrap_call; /* retur << 
989         rtbd    r0, microblaze_kgdb_break      << 
990         nop;                                   << 
991 #endif                                         << 
992         /* MS: Place handler for brki from ker << 
993          * It is very unlikely that another br << 
994         bri 0                                  << 
995                                                << 
996 /* MS: User-mode state save - gdb */           << 
997 1:      lwi     r1, r0, TOPHYS(PER_CPU(CURRENT << 
998         tophys(r1,r1);                         << 
999         lwi     r1, r1, TS_THREAD_INFO; /* get << 
1000         addik   r1, r1, THREAD_SIZE;    /* ca << 
1001         tophys(r1,r1);                        << 
1002                                               << 
1003         addik   r1, r1, -PT_SIZE; /* Make roo << 
1004         SAVE_REGS;                            << 
1005         swi     r16, r1, PT_PC; /* Save LP */ << 
1006         swi     r0, r1, PT_MODE; /* Was in us << 
1007         lwi     r11, r0, TOPHYS(PER_CPU(ENTRY << 
1008         swi     r11, r1, PT_R1; /* Store user << 
1009         lwi     CURRENT_TASK, r0, TOPHYS(PER_ << 
1010         tovirt(r1,r1)                         << 
1011         set_vms;                              << 
1012         addik   r5, r1, 0;                    << 
1013         addik   r15, r0, dbtrap_call;         << 
1014 dbtrap_call: /* Return point for kernel/user  << 
1015         rtbd    r0, sw_exception              << 
1016         nop                                   << 
1017                                               << 
1018         /* MS: The first instruction for the  << 
1019         set_bip; /* Ints masked for state res << 
1020         lwi     r11, r1, PT_MODE;             << 
1021         bnei    r11, 2f;                      << 
1022 /* MS: Return to user space - gdb */          << 
1023 1:                                            << 
1024         /* Get current task ptr into r11 */   << 
1025         lwi     r11, CURRENT_TASK, TS_THREAD_ << 
1026         lwi     r19, r11, TI_FLAGS;     /* ge << 
1027         andi    r11, r19, _TIF_NEED_RESCHED;  << 
1028         beqi    r11, 5f;                      << 
1029                                               << 
1030         /* Call the scheduler before returnin << 
1031         bralid  r15, schedule;  /* Call sched << 
1032         nop;                            /* de << 
1033         bri     1b                            << 
1034                                               << 
1035         /* Maybe handle a signal */           << 
1036 5:      andi    r11, r19, _TIF_SIGPENDING | _ << 
1037         beqi    r11, 4f;                /* Si << 
1038                                               << 
1039         addik   r5, r1, 0;              /* Ar << 
1040         bralid  r15, do_notify_resume;  /* Ha << 
1041         addi  r6, r0, 0;        /* Arg 2: int << 
1042         bri     1b                            << 
1043                                               << 
1044 /* Finally, return to user state.  */         << 
1045 4:      swi     CURRENT_TASK, r0, PER_CPU(CUR << 
1046         VM_OFF;                               << 
1047         tophys(r1,r1);                        << 
1048         /* MS: Restore all regs */            << 
1049         RESTORE_REGS_RTBD                     << 
1050         addik   r1, r1, PT_SIZE  /* Clean up  << 
1051         lwi     r1, r1, PT_R1 - PT_SIZE; /* R << 
1052 DBTRAP_return_user: /* MS: Make global symbol << 
1053         rtbd    r16, 0; /* MS: Instructions t << 
1054         nop;                                  << 
1055                                               << 
1056 /* MS: Return to kernel state - kgdb */       << 
1057 2:      VM_OFF;                               << 
1058         tophys(r1,r1);                        << 
1059         /* MS: Restore all regs */            << 
1060         RESTORE_REGS_RTBD                     << 
1061         lwi     r14, r1, PT_R14;              << 
1062         lwi     r16, r1, PT_PC;               << 
1063         addik   r1, r1, PT_SIZE; /* MS: Clean << 
1064         tovirt(r1,r1);                        << 
1065 DBTRAP_return_kernel: /* MS: Make global symb << 
1066         rtbd    r16, 0; /* MS: Instructions t << 
1067         nop;                                  << 
1068                                               << 
1069                                               << 
1070 ENTRY(_switch_to)                             << 
1071         /* prepare return value */            << 
1072         addk    r3, r0, CURRENT_TASK          << 
1073                                               << 
1074         /* save registers in cpu_context */   << 
1075         /* use r11 and r12, volatile register << 
1076         /* give start of cpu_context for prev << 
1077         addik   r11, r5, TI_CPU_CONTEXT       << 
1078         swi     r1, r11, CC_R1                << 
1079         swi     r2, r11, CC_R2                << 
1080         /* skip volatile registers.           << 
1081          * they are saved on stack when we ju << 
1082         /* dedicated registers */             << 
1083         swi     r13, r11, CC_R13              << 
1084         swi     r14, r11, CC_R14              << 
1085         swi     r15, r11, CC_R15              << 
1086         swi     r16, r11, CC_R16              << 
1087         swi     r17, r11, CC_R17              << 
1088         swi     r18, r11, CC_R18              << 
1089         /* save non-volatile registers */     << 
1090         swi     r19, r11, CC_R19              << 
1091         swi     r20, r11, CC_R20              << 
1092         swi     r21, r11, CC_R21              << 
1093         swi     r22, r11, CC_R22              << 
1094         swi     r23, r11, CC_R23              << 
1095         swi     r24, r11, CC_R24              << 
1096         swi     r25, r11, CC_R25              << 
1097         swi     r26, r11, CC_R26              << 
1098         swi     r27, r11, CC_R27              << 
1099         swi     r28, r11, CC_R28              << 
1100         swi     r29, r11, CC_R29              << 
1101         swi     r30, r11, CC_R30              << 
1102         /* special purpose registers */       << 
1103         mfs     r12, rmsr                     << 
1104         swi     r12, r11, CC_MSR              << 
1105         mfs     r12, rear                     << 
1106         swi     r12, r11, CC_EAR              << 
1107         mfs     r12, resr                     << 
1108         swi     r12, r11, CC_ESR              << 
1109         mfs     r12, rfsr                     << 
1110         swi     r12, r11, CC_FSR              << 
1111                                               << 
1112         /* update r31, the current-give me po << 
1113         lwi     CURRENT_TASK, r6, TI_TASK     << 
1114         /* stored it to current_save too */   << 
1115         swi     CURRENT_TASK, r0, PER_CPU(CUR << 
1116                                               << 
1117         /* get new process' cpu context and r << 
1118         /* give me start where start context  << 
1119         addik   r11, r6, TI_CPU_CONTEXT       << 
1120                                               << 
1121         /* non-volatile registers */          << 
1122         lwi     r30, r11, CC_R30              << 
1123         lwi     r29, r11, CC_R29              << 
1124         lwi     r28, r11, CC_R28              << 
1125         lwi     r27, r11, CC_R27              << 
1126         lwi     r26, r11, CC_R26              << 
1127         lwi     r25, r11, CC_R25              << 
1128         lwi     r24, r11, CC_R24              << 
1129         lwi     r23, r11, CC_R23              << 
1130         lwi     r22, r11, CC_R22              << 
1131         lwi     r21, r11, CC_R21              << 
1132         lwi     r20, r11, CC_R20              << 
1133         lwi     r19, r11, CC_R19              << 
1134         /* dedicated registers */             << 
1135         lwi     r18, r11, CC_R18              << 
1136         lwi     r17, r11, CC_R17              << 
1137         lwi     r16, r11, CC_R16              << 
1138         lwi     r15, r11, CC_R15              << 
1139         lwi     r14, r11, CC_R14              << 
1140         lwi     r13, r11, CC_R13              << 
1141         /* skip volatile registers */         << 
1142         lwi     r2, r11, CC_R2                << 
1143         lwi     r1, r11, CC_R1                << 
1144                                               << 
1145         /* special purpose registers */       << 
1146         lwi     r12, r11, CC_FSR              << 
1147         mts     rfsr, r12                     << 
1148         lwi     r12, r11, CC_MSR              << 
1149         mts     rmsr, r12                     << 
1150                                               << 
1151         rtsd    r15, 8                        << 
1152         nop                                   << 
1153                                               << 
1154 #ifdef CONFIG_MB_MANAGER                      << 
1155 .global xmb_inject_err                        << 
1156 .section .text                                << 
1157 .align 2                                      << 
1158 .ent xmb_inject_err                           << 
1159 .type xmb_inject_err, @function               << 
1160 xmb_inject_err:                               << 
1161         addik   r1, r1, -PT_SIZE              << 
1162         SAVE_REGS                             << 
1163                                               << 
1164         /* Switch to real mode */             << 
1165         VM_OFF;                               << 
1166         set_bip;                              << 
1167         mbar    1                             << 
1168         mbar    2                             << 
1169         bralid  r15, XMB_INJECT_ERR_OFFSET    << 
1170         nop;                                  << 
1171                                               << 
1172         /* enable virtual mode */             << 
1173         set_vms;                              << 
1174         /* barrier for instructions and data  << 
1175         mbar    1                             << 
1176         mbar    2                             << 
1177         /*                                    << 
1178          * Enable Interrupts, Virtual Protect << 
1179          * initial state for all possible ent << 
1180          */                                   << 
1181         rtbd    r0, 1f                        << 
1182         nop;                                  << 
1183 1:                                            << 
1184         RESTORE_REGS                          << 
1185         addik   r1, r1, PT_SIZE               << 
1186         rtsd    r15, 8;                       << 
1187         nop;                                  << 
1188 .end xmb_inject_err                           << 
1189                                               << 
1190 .section .data                                << 
1191 .global xmb_manager_dev                       << 
1192 .global xmb_manager_baseaddr                  << 
1193 .global xmb_manager_crval                     << 
1194 .global xmb_manager_callback                  << 
1195 .global xmb_manager_reset_callback            << 
1196 .global xmb_manager_stackpointer              << 
1197 .align 4                                      << 
1198 xmb_manager_dev:                              << 
1199         .long 0                               << 
1200 xmb_manager_baseaddr:                         << 
1201         .long 0                               << 
1202 xmb_manager_crval:                            << 
1203         .long 0                               << 
1204 xmb_manager_callback:                         << 
1205         .long 0                               << 
1206 xmb_manager_reset_callback:                   << 
1207         .long 0                               << 
1208 xmb_manager_stackpointer:                     << 
1209         .long 0                               << 
1210                                               << 
1211 /*                                            << 
1212  * When the break vector gets asserted becaus << 
1213  * the break signal must be blocked before ex << 
1214  * break handler, Below api updates the manag << 
1215  * control register and error count callback  << 
1216  * which will be used by the break handler to << 
1217  * break and call the callback function.      << 
1218  */                                           << 
1219 .global xmb_manager_register                  << 
1220 .section .text                                << 
1221 .align 2                                      << 
1222 .ent xmb_manager_register                     << 
1223 .type xmb_manager_register, @function         << 
1224 xmb_manager_register:                         << 
1225         swi     r5, r0, xmb_manager_baseaddr  << 
1226         swi     r6, r0, xmb_manager_crval     << 
1227         swi     r7, r0, xmb_manager_callback  << 
1228         swi     r8, r0, xmb_manager_dev       << 
1229         swi     r9, r0, xmb_manager_reset_cal << 
1230                                               << 
1231         rtsd    r15, 8;                       << 
1232         nop;                                  << 
1233 .end xmb_manager_register                     << 
1234 #endif                                        << 
1235                                               << 
1236 ENTRY(_reset)                                 << 
1237         VM_OFF                                << 
1238         brai    0; /* Jump to reset vector */ << 
1239                                               << 
1240         /* These are compiled and loaded into << 
1241          * copied into place in mach_early_se << 
1242         .section        .init.ivt, "ax"       << 
1243 #if CONFIG_MANUAL_RESET_VECTOR && !defined(CO << 
1244         .org    0x0                           << 
1245         brai    CONFIG_MANUAL_RESET_VECTOR    << 
1246 #elif defined(CONFIG_MB_MANAGER)              << 
1247         .org    0x0                           << 
1248         brai    TOPHYS(_xtmr_manager_reset);  << 
1249 #endif                                        << 
1250         .org    0x8                           << 
1251         brai    TOPHYS(_user_exception); /* s << 
1252         .org    0x10                          << 
1253         brai    TOPHYS(_interrupt);     /* In << 
1254 #ifdef CONFIG_MB_MANAGER                      << 
1255         .org    0x18                          << 
1256         brai    TOPHYS(_xmb_manager_break);   << 
1257 #else                                         << 
1258         .org    0x18                          << 
1259         brai    TOPHYS(_debug_exception);     << 
1260 #endif                                        << 
1261         .org    0x20                          << 
1262         brai    TOPHYS(_hw_exception_handler) << 
1263                                               << 
1264 #ifdef CONFIG_MB_MANAGER                      << 
1265         /*                                    << 
1266          * For TMR Inject API which injects t << 
1267          * be executed from LMB.              << 
1268          * TMR Inject is programmed with addr << 
1269          * when program counter matches with  << 
1270          * be injected. 0x200 is expected to  << 
1271          * offset, hence used for this api.   << 
1272          */                                   << 
1273         .org    XMB_INJECT_ERR_OFFSET         << 
1274 xmb_inject_error:                             << 
1275         nop                                   << 
1276         rtsd    r15, 8                        << 
1277         nop                                   << 
1278 #endif                                        << 
1279                                               << 
1280 .section .rodata,"a"                          << 
1281 #include "syscall_table.S"                    << 
1282                                               << 
1283 syscall_table_size=(.-sys_call_table)         << 
1284                                               << 
1285 type_SYSCALL:                                 << 
1286         .ascii "SYSCALL\0"                    << 
1287 type_IRQ:                                     << 
1288         .ascii "IRQ\0"                        << 
1289 type_IRQ_PREEMPT:                             << 
1290         .ascii "IRQ (PREEMPTED)\0"            << 
1291 type_SYSCALL_PREEMPT:                         << 
1292         .ascii " SYSCALL (PREEMPTED)\0"       << 
1293                                                  401 
1294         /*                                    !! 402         /* restore non-scratch registers */
1295          * Trap decoding for stack unwinder   !! 403         RESTORE_SWITCH_STACK
1296          * Tuples are (start addr, end addr,  << 
1297          * If return address lies on [start a << 
1298          * unwinder displays 'string'         << 
1299          */                                   << 
1300                                                  404 
1301         .align 4                              !! 405         /* restore user stack pointer */
1302 .global microblaze_trap_handlers              !! 406         movel   %a1@(TASK_THREAD+THREAD_USP),%a0
1303 microblaze_trap_handlers:                     !! 407         movel   %a0,%usp
1304         /* Exact matches come first */        !! 408 
1305         .word ret_from_trap; .word ret_from_t !! 409         /* restore fs (sfc,%dfc) */
1306         .word ret_from_irq ; .word ret_from_i !! 410         movew   %a1@(TASK_THREAD+THREAD_FS),%a0
1307         /* Fuzzy matches go here */           !! 411         movec   %a0,%sfc
1308         .word ret_from_irq ; .word no_intr_re !! 412         movec   %a0,%dfc
1309         .word ret_from_trap; .word TRAP_retur !! 413 
1310         /* End of table */                    !! 414         /* restore status register */
1311         .word 0               ; .word 0       !! 415         movew   %a1@(TASK_THREAD+THREAD_SR),%sr
                                                   >> 416 
                                                   >> 417         rts
                                                   >> 418 
                                                   >> 419 .data
                                                   >> 420 ALIGN
                                                   >> 421 SYMBOL_NAME_LABEL(sys_call_table)
                                                   >> 422         .long SYMBOL_NAME(sys_ni_syscall)       /* 0  -  old "setup()" system call*/
                                                   >> 423         .long SYMBOL_NAME(sys_exit)
                                                   >> 424         .long SYMBOL_NAME(sys_fork)
                                                   >> 425         .long SYMBOL_NAME(sys_read)
                                                   >> 426         .long SYMBOL_NAME(sys_write)
                                                   >> 427         .long SYMBOL_NAME(sys_open)             /* 5 */
                                                   >> 428         .long SYMBOL_NAME(sys_close)
                                                   >> 429         .long SYMBOL_NAME(sys_waitpid)
                                                   >> 430         .long SYMBOL_NAME(sys_creat)
                                                   >> 431         .long SYMBOL_NAME(sys_link)
                                                   >> 432         .long SYMBOL_NAME(sys_unlink)           /* 10 */
                                                   >> 433         .long SYMBOL_NAME(sys_execve)
                                                   >> 434         .long SYMBOL_NAME(sys_chdir)
                                                   >> 435         .long SYMBOL_NAME(sys_time)
                                                   >> 436         .long SYMBOL_NAME(sys_mknod)
                                                   >> 437         .long SYMBOL_NAME(sys_chmod)            /* 15 */
                                                   >> 438         .long SYMBOL_NAME(sys_chown16)
                                                   >> 439         .long SYMBOL_NAME(sys_ni_syscall)                               /* old break syscall holder */
                                                   >> 440         .long SYMBOL_NAME(sys_stat)
                                                   >> 441         .long SYMBOL_NAME(sys_lseek)
                                                   >> 442         .long SYMBOL_NAME(sys_getpid)           /* 20 */
                                                   >> 443         .long SYMBOL_NAME(sys_mount)
                                                   >> 444         .long SYMBOL_NAME(sys_oldumount)
                                                   >> 445         .long SYMBOL_NAME(sys_setuid16)
                                                   >> 446         .long SYMBOL_NAME(sys_getuid16)
                                                   >> 447         .long SYMBOL_NAME(sys_stime)            /* 25 */
                                                   >> 448         .long SYMBOL_NAME(sys_ptrace)
                                                   >> 449         .long SYMBOL_NAME(sys_alarm)
                                                   >> 450         .long SYMBOL_NAME(sys_fstat)
                                                   >> 451         .long SYMBOL_NAME(sys_pause)
                                                   >> 452         .long SYMBOL_NAME(sys_utime)            /* 30 */
                                                   >> 453         .long SYMBOL_NAME(sys_ni_syscall)                               /* old stty syscall holder */
                                                   >> 454         .long SYMBOL_NAME(sys_ni_syscall)                               /* old gtty syscall holder */
                                                   >> 455         .long SYMBOL_NAME(sys_access)
                                                   >> 456         .long SYMBOL_NAME(sys_nice)
                                                   >> 457         .long SYMBOL_NAME(sys_ni_syscall)       /* 35 */                /* old ftime syscall holder */
                                                   >> 458         .long SYMBOL_NAME(sys_sync)
                                                   >> 459         .long SYMBOL_NAME(sys_kill)
                                                   >> 460         .long SYMBOL_NAME(sys_rename)
                                                   >> 461         .long SYMBOL_NAME(sys_mkdir)
                                                   >> 462         .long SYMBOL_NAME(sys_rmdir)            /* 40 */
                                                   >> 463         .long SYMBOL_NAME(sys_dup)
                                                   >> 464         .long SYMBOL_NAME(sys_pipe)
                                                   >> 465         .long SYMBOL_NAME(sys_times)
                                                   >> 466         .long SYMBOL_NAME(sys_ni_syscall)                               /* old prof syscall holder */
                                                   >> 467         .long SYMBOL_NAME(sys_brk)              /* 45 */
                                                   >> 468         .long SYMBOL_NAME(sys_setgid16)
                                                   >> 469         .long SYMBOL_NAME(sys_getgid16)
                                                   >> 470         .long SYMBOL_NAME(sys_signal)
                                                   >> 471         .long SYMBOL_NAME(sys_geteuid16)
                                                   >> 472         .long SYMBOL_NAME(sys_getegid16)        /* 50 */
                                                   >> 473         .long SYMBOL_NAME(sys_acct)
                                                   >> 474         .long SYMBOL_NAME(sys_umount)                                   /* recycled never used phys() */
                                                   >> 475         .long SYMBOL_NAME(sys_ni_syscall)                               /* old lock syscall holder */
                                                   >> 476         .long SYMBOL_NAME(sys_ioctl)
                                                   >> 477         .long SYMBOL_NAME(sys_fcntl)            /* 55 */
                                                   >> 478         .long SYMBOL_NAME(sys_ni_syscall)                               /* old mpx syscall holder */
                                                   >> 479         .long SYMBOL_NAME(sys_setpgid)
                                                   >> 480         .long SYMBOL_NAME(sys_ni_syscall)                               /* old ulimit syscall holder */
                                                   >> 481         .long SYMBOL_NAME(sys_ni_syscall)
                                                   >> 482         .long SYMBOL_NAME(sys_umask)            /* 60 */
                                                   >> 483         .long SYMBOL_NAME(sys_chroot)
                                                   >> 484         .long SYMBOL_NAME(sys_ustat)
                                                   >> 485         .long SYMBOL_NAME(sys_dup2)
                                                   >> 486         .long SYMBOL_NAME(sys_getppid)
                                                   >> 487         .long SYMBOL_NAME(sys_getpgrp)          /* 65 */
                                                   >> 488         .long SYMBOL_NAME(sys_setsid)
                                                   >> 489         .long SYMBOL_NAME(sys_sigaction)
                                                   >> 490         .long SYMBOL_NAME(sys_sgetmask)
                                                   >> 491         .long SYMBOL_NAME(sys_ssetmask)
                                                   >> 492         .long SYMBOL_NAME(sys_setreuid16)       /* 70 */
                                                   >> 493         .long SYMBOL_NAME(sys_setregid16)
                                                   >> 494         .long SYMBOL_NAME(sys_sigsuspend)
                                                   >> 495         .long SYMBOL_NAME(sys_sigpending)
                                                   >> 496         .long SYMBOL_NAME(sys_sethostname)
                                                   >> 497         .long SYMBOL_NAME(sys_setrlimit)        /* 75 */
                                                   >> 498         .long SYMBOL_NAME(sys_old_getrlimit)
                                                   >> 499         .long SYMBOL_NAME(sys_getrusage)
                                                   >> 500         .long SYMBOL_NAME(sys_gettimeofday)
                                                   >> 501         .long SYMBOL_NAME(sys_settimeofday)
                                                   >> 502         .long SYMBOL_NAME(sys_getgroups16)      /* 80 */
                                                   >> 503         .long SYMBOL_NAME(sys_setgroups16)
                                                   >> 504         .long SYMBOL_NAME(old_select)
                                                   >> 505         .long SYMBOL_NAME(sys_symlink)
                                                   >> 506         .long SYMBOL_NAME(sys_lstat)
                                                   >> 507         .long SYMBOL_NAME(sys_readlink)         /* 85 */
                                                   >> 508         .long SYMBOL_NAME(sys_uselib)
                                                   >> 509         .long SYMBOL_NAME(sys_swapon)
                                                   >> 510         .long SYMBOL_NAME(sys_reboot)
                                                   >> 511         .long SYMBOL_NAME(old_readdir)
                                                   >> 512         .long SYMBOL_NAME(old_mmap)             /* 90 */
                                                   >> 513         .long SYMBOL_NAME(sys_munmap)
                                                   >> 514         .long SYMBOL_NAME(sys_truncate)
                                                   >> 515         .long SYMBOL_NAME(sys_ftruncate)
                                                   >> 516         .long SYMBOL_NAME(sys_fchmod)
                                                   >> 517         .long SYMBOL_NAME(sys_fchown16)         /* 95 */
                                                   >> 518         .long SYMBOL_NAME(sys_getpriority)
                                                   >> 519         .long SYMBOL_NAME(sys_setpriority)
                                                   >> 520         .long SYMBOL_NAME(sys_ni_syscall)                               /* old profil syscall holder */
                                                   >> 521         .long SYMBOL_NAME(sys_statfs)
                                                   >> 522         .long SYMBOL_NAME(sys_fstatfs)          /* 100 */
                                                   >> 523         .long SYMBOL_NAME(sys_ioperm)
                                                   >> 524         .long SYMBOL_NAME(sys_socketcall)
                                                   >> 525         .long SYMBOL_NAME(sys_syslog)
                                                   >> 526         .long SYMBOL_NAME(sys_setitimer)
                                                   >> 527         .long SYMBOL_NAME(sys_getitimer)        /* 105 */
                                                   >> 528         .long SYMBOL_NAME(sys_newstat)
                                                   >> 529         .long SYMBOL_NAME(sys_newlstat)
                                                   >> 530         .long SYMBOL_NAME(sys_newfstat)
                                                   >> 531         .long SYMBOL_NAME(sys_ni_syscall)
                                                   >> 532         .long SYMBOL_NAME(sys_ni_syscall)       /* iopl for i386 */ /* 110 */
                                                   >> 533         .long SYMBOL_NAME(sys_vhangup)
                                                   >> 534         .long SYMBOL_NAME(sys_ni_syscall)       /* obsolete idle() syscall */
                                                   >> 535         .long SYMBOL_NAME(sys_ni_syscall)       /* vm86old for i386 */
                                                   >> 536         .long SYMBOL_NAME(sys_wait4)
                                                   >> 537         .long SYMBOL_NAME(sys_swapoff)          /* 115 */
                                                   >> 538         .long SYMBOL_NAME(sys_sysinfo)
                                                   >> 539         .long SYMBOL_NAME(sys_ipc)
                                                   >> 540         .long SYMBOL_NAME(sys_fsync)
                                                   >> 541         .long SYMBOL_NAME(sys_sigreturn)
                                                   >> 542         .long SYMBOL_NAME(sys_clone)            /* 120 */
                                                   >> 543         .long SYMBOL_NAME(sys_setdomainname)
                                                   >> 544         .long SYMBOL_NAME(sys_newuname)
                                                   >> 545         .long SYMBOL_NAME(sys_cacheflush)       /* modify_ldt for i386 */
                                                   >> 546         .long SYMBOL_NAME(sys_adjtimex)
                                                   >> 547         .long SYMBOL_NAME(sys_mprotect)         /* 125 */
                                                   >> 548         .long SYMBOL_NAME(sys_sigprocmask)
                                                   >> 549         .long SYMBOL_NAME(sys_create_module)
                                                   >> 550         .long SYMBOL_NAME(sys_init_module)
                                                   >> 551         .long SYMBOL_NAME(sys_delete_module)
                                                   >> 552         .long SYMBOL_NAME(sys_get_kernel_syms)  /* 130 */
                                                   >> 553         .long SYMBOL_NAME(sys_quotactl)
                                                   >> 554         .long SYMBOL_NAME(sys_getpgid)
                                                   >> 555         .long SYMBOL_NAME(sys_fchdir)
                                                   >> 556         .long SYMBOL_NAME(sys_bdflush)
                                                   >> 557         .long SYMBOL_NAME(sys_sysfs)            /* 135 */
                                                   >> 558         .long SYMBOL_NAME(sys_personality)
                                                   >> 559         .long SYMBOL_NAME(sys_ni_syscall)       /* for afs_syscall */
                                                   >> 560         .long SYMBOL_NAME(sys_setfsuid16)
                                                   >> 561         .long SYMBOL_NAME(sys_setfsgid16)
                                                   >> 562         .long SYMBOL_NAME(sys_llseek)           /* 140 */
                                                   >> 563         .long SYMBOL_NAME(sys_getdents)
                                                   >> 564         .long SYMBOL_NAME(sys_select)
                                                   >> 565         .long SYMBOL_NAME(sys_flock)
                                                   >> 566         .long SYMBOL_NAME(sys_msync)
                                                   >> 567         .long SYMBOL_NAME(sys_readv)            /* 145 */
                                                   >> 568         .long SYMBOL_NAME(sys_writev)
                                                   >> 569         .long SYMBOL_NAME(sys_getsid)
                                                   >> 570         .long SYMBOL_NAME(sys_fdatasync)
                                                   >> 571         .long SYMBOL_NAME(sys_sysctl)
                                                   >> 572         .long SYMBOL_NAME(sys_mlock)            /* 150 */
                                                   >> 573         .long SYMBOL_NAME(sys_munlock)
                                                   >> 574         .long SYMBOL_NAME(sys_mlockall)
                                                   >> 575         .long SYMBOL_NAME(sys_munlockall)
                                                   >> 576         .long SYMBOL_NAME(sys_sched_setparam)
                                                   >> 577         .long SYMBOL_NAME(sys_sched_getparam)   /* 155 */
                                                   >> 578         .long SYMBOL_NAME(sys_sched_setscheduler)
                                                   >> 579         .long SYMBOL_NAME(sys_sched_getscheduler)
                                                   >> 580         .long SYMBOL_NAME(sys_sched_yield)
                                                   >> 581         .long SYMBOL_NAME(sys_sched_get_priority_max)
                                                   >> 582         .long SYMBOL_NAME(sys_sched_get_priority_min)  /* 160 */
                                                   >> 583         .long SYMBOL_NAME(sys_sched_rr_get_interval)
                                                   >> 584         .long SYMBOL_NAME(sys_nanosleep)
                                                   >> 585         .long SYMBOL_NAME(sys_mremap)
                                                   >> 586         .long SYMBOL_NAME(sys_setresuid16)
                                                   >> 587         .long SYMBOL_NAME(sys_getresuid16)      /* 165 */
                                                   >> 588         .long SYMBOL_NAME(sys_getpagesize)
                                                   >> 589         .long SYMBOL_NAME(sys_query_module)
                                                   >> 590         .long SYMBOL_NAME(sys_poll)
                                                   >> 591         .long SYMBOL_NAME(sys_nfsservctl)
                                                   >> 592         .long SYMBOL_NAME(sys_setresgid16)      /* 170 */
                                                   >> 593         .long SYMBOL_NAME(sys_getresgid16)
                                                   >> 594         .long SYMBOL_NAME(sys_prctl)
                                                   >> 595         .long SYMBOL_NAME(sys_rt_sigreturn)
                                                   >> 596         .long SYMBOL_NAME(sys_rt_sigaction)
                                                   >> 597         .long SYMBOL_NAME(sys_rt_sigprocmask)   /* 175 */
                                                   >> 598         .long SYMBOL_NAME(sys_rt_sigpending)
                                                   >> 599         .long SYMBOL_NAME(sys_rt_sigtimedwait)
                                                   >> 600         .long SYMBOL_NAME(sys_rt_sigqueueinfo)
                                                   >> 601         .long SYMBOL_NAME(sys_rt_sigsuspend)
                                                   >> 602         .long SYMBOL_NAME(sys_pread)            /* 180 */
                                                   >> 603         .long SYMBOL_NAME(sys_pwrite)
                                                   >> 604         .long SYMBOL_NAME(sys_lchown16);
                                                   >> 605         .long SYMBOL_NAME(sys_getcwd)
                                                   >> 606         .long SYMBOL_NAME(sys_capget)
                                                   >> 607         .long SYMBOL_NAME(sys_capset)           /* 185 */
                                                   >> 608         .long SYMBOL_NAME(sys_sigaltstack)
                                                   >> 609         .long SYMBOL_NAME(sys_sendfile)
                                                   >> 610         .long SYMBOL_NAME(sys_ni_syscall)               /* streams1 */
                                                   >> 611         .long SYMBOL_NAME(sys_ni_syscall)               /* streams2 */
                                                   >> 612         .long SYMBOL_NAME(sys_vfork)            /* 190 */
                                                   >> 613         .long SYMBOL_NAME(sys_getrlimit)
                                                   >> 614         .long SYMBOL_NAME(sys_mmap2)
                                                   >> 615         .long SYMBOL_NAME(sys_truncate64)
                                                   >> 616         .long SYMBOL_NAME(sys_ftruncate64)
                                                   >> 617         .long SYMBOL_NAME(sys_stat64)           /* 195 */
                                                   >> 618         .long SYMBOL_NAME(sys_lstat64)
                                                   >> 619         .long SYMBOL_NAME(sys_fstat64)
                                                   >> 620         .long SYMBOL_NAME(sys_chown)
                                                   >> 621         .long SYMBOL_NAME(sys_getuid)
                                                   >> 622         .long SYMBOL_NAME(sys_getgid)           /* 200 */
                                                   >> 623         .long SYMBOL_NAME(sys_geteuid)
                                                   >> 624         .long SYMBOL_NAME(sys_getegid)
                                                   >> 625         .long SYMBOL_NAME(sys_setreuid)
                                                   >> 626         .long SYMBOL_NAME(sys_setregid)
                                                   >> 627         .long SYMBOL_NAME(sys_getgroups)        /* 205 */
                                                   >> 628         .long SYMBOL_NAME(sys_setgroups)
                                                   >> 629         .long SYMBOL_NAME(sys_fchown)
                                                   >> 630         .long SYMBOL_NAME(sys_setresuid)
                                                   >> 631         .long SYMBOL_NAME(sys_getresuid)
                                                   >> 632         .long SYMBOL_NAME(sys_setresgid)        /* 210 */
                                                   >> 633         .long SYMBOL_NAME(sys_getresgid)
                                                   >> 634         .long SYMBOL_NAME(sys_lchown)
                                                   >> 635         .long SYMBOL_NAME(sys_setuid)
                                                   >> 636         .long SYMBOL_NAME(sys_setgid)
                                                   >> 637         .long SYMBOL_NAME(sys_setfsuid)         /* 215 */
                                                   >> 638         .long SYMBOL_NAME(sys_setfsgid)
                                                   >> 639         .long SYMBOL_NAME(sys_pivot_root)
                                                   >> 640         .long SYMBOL_NAME(sys_ni_syscall)
                                                   >> 641         .long SYMBOL_NAME(sys_ni_syscall)
                                                   >> 642         .long SYMBOL_NAME(sys_getdents64)       /* 220 */
                                                   >> 643         .long SYMBOL_NAME(sys_gettid)
                                                   >> 644         .long SYMBOL_NAME(sys_tkill)
                                                   >> 645         .long SYMBOL_NAME(sys_setxattr)
                                                   >> 646         .long SYMBOL_NAME(sys_lsetxattr)
                                                   >> 647         .long SYMBOL_NAME(sys_fsetxattr)        /* 225 */
                                                   >> 648         .long SYMBOL_NAME(sys_getxattr)
                                                   >> 649         .long SYMBOL_NAME(sys_lgetxattr)
                                                   >> 650         .long SYMBOL_NAME(sys_fgetxattr)
                                                   >> 651         .long SYMBOL_NAME(sys_listxattr)
                                                   >> 652         .long SYMBOL_NAME(sys_llistxattr)       /* 230 */
                                                   >> 653         .long SYMBOL_NAME(sys_flistxattr)
                                                   >> 654         .long SYMBOL_NAME(sys_removexattr)
                                                   >> 655         .long SYMBOL_NAME(sys_lremovexattr)
                                                   >> 656         .long SYMBOL_NAME(sys_fremovexattr)
                                                   >> 657 
                                                   >> 658         .rept NR_syscalls-(.-SYMBOL_NAME(sys_call_table))/4
                                                   >> 659                 .long SYMBOL_NAME(sys_ni_syscall)
                                                   >> 660         .endr
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php