Hallo zusammen,
ich möchte mit Microblaze eine FSL füllen.
Leider sehe ich in fsl.h keine Abfrage der Art bool fsl_full();
Ich kann höchsten ein Paar Parameter setzen. Aber ich weiß nicht genau,
was sie gedeuten. Vielleicht kann mir das jmd erklären.
1 | #define FSL_DEFAULT
|
2 | #define FSL_NONBLOCKING n
|
3 | #define FSL_EXCEPTION e
|
4 | #define FSL_CONTROL c
|
5 | #define FSL_ATOMIC a
|
6 |
|
7 | #define FSL_NONBLOCKING_EXCEPTION ne
|
8 | #define FSL_NONBLOCKING_CONTROL nc
|
9 | #define FSL_NONBLOCKING_ATOMIC na
|
10 | #define FSL_EXCEPTION_CONTROL ec
|
11 | #define FSL_EXCEPTION_ATOMIC ea
|
12 | #define FSL_CONTROL_ATOMIC ca
|
13 |
|
14 | #define FSL_NONBLOCKING_EXCEPTION_CONTROL nec
|
15 | #define FSL_NONBLOCKING_EXCEPTION_ATOMIC nea
|
16 | #define FSL_NONBLOCKING_CONTROL_ATOMIC nca
|
17 | #define FSL_EXCEPTION_CONTROL_ATOMIC eca
|
18 |
|
19 | #define FSL_NONBLOCKING_EXCEPTION_CONTROL_ATOMIC neca
|
20 |
|
21 | #define getfslx(val, id, flags) asm volatile (stringify(flags) "get\t%0,rfsl" stringify(id) : "=d" (val))
|
22 | #define putfslx(val, id, flags) asm volatile (stringify(flags) "put\t%0,rfsl" stringify(id) :: "d" (val))
|
23 |
|
24 | #define tgetfslx(val, id, flags) asm volatile ("t" stringify(flags) "get\t%0,rfsl" stringify(id) : "=d" (val))
|
25 | #define tputfslx(id, flags) asm volatile ("t" stringify(flags) "put\trfsl" stringify(id))
|
26 |
|
27 | #define getdfslx(val, var, flags) asm volatile (stringify(flags) "getd\t%0,%1" : "=d" (val) : "d" (var))
|
28 | #define putdfslx(val, var, flags) asm volatile (stringify(flags) "putd\t%0,%1" :: "d" (val), "d" (var))
|
29 |
|
30 | #define tgetdfslx(val, var, flags) asm volatile ("t" stringify(flags) "getd\t%0,%1" : "=d" (val) : "d" (var))
|
31 | #define tputdfslx(var, flags) asm volatile ("t" stringify(flags) "putd\t%0" :: "d" (var))
|
Ich habe bisher putfslx( val, FSL_DEFAULT) benutzt.
Ich dachte, das wäre das Gegenstück zu NONBLOCKING.
Allerdings hängt sich Microblaze auf, wenn ich FSL_DEFAULT mache und die
FSL dann voll ist. Wieso macht er nicht weiter, sobald die FSL wieder
Platz hat?
Was bedeuten die Parameter ATOMIC und EXCEPTION?
Danke